Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

Simple minimalistic library for creating EPUB3 files

Project description

Build Status Coverage Status license


mkepub is a minimalistic library for creating .epub files.


  • Easy to use, minimalistic API.
  • Automatically generated TOC.
  • Support for nested TOC of any depth.
  • Support for embedded images.
  • In-progress books are stored on disk rather than in memory, enabling creation of large (5000+ pages, 20+ MiBs) epub files.
  • Adherence to the EPUB3 specs.
  • Support for most of the EPUB metadata, including language, subject, description, and rights.


  • No support for custom page filenames or directory structure.
  • No support for reading or editing epub files.
  • No support for font-embedding or most other less commonly used EPUB features.
  • No content validation - using broken or unsupported html code as page content will lead to mkepub successfully creating a .epub file that does not meet EPUB3 specifications.
  • Probably other issues.

Basic Usage

import mkepub

book = mkepub.Book(title='An Example')
book.add_page(title='First Page', content='Lorem Ipsum etcetera.')'example.epub')

Advanced Usage

import mkepub

book = mkepub.Book(title='Advanced Example', author='The Author')
# multiple authors can be specified as a list:
# mkepub.Book(title='Advanced Example', authors=['The First Author', 'The Second Author'])
with open('cover.jpg', 'rb') as file:
with open('style.css') as file:

first = book.add_page('Chapter 1', 'And so the book begins.')

child = book.add_page('Chapter 1.1', 'Nested TOC is supported.', parent=first)
book.add_page('Chapter 1.1.1', 'Infinite nesting levels', parent=child)
book.add_page('Chapter 1.2', 'In any order you wish.', parent=first)

book.add_page('Chapter 2', 'Use <b>html</b> to make your text <span class="pink">prettier</span>')

book.add_page('Chapter 3: Images', '<img src="images/chapter3.png" alt="You can use images as well">')
# as long as you add them to the book:
with open('chapter3.png', 'rb') as file:

Project details

Release history Release notifications

This version
History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
mkepub-1.1-py3-none-any.whl (10.3 kB) Copy SHA256 hash SHA256 Wheel 3.4 Jan 24, 2017
mkepub-1.1.tar.gz (5.6 kB) Copy SHA256 hash SHA256 Source None Jan 24, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page