Updated: May 13, 2019
This is a rather interesting topic. Over the years, Amazon have changed the Kindle file format several times. Their digital books came in a variety of formats, including AZW, then AZW3 and finally KFX. The last one is a complex archive that combines numerous features, including typesetting engine, fonts, multi-page thumbnails, and also DRM. I noticed this starting with Decay, one of my books published in 2017.
Reading some more, I realized KFX seemed to include DRM even for books that are not meant to use DRM, and I found this quite weird, because as an author, I have specifically chosen not to publish my own works with any sort of lock-in encryption. So this got me thinking. Is there a way to actually convert KFX into the old format, or other e-book formats, and use them in Calibre and other readers, the way the older formats allowed? Follow me.
Basic tools, requirements & disclaimer
What you want to do is simple: convert KFX files to other formats - for archiving, backup and publication testing purposes, so you can use them on different e-reader devices. If you try to open a KFX file in a typical e-book reader, you probably won't succeed. For instance, Calibre cannot read this file format natively. The solution is then to convert the file, our task for today.
I spent a good few hours reading about this topic, compiling information, trying to find out all the necessary bits and pieces to get the job done. In the end, I did successfully manage, but it wasn't trivial, and there are still many ifs and buts to the whole thing. So let's start with the tools:
- I tested this on a Linux system (Ubuntu-based).
- Calibre software (apt-get install calibre or dnf install calibre, for instance).
- DeDRM Calibre plugin.
- KFX Input Calibre plugin.
- Your Kindle device serial number.
- KFX book (which includes ALL the files and associated folders for the specific book on your Kindle).
You will need to feel comfortable installing Calibre plugins and working with archives. If you can't do these things easily, you will probably struggle getting the job done here.
The purpose of this guide is not to teach you how to hax0r your way around. The purpose is to allow you to decrypt your own books and use them on your own devices. In fact, the DeDRM plugin listed above does not work with rented or lent books - it only works for the books you have purchased yourself.
There are also numerous technical limitations on how well the tools listed above work, including the version of Kindle software and such. In my test, I did not encounter any such problems. But please take this into consideration as you read on.
Before you start ... download non-KFX books
When you purchase a Kindle book, and then go to your Kindle library, you can choose different delivery methods. You can send books directly to a Kindle device or reader, and you can also transfer them via USB. This will effectively download the book to your local computer, which you can then copy to the relevant device. For the time being, books downloaded via USB come in the non-encrypted AZW format, but this may change. So this is your first and best options, before doing any fancy conversions! If the book is in your Kindle library, then you are all set.
Calibre plugins setup
After you install and start Calibre, you will need to install the two plugins (Calibre > Preferences > Plugins). KFX Input is available in the list of plugins, although you can also download it manually (see the linked forum thread at the beginning of the page). DeDRM is available from GitHub. Both plugins come as ZIP files. The DeDRM plugin ZIP contains more than just the plugin itself - but it also has what we need, the Calibre plugin.
To install KFX Input, click on Get new plugins, select, install, restart Calibre.
To install DeDRM, download the zip file from GitHub, extract it. Next, in Calibre, click on 'Load plugin from file' in the plugins window, navigate to the Calibre sub-folder in the extracted archive and then select the plugin zip. If you have chosen the "wrong" zip (such as the external zip archive), you will see the It does not contain a top level __init__.py file error. Once you've installed this plugin too, restart Calibre.
Your next step is to configure the DeDRM plugin. Open the plugins list, search for DeDRM in the list. Double-click on the plugin, and it will open the customization window. You must configure the plugin, otherwise it will not work. And this is probably the most complex step. Because not everyone has a Kindle device, and this is where it gets complex. There are various technical limitations on different types of devices, like Kindle for Android or Kindle for Mac.
I selected eInk Kindle books - please note I own a Kindle device, and I connected it via USB to my Linux machine, and then copied my Decay book over ( all Decay* titled files, KFX plus folder). When you select this option in the DeDRM customization screen, you need to add a serial number for your Kindle device. It's a 16-digit string composed of numbers and digits (no spaces).
Add KFX book to Calibre
The next step is to add your KFX book to Calibre. If you have already added it to Calibre, remove it and then add it fresh. DeDRM runs on first import only. If you've configured everything correctly, DeDRM will run now. This can take a few seconds.
While this was happening, in the background, DeDRM configured WINE for Linux, probably so it could install various Windows-based tools it needs to create decryption keys. There's no need for you to do anything manually, but you should be aware of this, especially since it creates a new WINE configuration directly in your home directory, and not as a hidden object (no dot prefix), so this may pollute your home - you will suddenly see drive_c and various WINE reg files there.
And then, it was done. The book was imported. I noticed the cover image was black & white rather than color, but that's easily solvable. I opened the book in the Calibre ebook reader, to verify that I indeed the DRM component was removed.
Convert to other formats
The next step is to convert the book using KFX Input. This is an optional step, but if you want to have your book in AZW3 format, or maybe EPUB or alike, then you can use this plugin. This can be quite useful if you have multiple ebook devices, or want to keep a backup of your own files - although they should all be available in your Kindle library, but still.
I then opened the file in the Calibre ebook reader, to make sure everything is dandy:
And that's it. We're done. Happy times.
In case things didn't work as they should, then you will see various errors, apart from the DeDRM plugin ZIP error we've already discussed. First, if you try to open a KFX file in Calibre without the use of the DeDRM plugin, you won't be able to do so. Moreover, if you try to use KFX Input before DeDRM has run, you will not be able to convert the file, even if you did select the option to ignore errors during the conversion process.
Hopefully, this guide was useful. I have never really needed the ability to open any KFX file in Calibre before, because I'm happy using and reading them on my Kindle. But when it comes to my own books, the books I've written myself and then published WITHOUT DRM, then I expect to actually be able to work with these files, including any pre- and post-publication processing required - after all, this allows me to test how the digital books render on different devices, and make sure that my readers get the best experience.
This isn't a trivial tutorial - it uses Linux (which may already be too much), requires two Calibre plugins, and you need some tweaking to get things working. But in the end, we did succeed. For people who can't be bothered, my advice is to grab the files from your Kindle library using the USB option, this way you won't need to worry about the KFX conversion. Alternatively, this article outlines the steps you need to get the job done. See you out there, and enjoy your books!