Kepubify converts EPUBs to Kobo EPUBs.
Website Download Documentation Web Version pkg.go.dev
Kepubify is standalone (it also works as a library or a webapp), converts most books in a fraction of a second (40-80x faster than Calibre), handles malformed HTML/XHTML without causing further issues, has multiple optional conversion options (punctuation smartening, custom CSS, text replacement, and more), has a full test suite, is interoperable with other applications, and is safe to use with untrusted books.
Two additional standalone utilities are included with kepubify. covergen pre-generates cover images to speed up library browsing on Kobo eReaders while providing higher-quality resizing. seriesmeta scans for EPUBs and KEPUBs, and updates the Kobo database with the Calibre or EPUB3 series metadata.
See the releases page for pre-built binaries for Windows, Linux, and macOS. See the website for more documentation, pre-built binaries for Windows, Linux, and macOS, and a web version.
Kepubify requires Go 1.16 or later. To install kepubify directly, run go install github.com/pgaskin/kepubify@latest. To build from source, clone this repository, and run go build ./cmd/kepubify.
On Go 1.17 or later, additional optimizations are automatically used to significantly improve kepubify's performance by preventing unchanged files from being re-compressed. To use a backported version of these optimizations on Go 1.16, add the option -tags zip117 to the build/install command. If you are using kepubify as a library in another application with -tags zip117 enabled on Go 1.16, it must also use the backported package when passing a *zip.Reader to (*kepub.Converter).Transform.
To build seriesmeta, a C compiler must be installed and CGO must be enabled.
Note that kepubify uses a custom fork of golang.org/x/net/html. This fork provides additional options used by kepubify to allow reading malformed HTML/XHTML and to produce polyglot HTML/XHTML output for maximum compatibility. Previously, kepubify replaced it using a replace directive in go.mod, but since the fork is now a standalone package, this is not necessary anymore, and will no longer cause conflicts if used as a dependency in applications requiring golang.org/x/net/html directly.
This repository contains multiple main branches with code used by kepubify.
| Branch | Description | Status |
|---|---|---|
| master | Kepubify, seriesmeta, and covergen (this branch). | |
| gh-pages | Kepubify website and JS/WASM library. | |
| forks/html | Fork of golang.org/x/net/html with additional features and modifications required by kepubify. | |
| forks/go116-zip.go117 | Fork of archive/zip from Go 1.17 backported to Go 1.16 for performance improvements. |