Self-hosted service
booktype/Booktype avatar
booktype/Booktype

Booktype turns one HTML source into a print book and an ebook

Booktype is a free, open source platform that produces beautiful, engaging books formatted for print, Amazon, iBooks and almost any ereader within minutes.

962 stars196 forksJavaScriptAGPL-3.0

At a glance

What is it?
Booktype is a Django application for producing books, and the shape of it is worth understanding before the features. You import a DOCX or an EPUB, it converts that into single source HTML for editing and proofreading on the web, and it uses CSS Paged Media to produce the print and ebook outputs from that same source, which is what removes the usual round trip between a manuscript and a layout file.
Who is it for?
Booktype suits a publisher, a press or a team of authors who have to produce the same book in several formats and who are currently maintaining that by hand in a word processor and a layout tool. It is a poor fit if you want a single output format, because the whole architecture is about a single source feeding many, and it is a poor fit if you cannot accept an AGPL licensed platform inside your workflow.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 29 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One source, and the formats it feeds

The description is that Booktype produces beautiful, engaging books formatted for print, Amazon, iBooks and almost any ereader within minutes, and the README explains the mechanism rather than the marketing. It imports DOCX or EPUB files, converts them into single source HTML for online editing and proofreading, and uses CSS Paged Media to produce good looking output for print, the open web and almost any ebook reader, in seconds. So the pipeline is import, edit, export, with the HTML as the pivot rather than the DOCX. That is the difference from a document conversion tool, and it is also the reason the application is a web application rather than a desktop one, because the editing and proofreading happen in a browser where several people can be in the same book at once. The stated goal is to make it easier and quicker for authors, companies and organisations to edit and publish books, and to support collaborative, agile production across time zones and borders.

CSS Paged Media is what makes one source work twice

The detail that makes the whole approach work is CSS Paged Media, and it is worth understanding why. A word processor document and a paginated book are different models. A word processor is a flow of paragraphs that the reader scrolls, while a book is a sequence of pages with running heads, page numbers, footnotes, a table of contents and figures anchored to the text. The usual workflow is to write in one and lay out in the other, and the handover between them is where the errors live. Here the manuscript is already HTML, the reading view in the browser is that HTML, and the paginated output is produced by asking the browser to lay the same HTML out in pages. One source, two renderings, and the proofreading a team does in the browser is proofreading the same content that goes to print. The cost of that approach is that the layout has to be expressed in CSS rather than in the assumptions of a word processor, which is a real difference in what an author can expect.

Collaboration is the reason it is a server application

The README says Booktype facilitates collaborative, agile production across time zones and borders, and the feature set follows from that. The interface is a web application, so an editor in one country and an author in another can work on the same book, and the proofreading happens on screen rather than in a document that has to be sent back and forth. The application is built on the Django web framework and many Python libraries, with the requirements listed in the repository, and the JavaScript in the tree is the browser side of the editing experience. One thing the project is explicit about is that the user interface is being translated into many languages by a community of contributors, through Transifex, and the README asks for help with development or translation. For a platform used by editorial teams across borders, a translated interface is a functional requirement rather than a nicety, and it is rare to see a project treat it as part of the core.

Two installation shapes, and one is a separate repository

The installation instructions point at the Booktype user manual for GNU/Linux and OS X, and separately, files for installation using Docker live in the `booktype-docker` repository. That split is a design decision worth noting, because it keeps the main repository free of container orchestration and lets the container configuration move at its own pace. The main repository is a conventional Python application, with a `setup.py`, a `requirements/` directory, a `lib/` directory holding the code, `scripts/`, `tools/` and `tests/`, and it also carries an `INSTALL.md`, a `VERSION.txt`, a `CHANGES.txt` and an `AUTHORS.txt`. The `setup.py` is the clearest description of the package shape. It finds packages under `lib` and points distutils there, includes the text and reStructuredText files as package data, installs a `scripts/createbooktype` command, and declares only three runtime requirements, setuptools, simplejson and django.

Testing is pytest with the Django plugin

The testing section is short and names the stack exactly. Booktype uses the pytest framework with the pytest-django plugin, which the documentation says makes the testing process easier and also provides the ability to run ready-made Django unittest tests, so an existing Django test suite can be dropped in without rewriting it. The procedure is four steps: open a terminal and activate the virtual environment, noting that Booktype must be installed, change to the instance root, which is the folder containing `manage.py` and `pytest.ini`, and run the pytest command. Coverage is a flag away:

bash
py.test --cov-report term-missing --cov=path/to/Booktype

The `pytest.ini` and `manage.py` sitting together in the instance root is the older Django layout, where the project configuration lives in one place and the application code in another, and the repository structure follows that convention with `lib/` as the source root. It is a layout that dates the project, and it is also the layout a Django developer of a certain vintage will recognise immediately.

The packaging metadata describes a project at an awkward age

The `setup.py` is a small artefact and it is unusually revealing. The version is 2.4.0, the author is Aleksandar Erkalovic, and the classifiers list the licence as the GNU General Public License while the `license` field says AGPL, and the development status is declared as `Development Status :: 3 - Alpha`. The long description is assembled by concatenating three files, the readme, the change history and the contributors list, which is a neat trick for keeping the PyPI page complete without a separate file. The keyword is collaborative book writing sprint, which tells you the original model of the project, a team writing a book together over a short period, rather than a general publishing house. And the release history in the repository metadata tells the rest of the story, with v2.2.0 in March 2017, v2.3.0 in November 2017 and then a long gap before v2.4.0 in November 2025, and the last push to the repository on 2026-09-24. So the project is alive again, and the version numbers and the alpha classifier both say that it is not finished.

Contributing means signing something, and the licence is AGPL

The contribution process is spelled out in six steps, and the sixth is the one that catches newcomers. You fork the repository, clone your fork, create a local branch, run the tests to make sure your contribution works, open a pull request with details of the change, and then sign and return the contributor agreement paperwork, either the individual or the entity version for a company, a university or another organisation. The documentation is clear about what that paperwork does, it gives the project the right to use your work in Booktype, and it makes it clear that you retain ownership of the copyright in your contribution. The repository is licensed under the GNU AGPL, with the licence text in `LICENSE.txt`. For a publishing tool, the AGPL is a significant choice rather than a formality, since it is the copyleft licence that reaches network use, and a team considering it for commercial publishing will want to read that file before they deploy it. The support and development forums, the issue tracker and the developer documentation are all linked from the readme, and the project is supported by SourceFabric.

Editorial conclusion

Booktype suits a publisher, a press or a team of authors who have to produce the same book in several formats and who are currently maintaining that by hand in a word processor and a layout tool. It is a poor fit if you want a single output format, because the whole architecture is about a single source feeding many, and it is a poor fit if you cannot accept an AGPL licensed platform inside your workflow. Before you install it, check three things: which input format your authors actually write in, since the import path starts from DOCX or EPUB, whether the editors will work in a browser rather than in their word processor, and the state of the project, since the release list jumps from v2.3.0 in 2017 to v2.4.0 in November 2025 while the last push to the repository was on 2026-09-24 and the package still declares itself as an alpha.

Frequently asked questions

What is Booktype and how does it produce books?

It is a free, open source Django platform for editing and publishing books. It imports DOCX or EPUB files, converts them into single source HTML for online editing and proofreading, and uses CSS Paged Media to produce output for print, the open web and ebook readers such as iBooks.

How is Booktype installed?

The installation instructions for GNU/Linux and OS X are in the Booktype user manual, and the Docker files live in a separate booktype-docker repository. The package itself is installed with setuptools, with the code under lib and three runtime requirements, setuptools, simplejson and django.

How do I run the Booktype tests?

With pytest and the pytest-django plugin. Activate the virtual environment with Booktype installed, change to the instance root, the folder holding manage.py and pytest.ini, and run the pytest command. Coverage is available with `py.test --cov-report term-missing --cov=path/to/Booktype`.

What licence is Booktype under?

The GNU AGPL, with the text in the LICENSE.txt file at the root of the repository, and the package metadata declares the same licence with a development status of Alpha. Contributors also sign an individual or entity contributor agreement that gives the project the right to use their work while they retain the copyright.

Is Booktype still being maintained?

It is being worked on, with the last push to the repository on 2026-09-24, after a long gap in the release history between v2.3.0 in November 2017 and v2.4.0 in November 2025. The package version in setup.py is 2.4.0 and the project describes itself as being developed and translated by a community of contributors.

Official sources

  1. booktype/Booktype on GitHub
  2. License: AGPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/booktype-booktype.svg)](https://hysenlabs.com/projects/booktype-booktype)