Catching up with calibre
Saying that calibre is ebook-management software undersells the application by a fair margin. Calibre is an open-source Swiss Army knife for ebooks that can be used for everything from creating ebooks, converting ebooks from obscure formats to modern formats like EPUB, to serving up an ebook library over the web. The most recent major release, calibre 8.0, brings a better text-to-speech engine, a tool for creating audio overlays when authoring ebooks, support for profiles in the ebook viewer, and more.
Calibre development started in 2006, when creator Kovid Goyal bought a Sony E Ink reader, the Portable Reader System (PRS) 500. It was one of the first e-readers, and, not surprisingly, did not have support for Linux; so Goyal set about reverse engineering its USB protocol to be able to manage the device from Linux and called the program libprs500. Along the way, he also created tools to convert existing ebook formats to LRF, one of the formats supported by the PRS-500, and created a graphical interface for the project.
The name "calibre" (all lower case) was suggested by Goyal's wife,
Krittika, with libre "indicating that calibre is a free and open
source product, modifiable by all
". Goyal pronounces the name
"ca-luh-ber" rather than, as one might expect, "ca-lee-bray" a fact I
learned while writing this article and after more than a decade of
pronouncing it incorrectly. Fast-forward to 2025, and calibre
has evolved to have comprehensive support for a wide variety of
e-readers; its site claims "almost every single e-reader
", and
dozens of file types.
Calibre is primarily written in Python and is released under the GPLv3, though some components included with calibre are under other open-source licenses. Its development and bug tracking are hosted on Launchpad, but the project does use GitHub for pull requests. Calibre has a modular design, and much of its functionality comes from plugins. For example, its conversion features and device interfaces are implemented via plugins.
Goyal is by far the most active contributor to calibre; in the 15 months or so since the release of calibre 7.0.0, he has made more than twice as many commits (1,479) to the project than the 67 other contributors put together. The project's get involved page provides links to documentation on contributing plugins, translations, and patches. There is no documentation or information about project governance, but it seems safe to say Goyal is the lead maintainer of the project with primary, if not sole, decision-making power over the project. As a side note, Goyal is also the creator and maintainer of the kitty terminal emulator.
Calibre phone home
The project does not supply distribution-specific packages, Flatpak, or
Snap versions. Note that there is a Flatpak for
Calibre on Flathub, but it is not packaged by the
project. Instead, the calibre web site directs Linux users to install
the application directly by using wget to download an
installer script and pipe it to sh. It warns that users
should not depend on distribution-provided packages "as those are
often buggy/outdated
". It is fair to say that
distribution-supplied packages will be outdated, for varying values of
outdated, compared to getting calibre directly from the
project. Calibre development moves quickly—there is a new release roughly
every two weeks. There has been one major version release and four
minor version releases so far this year. There were 21 minor releases
last year, roughly one every two weeks. Major releases are spaced out
about a year apart. Having the most recent calibre version can be
important for users who depend on its support for hardware e-readers,
since the vendors tend to ship updates to the various models that may
break calibre's compatibility at any time. However, I've used the
packages supplied by Debian, Fedora, Ubuntu, and other distributions
for the many years that I've used calibre and have not found them to
be any buggier than the upstream version.
One thing that users may wish to be aware of about the upstream version of calibre, though, is that it phones home to report usage statistics. The statistics page explains that every calibre installation has a unique ID that is randomly generated and unchanging, even if the user uninstalls and reinstalls calibre. That is stored under ~/.config/calibre in the global.py.json configuration file as the "installation_uuid". If that line is deleted, calibre will generate a new UUID the next time it is started. If it is replaced, say, with "stop-tracking-me-already-ok" then it is preserved, but it's unclear how that might impact the project's statistics collection. The phone home happens when calibre checks for updates. That code is disabled in most Linux distribution packages as a privacy protection, and since updates will come from the distribution rather than directly from the project. The statistics collection seems harmless enough, as telemetry goes, but it should be an opt-in feature—or at least the user should be notified and given the option to opt-out. It is, of course, possible to use OpenSnitch, which LWN covered last September, to curb unwanted phone home behavior if one is using the upstream version of the software.
Calibre is a multi-platform application available for Linux, macOS, and Windows. This is a boon for readers who may want to manage their ebooks on non-Linux systems or those who support family members who have not yet been persuaded to use Linux. The good news is that calibre's interface is more or less identical across operating systems. The bad news is that calibre's interface is more or less identical across operating systems. Calibre has a bespoke graphical user interface that does not match user-interface conventions on any operating system. It also may be a bit overwhelming for some folks, and its default layout could be accurately described as "busy". There is a lot to take in the first time someone launches calibre.
Its interface does not have a traditional menu bar with File, Edit, Tools, Help, entries. Instead, it has a toolbar with icons and text for some of calibre's operations that are, presumably, most frequently used. For example, it has "Add books", "Edit metadata", "Convert books", and so forth. Also prominently displayed in the middle is a "donate" button to contribute money toward calibre's development. The toolbar is context-dependent: if no e-reader device is plugged in, it displays a different set of actions than if an e-reader is plugged in. Users can choose which actions are displayed for each toolbar. Conspicuously absent from the toolbar options is an "exit" or "quit" button of any kind. It simply isn't an available option to add at all. Ctrl-q will do the trick, or select "quit" from the system tray menu if the system tray icon is enabled. Users should be sure to disconnect their e-reader before quitting.
Calibre's interface and behavior can be extensively customized to fit anyone's use case and preferences. Almost everything in calibre is customizable; the icon and color schemes, what metadata to show about books, how book covers are displayed, where to look up book author information, and much more. It takes some time to become familiar with where things are located in the preferences, and it can be something of a trip down the rabbit hole when one starts exploring. However, tinkering with its settings can be worth the time for those who spend a lot of time managing ebooks.
The good thing about calibre's non-standard interface is that it hasn't changed a great deal over the years. It looks much the same today as it did when LWN covered the calibre 2.0 release in 2014. Once a user has everything adjusted to their liking, they need not worry that a redesign is going to undo all their hard work. A consistent interface, even if its design is not perfect, is a rare and wonderful thing in an application these days.
Using calibre
After acclimating to calibre, it is mostly straightforward to use. Adding books to calibre's library is simple. Books can be imported one a time, or in bulk if the user has a directory with multiple ebooks, or an archive (e.g., zip, rar) file with a collection of ebooks. Calibre can be set to automatically convert books to a preferred output format when they are imported, rather than doing it manually. If a person is particular about organizing their ebooks, calibre has support for managing multiple libraries. For instance, a person might want to have a collection of tech ebooks as one library, and all of their leisure reading in another library and toggle between them as needed.
Separate libraries are also useful if one is managing multiple e-reader devices with calibre. In my experience, calibre's e-reader support is quite good. I have not had any problems managing an assortment of Kindles and Kobo devices since I started using a Kindle not long after the first model was released. To be fair, Kindles and Kobos are common enough devices that they probably receive more thorough testing than less popular e-readers.
For tricky devices, calibre 8 has added support for treating a folder as a USB mass-storage device. This may be useful for transferring books to devices that don't show up as supported e-reader devices, but can be mounted as mass storage devices in Linux.
Supplying ebooks to use with calibre is, appropriately, an exercise
left to the reader. It does supply an integrated search for ebooks
that will try to find books by author or title across a wide variety
of vendors and sites like the Internet
Archive and Project
Gutenberg. Oddly, calibre does not include Standard Ebooks, which provides
a selection of carefully
formatted public-domain ebooks, in its sources for
ebooks. Note that Standard Ebooks warns
against using calibre to transfer its Kobo EPUB (KEPUB) files, as
calibre also applies its own formatting during transfer which produces "strange
results
".
Calibre, of course, can't open and work with books that are encumbered with DRM. Unfortunately, there are not many good options for acquiring current titles without DRM, though some publishers, like Baen, do sell all of their books without DRM, but they are in the minority. Kobo, for example, does sell some books without DRM, but it does not provide an easy way to search its store only for DRM-free titles. The Defective by Design guide has a number of good options.
It is possible to strip DRM from some formats using calibre plugins and third-party tools, but it's a fiddly process and an arms race between vendors and those creating DRM-removal tools. For many years, one could download ebooks purchased through Amazon and remove the Kindle DRM rather easily using a calibre plugin. However, Amazon closed that door in February.
Another way to find reading material is to use calibre's news download features to grab articles via RSS and convert them to an ebook format. Calibre ships with hundreds of recipes for news sources, and it's possible to create custom news sources as well. This can be as simple as adding an RSS feed with the "Add custom news source" tool, or require creating a custom recipe using the BasicNewsRecipe API. The calibre forum on the Mobileread site has a dedicated thread for discussing and sharing news recipes that may be helpful for users looking for tips. Note that calibre doesn't quite know how to handle an RSS feed that supplies EPUBs directly, such as LWN's EPUB feed for subscribers. Calibre does supply recipes for LWN of its own.
Conversion
Today, EPUB is the dominant ebook format outside of Amazon's walled garden. It has not always been so, however, and many of us have a variety of ebooks or documents that need converting to read on more modern e-readers. No doubt there are formats that calibre does not support, but I haven't found one of them yet. The list of formats includes 30 input formats and 20 output formats.
Calibre's conversions may require some tweaking to get desired results, depending on the formats. For example, it will convert comic book archive files to EPUB, PDF, and other formats, but the default output leaves much to be desired. The comic book archive files are, basically, just a compressed collection of image files with a cbz, cbr, or similar extension. It seems reasonable to think that converting a comic book archive to PDF, for example, would result in a PDF with color images. The default, though, is to convert these to black and white—no doubt in anticipation of reading the file on a grayscale screen. Some spelunking in the calibre preferences turns up an option to turn off the conversion of images to black and white. (Go to Preferences > Input options > Comic input and uncheck "Disable conversion of images to black and white" and click Apply.)
The defaults seem much better for converting formats like Mobipocket (.mobi) and even PDF, though PDF conversion can be hit-and-miss. Converting a PDF that was simply scanned from a book worked fine—calibre just created an EPUB with an image for each page. Trying to convert an ebook PDF that was created using Adobe InDesign, however, generated some awful formatting in the EPUB. It would probably be unfair to judge calibre harshly on PDF conversions, though—it's a complicated format that is often used for complex layouts. To date, I've not found any tools that handle converting PDFs with complex formatting well.
Calibre does have a feature for converting PDFs, though, that can improve output somewhat. The PDF conversion engine, introduced in 7.2.0, supports automatic detection and removal of headers and footers from PDFs. Headers and footers often cause problems when trying to convert from PDF because they end up being treated like part of the regular body text.
Reading
With all of its other features, it would be odd if calibre didn't support reading ebooks. Of course, it does provide an internal viewer with an extensive set of features and settings for customizing the reading experience. Calling calibre's viewer an ebook viewer undersells its capabilities. It actually handles a much wider selection of formats, including Markdown, Microsoft Word, OpenDocument Format, and others. This may not be immediately obvious because calibre's default settings only enable using the internal viewer for more common ebook formats. Users can go to the Behavior tab in calibre's preferences to choose which formats the viewer should handle.
Like calibre itself, the ebook viewer is in need of configuration before it's as usable as it could be. By default, the viewer does not display any controls at all. Right-clicking anywhere on the viewer page will bring up a drop-down menu with buttons for ebook navigation, accessing the viewer's preferences menu, and more. Again, spending some time with calibre's preferences can yield good results. There are some non-obvious features, such as content auto-scrolling, that users could miss entirely unless they take the time to comb through the preferences.
Calibre has four preset color schemes for reading books, two dark-mode themes and two light-mode themes. Naturally, it's possible to create one's own color scheme as well. If that is not enough, it also accepts custom CSS styling to control the look and feel of the book's text. In calibre 7.6, the application gained support for viewer profiles, so users can associate a set of customizations with a profile name and save them. This can be useful if, for example, one wants a separate set of customizations for reading on a laptop screen versus when a system is hooked up to an external monitor.
One of the pleasures of reading print books is the ability to highlight phrases, add Post-it notes to important pages, and otherwise mark up the book with one's thoughts while reading. While calibre can't capture the tactile experience of paper books, its ebook reader does let the reader highlight text with contextual notes. These can be exported in plain text, Markdown format, or a calibre-specific JSON format. Calibre also has an annotations browser for viewing one's highlights, which can display highlights from one book or the reader's entire library. This would have been an amazingly helpful tool in my college days.
Calibre 7.18 added the Piper text-to-speech engine for reading ebooks aloud. This is a locally run model, so no content is sent to "the cloud" when using it. In my limited testing, I found the artificial voices to be tolerable, but still in the uncanny valley of sounding not quite human. The voices I tried would read a few sentences almost perfectly, and then mispronounce a word or have an odd cadence that would remind me that it was non-human. However, the speech was perfectly understandable. It might be a great option for people who prefer audio to text, for whatever reason, but don't have that content as an audio book.
According to the release notes, calibre 8 also has "greatly
improved
" performance for the ebook viewer—particularly when
opening an ebook for the first time. It does, in fact, seem to be much
improved in this area.
Editing and authoring
In addition to automated conversion of ebook formats, calibre also has tools for manual editing and authoring of ebooks. I've found this useful, for example, to split up ebooks into multiple parts. Some ebooks include multiple novels from a series, but I don't necessarily want to read three or more books from a series in a row. Generally, I prefer to switch between genre fiction, literary fiction, and non-fiction books to maintain variety in my reading habits. I could read a single novel from an ebook and return to it later, but I prefer to finish an ebook when I finish the actual book. It's entirely possible this is an oddball personal quirk, but isn't open source all about letting users cater to their personal quirks? At any rate, calibre's ebook editor makes it relatively easy to make these edits to ebooks.
While calibre supports managing, converting, and reading ebooks in a wide range of formats, its ebook editor only supports EPUB, KEPUB, and Amazon's AZW3 format. To edit any other format users would need to convert to a supported format and, if needed, back again after editing. Oddly enough, the ebook editor actually has a much more standard user interface with a traditional toolbar and three-pane layout that resembles many of the IDEs/code editors one might use.
In calibre 7.21, the editor also gained a feature for adding an audio overlay to an EPUB using text-to-speech features. Basically, users can generate audio using Piper and ship that with the EPUB for use with EPUB reading systems. This can be quite slow for a full-length book: on my system, the estimated time to generate that much audio from text is more than eight hours. For an example of an EPUB with audio overlay, see the epub3-samples repository on GitHub and download moby-dick-mo.epub.
Content server
Users do not need a dedicated e-reader to take advantage of calibre—a web browser will do just fine. Calibre comes with its own content server, which can be run from the desktop application or set up as a systemd service to run as a headless server. Once enabled, the content server provides a web-based interface to its ebook library and allows users to download books from the library or read them directly in their browser. It is a pared-down interface that only provides basic reader features—for example, users cannot convert the format of ebooks via the web interface or manage the library beyond uploading content.
The default configuration is wide open: anyone that can reach port 8080 on the system running the content server can access the entire library. It is possible to lock this down by setting up user accounts and requiring a username and password to access the library. Some folks even run a calibre service on public-facing hosts for easy access to their library from any device, wherever they go.
Calibre is an important tool for the Linux desktop. It makes it possible to manage an ebook library and e-readers without the need for proprietary operating systems or software. There are no other open-source applications, and quite possibly no proprietary ones either, of similar function that even come close to its feature set and breadth of device and format support. Calibre has its flaws, but they're small compared to its usefulness.
