Lably
Skip to content

EPUB

E-book format

  • 18 min read
  • 6 chapters

Related on Lably

Through File format, Mobile app and HTML

The Book Industry Study Group endorses EPUB 3 as the format of choice for packaging content and has stated that the global book publishing industry should rally around a single standard. Technically, a file in the EPUB format is a ZIP archive file consisting of XHTML files carrying the content, along with images and other supporting files. EPUB is the most widely supported vendor-independent XML-based e-book format; it is supported by almost all hardware readers and many software readers and mobile apps.

History

A successor to the Open eBook Publication Structure, EPUB 2.0 was approved in October 2007, with a maintenance update (2.0.1) approved in September 2010.

The EPUB 3.0 specification became effective in October 2011, superseded by a minor maintenance update (3.0.1) in June 2014. New major features include support for precise layout or specialized formatting (Fixed Layout Documents), such as for comic books, and MathML support. The current version of EPUB is 3.2, effective May 8, 2019. The (text of) format specification underwent reorganization and clean-up; format supports remotely hosted resources and new font formats (WOFF 2.0 and SFNT) and uses more pure HTML and CSS.

In May 2016 IDPF members approved World Wide Web Consortium (W3C) merger, "to fully align the publishing industry and core Web technology".

Version 2.0.1

EPUB 2.0 was approved in October 2007, with a maintenance update (2.0.1) intended to clarify and correct errata in the specifications being approved in September 2010. EPUB version 2.0.1 consists of three specifications:

  • Open Publication Structure (OPS) 2.0.1, contains the formatting of its content.
  • Open Packaging Format (OPF) 2.0.1, describes the structure of the .epub file in XML.
  • Open Container Format (OCF) 2.0.1, collects all files as a ZIP archive.

EPUB internally uses XHTML or DTBook (an XML standard provided by the DAISY Consortium) to represent the text and structure of the content document, and a subset of CSS to provide layout and formatting. XML is used to create the document manifest, table of contents, and EPUB metadata. Finally, the files are bundled in a zip file as a packaging format.

Open Publication Structure 2.0.1

An EPUB file uses XHTML 1.1 (or DTBook) to construct the content of a book as of version 2.0.1. This is different from previous versions (OEBPS 1.2 and earlier), which used a subset of XHTML. There are, however, a few restrictions on certain elements. The MIME type for XHTML documents in EPUB is application/xhtml+xml.

Styling and layout are performed using a subset of CSS 2.0, referred to as OPS Style Sheets. This specialized syntax requires that reading systems support only a portion of CSS properties and adds a few custom properties. Custom properties include oeb-page-head, oeb-page-foot, and oeb-column-number. Font-embedding can be accomplished using the @font-face property, as well as including the font file in the OPF's manifest (see below). The MIME type for CSS documents in EPUB is text/css.

EPUB also requires that PNG, JPEG, GIF, and SVG images be supported using the MIME types image/png, image/jpeg, image/gif, image/svg+xml. Other media types are allowed, but creators must include alternative renditions using supported types. For a table of all required MIME types, see Section 1.3.7 of the specification.

Unicode is required, and content producers must use either UTF-8 or UTF-16 encoding. This is to support international and multilingual books. However, reading systems are not required to provide the fonts necessary to display every Unicode character, though they are required to display at least a placeholder for characters that cannot be displayed fully.

An example skeleton of an XHTML file for EPUB looks like this:

<span id="mwuA"></span><span class="cp" id="mwuQ"><?xml version="1.0" encoding="UTF-8" ?></span> <span class="cp" id="mwug"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"></span> <span class="p" id="mwuw"><</span><span class="nt" id="mwvA">html</span> <span class="na" id="mwvQ">xmlns</span><span class="o" id="mwvg">=</span><span class="s" id="mwvw">"http://www.w3.org/1999/xhtml"</span> <span class="na" id="mwwA">xml:lang</span><span class="o" id="mwwQ">=</span><span class="s" id="mwwg">"en"</span><span class="p" id="mwww">></span> <span class="p" id="mwxA"><</span><span class="nt" id="mwxQ">head</span><span class="p" id="mwxg">></span> <span class="p" id="mwxw"><</span><span class="nt" id="mwyA">meta</span> <span class="na" id="mwyQ">http-equiv</span><span class="o" id="mwyg">=</span><span class="s" id="mwyw">"Content-Type"</span> <span class="na" id="mwzA">content</span><span class="o" id="mwzQ">=</span><span class="s" id="mwzg">"application/xhtml+xml; charset=utf-8"</span> <span class="p" id="mwzw">/></span> <span class="p" id="mw0A"><</span><span class="nt" id="mw0Q">title</span><span class="p" id="mw0g">></span>Pride and Prejudice<span class="p" id="mw0w"></</span><span class="nt" id="mw1A">title</span><span class="p" id="mw1Q">></span> <span class="p" id="mw1g"><</span><span class="nt" id="mw1w">link</span> <span class="na" id="mw2A">rel</span><span class="o" id="mw2Q">=</span><span class="s" id="mw2g">"stylesheet"</span> <span class="na" id="mw2w">href</span><span class="o" id="mw3A">=</span><span class="s" id="mw3Q">"css/main.css"</span> <span class="na" id="mw3g">type</span><span class="o" id="mw3w">=</span><span class="s" id="mw4A">"text/css"</span> <span class="p" id="mw4Q">/></span> <span class="p" id="mw4g"></</span><span class="nt" id="mw4w">head</span><span class="p" id="mw5A">></span> <span class="p" id="mw5Q"><</span><span class="nt" id="mw5g">body</span><span class="p" id="mw5w">></span> ... <span class="p" id="mw6A"></</span><span class="nt" id="mw6Q">body</span><span class="p" id="mw6g">></span> <span class="p" id="mw6w"></</span><span class="nt" id="mw7A">html</span><span class="p" id="mw7Q">></span>

Open Packaging Format 2.0.1

The OPF specification's purpose is to "[define] the mechanism by which the various components of an OPS publication are tied together and provides additional structure and semantics to the electronic publication". This is accomplished by two XML files with the extensions .opf and .ncx.

.opf file

The OPF file, traditionally named content.opf, houses the EPUB book's metadata, file manifest, and linear reading order. This file has a root element package and four child elements: metadata, manifest, spine, and guide. Furthermore, the package node must have the unique-identifier attribute. The .opf file's MIME type is application/oebps-package+xml.

The metadata element contains all the metadata information for a particular EPUB file. Three metadata tags are required (though many more are available): title, language, and identifier. title contains the title of the book, language contains the language of the book's contents in RFC 3066 format or its successors, such as the newer RFC 4646 and identifier contains a unique identifier for the book, such as its ISBN or a URL. The identifier's id attribute should equal the unique-identifier attribute from the package element.

The manifest element lists all the files contained in the package. Each file is represented by an item element, and has the attributes id, href, media-type. All XHTML (content documents), stylesheets, images or other media, embedded fonts, and the NCX file should be listed here. Only the .opf file itself, the container.xml, and the mimetype files should not be included.

The spine element lists all the XHTML content documents in their linear reading order. Also, any content document that can be reached through linking or the table of contents must be listed as well. The toc attribute of spine must contain the id of the NCX file listed in the manifest. Each itemref element's idref is set to the id of its respective content document.

The guide element is an optional element for the purpose of identifying fundamental structural components of the book. Each reference element has the attributes type, title, href. Files referenced in href must be listed in the manifest, and are allowed to have an element identifier (e.g. #figures in the example).

An example OPF file:

<span id="mwAUo"></span><span class="cp" id="mwAUs"><?xml version="1.0"?></span> <span class="nt" id="mwAUw"><package</span><span class="w" id="mwAU0"> </span><span class="na" id="mwAU4">version=</span><span class="s" id="mwAU8">"2.0"</span><span class="w" id="mwAVA"> </span><span class="na" id="mwAVE">xmlns=</span><span class="s" id="mwAVI">"http://www.idpf.org/2007/opf"</span><span class="w" id="mwAVM"> </span><span class="na" id="mwAVQ">unique-identifier=</span><span class="s" id="mwAVU">"BookId"</span><span class="nt" id="mwAVY">></span> <span class="w" id="mwAVc"> </span><span class="nt" id="mwAVg"><metadata</span><span class="w" id="mwAVk"> </span><span class="na" id="mwAVo">xmlns:dc=</span><span class="s" id="mwAVs">"http://purl.org/dc/elements/1.1/"</span><span class="w" id="mwAVw"> </span><span class="na" id="mwAV0">xmlns:opf=</span><span class="s" id="mwAV4">"http://www.idpf.org/2007/opf"</span><span class="nt" id="mwAV8">></span> <span class="w" id="mwAWA"> </span><span class="nt" id="mwAWE"><dc:title></span>Pride<span class="w" id="mwAWI"> </span>and<span class="w" id="mwAWM"> </span>Prejudice<span class="nt" id="mwAWQ"></dc:title></span> <span class="w" id="mwAWU"> </span><span class="nt" id="mwAWY"><dc:language></span>en<span class="nt" id="mwAWc"></dc:language></span> <span class="w" id="mwAWg"> </span><span class="nt" id="mwAWk"><dc:identifier</span><span class="w" id="mwAWo"> </span><span class="na" id="mwAWs">id=</span><span class="s" id="mwAWw">"BookId"</span><span class="w" id="mwAW0"> </span><span class="na" id="mwAW4">opf:scheme=</span><span class="s" id="mwAW8">"ISBN"</span><span class="nt" id="mwAXA">></span>123456789X<span class="nt" id="mwAXE"></dc:identifier></span> <span class="w" id="mwAXI"> </span><span class="nt" id="mwAXM"><dc:creator</span><span class="w" id="mwAXQ"> </span><span class="na" id="mwAXU">opf:file-as=</span><span class="s" id="mwAXY">"Austen, Jane"</span><span class="w" id="mwAXc"> </span><span class="na" id="mwAXg">opf:role=</span><span class="s" id="mwAXk">"aut"</span><span class="nt" id="mwAXo">></span>Jane<span class="w" id="mwAXs"> </span>Austen<span class="nt" id="mwAXw"></dc:creator></span> <span class="w" id="mwAX0"> </span><span class="nt" id="mwAX4"></metadata></span> <span class="w" id="mwAX8"> </span><span class="nt" id="mwAYA"><manifest></span> <span class="w" id="mwAYE"> </span><span class="nt" id="mwAYI"><item</span><span class="w" id="mwAYM"> </span><span class="na" id="mwAYQ">id=</span><span class="s" id="mwAYU">"chapter1"</span><span class="w" id="mwAYY"> </span><span class="na" id="mwAYc">href=</span><span class="s" id="mwAYg">"chapter1.xhtml"</span><span class="w" id="mwAYk"> </span><span class="na" id="mwAYo">media-type=</span><span class="s" id="mwAYs">"application/xhtml+xml"</span><span class="nt" id="mwAYw">/></span> <span class="w" id="mwAY0"> </span><span class="nt" id="mwAY4"><item</span><span class="w" id="mwAY8"> </span><span class="na" id="mwAZA">id=</span><span class="s" id="mwAZE">"appendix"</span><span class="w" id="mwAZI"> </span><span class="na" id="mwAZM">href=</span><span class="s" id="mwAZQ">"appendix.xhtml"</span><span class="w" id="mwAZU"> </span><span class="na" id="mwAZY">media-type=</span><span class="s" id="mwAZc">"application/xhtml+xml"</span><span class="nt" id="mwAZg">/></span> <span class="w" id="mwAZk"> </span><span class="nt" id="mwAZo"><item</span><span class="w" id="mwAZs"> </span><span class="na" id="mwAZw">id=</span><span class="s" id="mwAZ0">"stylesheet"</span><span class="w" id="mwAZ4"> </span><span class="na" id="mwAZ8">href=</span><span class="s" id="mwAaA">"style.css"</span><span class="w" id="mwAaE"> </span><span class="na" id="mwAaI">media-type=</span><span class="s" id="mwAaM">"text/css"</span><span class="nt" id="mwAaQ">/></span> <span class="w" id="mwAaU"> </span><span class="nt" id="mwAaY"><item</span><span class="w" id="mwAac"> </span><span class="na" id="mwAag">id=</span><span class="s" id="mwAak">"ch1-pic"</span><span class="w" id="mwAao"> </span><span class="na" id="mwAas">href=</span><span class="s" id="mwAaw">"ch1-pic.png"</span><span class="w" id="mwAa0"> </span><span class="na" id="mwAa4">media-type=</span><span class="s" id="mwAa8">"image/png"</span><span class="nt" id="mwAbA">/></span> <span class="w" id="mwAbE"> </span><span class="nt" id="mwAbI"><item</span><span class="w" id="mwAbM"> </span><span class="na" id="mwAbQ">id=</span><span class="s" id="mwAbU">"myfont"</span><span class="w" id="mwAbY"> </span><span class="na" id="mwAbc">href=</span><span class="s" id="mwAbg">"css/myfont.otf"</span><span class="w" id="mwAbk"> </span><span class="na" id="mwAbo">media-type=</span><span class="s" id="mwAbs">"application/x-font-opentype"</span><span class="nt" id="mwAbw">/></span> <span class="w" id="mwAb0"> </span><span class="nt" id="mwAb4"><item</span><span class="w" id="mwAb8"> </span><span class="na" id="mwAcA">id=</span><span class="s" id="mwAcE">"ncx"</span><span class="w" id="mwAcI"> </span><span class="na" id="mwAcM">href=</span><span class="s" id="mwAcQ">"toc.ncx"</span><span class="w" id="mwAcU"> </span><span class="na" id="mwAcY">media-type=</span><span class="s" id="mwAcc">"application/x-dtbncx+xml"</span><span class="nt" id="mwAcg">/></span> <span class="w" id="mwAck"> </span><span class="nt" id="mwAco"></manifest></span> <span class="w" id="mwAcs"> </span><span class="nt" id="mwAcw"><spine</span><span class="w" id="mwAc0"> </span><span class="na" id="mwAc4">toc=</span><span class="s" id="mwAc8">"ncx"</span><span class="nt" id="mwAdA">></span> <span class="w" id="mwAdE"> </span><span class="nt" id="mwAdI"><itemref</span><span class="w" id="mwAdM"> </span><span class="na" id="mwAdQ">idref=</span><span class="s" id="mwAdU">"chapter1"</span><span class="w" id="mwAdY"> </span><span class="nt" id="mwAdc">/></span> <span class="w" id="mwAdg"> </span><span class="nt" id="mwAdk"><itemref</span><span class="w" id="mwAdo"> </span><span class="na" id="mwAds">idref=</span><span class="s" id="mwAdw">"appendix"</span><span class="w" id="mwAd0"> </span><span class="nt" id="mwAd4">/></span> <span class="w" id="mwAd8"> </span><span class="nt" id="mwAeA"></spine></span> <span class="w" id="mwAeE"> </span><span class="nt" id="mwAeI"><guide></span> <span class="w" id="mwAeM"> </span><span class="nt" id="mwAeQ"><reference</span><span class="w" id="mwAeU"> </span><span class="na" id="mwAeY">type=</span><span class="s" id="mwAec">"loi"</span><span class="w" id="mwAeg"> </span><span class="na" id="mwAek">title=</span><span class="s" id="mwAeo">"List Of Illustrations"</span><span class="w" id="mwAes"> </span><span class="na" id="mwAew">href=</span><span class="s" id="mwAe0">"appendix.xhtml#figures"</span><span class="w" id="mwAe4"> </span><span class="nt" id="mwAe8">/></span> <span class="w" id="mwAfA"> </span><span class="nt" id="mwAfE"></guide></span> <span class="nt" id="mwAfI"></package></span>

.ncx file

The NCX file (Navigation Control file for XML), traditionally named toc.ncx, contains the hierarchical table of contents for the EPUB file. The specification for NCX was developed for Digital Talking Book (DTB), is maintained by the DAISY Consortium, and is not a part of the EPUB specification. The NCX file has a MIME type of application/x-dtbncx+xml.

Of note here is that the values for the docTitle, docAuthor, and meta name="dtb:uid" elements should match their analogs in the OPF file. Also, the meta name="dtb:depth" element is set equal to the depth of the navMap element. navPoint elements can be nested to create a hierarchical table of contents. navLabel's content is the text that appears in the table of contents generated by reading systems that use the .ncx. navPoint's content element points to a content document listed in the manifest and can also include an element identifier (e.g. #section1).

A description of certain exceptions to the NCX specification as used in EPUB is in Section 2.4.1 of the specification. The complete specification for NCX can be found in the Specifications for the Digital Talking Book.

An example .ncx file:

<span id="mwAh0"></span><span class="cp" id="mwAh4"><?xml version="1.0" encoding="UTF-8"?></span> <span class="cp" id="mwAh8"><!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"</span> <span class="cp" id="mwAiA">"http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"></span> <span class="nt" id="mwAiE"><ncx</span><span class="w" id="mwAiI"> </span><span class="na" id="mwAiM">version=</span><span class="s" id="mwAiQ">"2005-1"</span><span class="w" id="mwAiU"> </span><span class="na" id="mwAiY">xml:lang=</span><span class="s" id="mwAic">"en"</span><span class="w" id="mwAig"> </span><span class="na" id="mwAik">xmlns=</span><span class="s" id="mwAio">"http://www.daisy.org/z3986/2005/ncx/"</span><span class="nt" id="mwAis">></span> <span class="w" id="mwAiw"> </span><span class="nt" id="mwAi0"><head></span> <span class="cm" id="mwAi4"><!-- The following four metadata items are required for all NCX documents,</span> <span class="cm" id="mwAi8">including those that conform to the relaxed constraints of OPS 2.0 --></span> <span class="w" id="mwAjA"> </span><span class="nt" id="mwAjE"><meta</span><span class="w" id="mwAjI"> </span><span class="na" id="mwAjM">name=</span><span class="s" id="mwAjQ">"dtb:uid"</span><span class="w" id="mwAjU"> </span><span class="na" id="mwAjY">content=</span><span class="s" id="mwAjc">"123456789X"</span><span class="nt" id="mwAjg">/></span><span class="w" id="mwAjk"> </span><span class="cm" id="mwAjo"><!-- same as in .opf --></span> <span class="w" id="mwAjs"> </span><span class="nt" id="mwAjw"><meta</span><span class="w" id="mwAj0"> </span><span class="na" id="mwAj4">name=</span><span class="s" id="mwAj8">"dtb:depth"</span><span class="w" id="mwAkA"> </span><span class="na" id="mwAkE">content=</span><span class="s" id="mwAkI">"1"</span><span class="nt" id="mwAkM">/></span><span class="w" id="mwAkQ"> </span><span class="cm" id="mwAkU"><!-- 1 or higher --></span> <span class="w" id="mwAkY"> </span><span class="nt" id="mwAkc"><meta</span><span class="w" id="mwAkg"> </span><span class="na" id="mwAkk">name=</span><span class="s" id="mwAko">"dtb:totalPageCount"</span><span class="w" id="mwAks"> </span><span class="na" id="mwAkw">content=</span><span class="s" id="mwAk0">"0"</span><span class="nt" id="mwAk4">/></span><span class="w" id="mwAk8"> </span><span class="cm" id="mwAlA"><!-- must be 0 --></span> <span class="w" id="mwAlE"> </span><span class="nt" id="mwAlI"><meta</span><span class="w" id="mwAlM"> </span><span class="na" id="mwAlQ">name=</span><span class="s" id="mwAlU">"dtb:maxPageNumber"</span><span class="w" id="mwAlY"> </span><span class="na" id="mwAlc">content=</span><span class="s" id="mwAlg">"0"</span><span class="nt" id="mwAlk">/></span><span class="w" id="mwAlo"> </span><span class="cm" id="mwAls"><!-- must be 0 --></span> <span class="w" id="mwAlw"> </span><span class="nt" id="mwAl0"></head></span> <span class="w" id="mwAl4"> </span><span class="nt" id="mwAl8"><docTitle></span> <span class="w" id="mwAmA"> </span><span class="nt" id="mwAmE"><text></span>Pride<span class="w" id="mwAmI"> </span>and<span class="w" id="mwAmM"> </span>Prejudice<span class="nt" id="mwAmQ"></text></span> <span class="w" id="mwAmU"> </span><span class="nt" id="mwAmY"></docTitle></span> <span class="w" id="mwAmc"> </span><span class="nt" id="mwAmg"><docAuthor></span> <span class="w" id="mwAmk"> </span><span class="nt" id="mwAmo"><text></span>Austen,<span class="w" id="mwAms"> </span>Jane<span class="nt" id="mwAmw"></text></span> <span class="w" id="mwAm0"> </span><span class="nt" id="mwAm4"></docAuthor></span> <span class="w" id="mwAm8"> </span><span class="nt" id="mwAnA"><navMap></span> <span class="w" id="mwAnE"> </span><span class="nt" id="mwAnI"><navPoint</span><span class="w" id="mwAnM"> </span><span class="na" id="mwAnQ">class=</span><span class="s" id="mwAnU">"chapter"</span><span class="w" id="mwAnY"> </span><span class="na" id="mwAnc">id=</span><span class="s" id="mwAng">"chapter1"</span><span class="w" id="mwAnk"> </span><span class="na" id="mwAno">playOrder=</span><span class="s" id="mwAns">"1"</span><span class="nt" id="mwAnw">></span> <span class="w" id="mwAn0"> </span><span class="nt" id="mwAn4"><navLabel><text></span>Chapter<span class="w" id="mwAn8"> </span>1<span class="nt" id="mwAoA"></text></navLabel></span> <span class="w" id="mwAoE"> </span><span class="nt" id="mwAoI"><content</span><span class="w" id="mwAoM"> </span><span class="na" id="mwAoQ">src=</span><span class="s" id="mwAoU">"chapter1.xhtml"</span><span class="nt" id="mwAoY">/></span> <span class="w" id="mwAoc"> </span><span class="nt" id="mwAog"></navPoint></span> <span class="w" id="mwAok"> </span><span class="nt" id="mwAoo"></navMap></span> <span class="nt" id="mwAos"></ncx></span>

Open Container Format 2.0.1

An EPUB file is a group of files that conform to the OPS/OPF standards and are wrapped in a ZIP file. The OCF specifies how to organize these files in the ZIP, and defines two additional files that must be included.

The mimetype file must be a text document in ASCII that contains the string application/epub+zip. It must also be uncompressed, unencrypted, and the first file in the ZIP archive. This file provides a more reliable way for applications to identify the MIME type of the file than just the .epub extension.

Also, there must be a folder named META-INF, which contains the required file container.xml. This XML file points to the file defining the contents of the book. This is the OPF file, though additional alternative rootfile elements are allowed.

Apart from mimetype and META-INF/container.xml, the other files (OPF, NCX, XHTML, CSS and images files) are traditionally put in a directory named OEBPS.

An example file structure:

--ZIP Container-- MIME type META-INF/ container.xml OEBPS/ content.opf chapter1.xhtml ch1-pic.png css/ style.css myfont.otf

An example container.xml, given the above file structure:

<span id="mwAqs"></span><span class="cp" id="mwAqw"><?xml version="1.0" encoding="UTF-8" ?></span> <span class="nt" id="mwAq0"><container</span><span class="w" id="mwAq4"> </span><span class="na" id="mwAq8">version=</span><span class="s" id="mwArA">"1.0"</span><span class="w" id="mwArE"> </span><span class="na" id="mwArI">xmlns=</span><span class="s" id="mwArM">"urn:oasis:names:tc:opendocument:xmlns:container"</span><span class="nt" id="mwArQ">></span> <span class="w" id="mwArU"> </span><span class="nt" id="mwArY"><rootfiles></span> <span class="w" id="mwArc"> </span><span class="nt" id="mwArg"><rootfile</span><span class="w" id="mwArk"> </span><span class="na" id="mwAro">full-path=</span><span class="s" id="mwArs">"OEBPS/content.opf"</span><span class="w" id="mwArw"> </span><span class="na" id="mwAr0">media-type=</span><span class="s" id="mwAr4">"application/oebps-package+xml"</span><span class="nt" id="mwAr8">/></span> <span class="w" id="mwAsA"> </span><span class="nt" id="mwAsE"></rootfiles></span> <span class="nt" id="mwAsI"></container></span>

Version 3.0.1

The EPUB 3.0 Recommended Specification was approved on 11 October 2011. On June 26, 2014, EPUB 3.0.1 was approved as a minor maintenance update to EPUB 3.0. EPUB 3.0 supersedes the previous release 2.0.1.

EPUB 3 consists of a set of four specifications:

  • EPUB Publications 3.0, which defines publication-level semantics and overarching conformance requirements for EPUB Publications
  • EPUB Content Documents 3.0, which defines profiles of XHTML, SVG and CSS for use in the context of EPUB Publications
  • EPUB Open Container Format (OCF) 3.0, which defines a file format and processing model for encapsulating a set of related resources into a single-file (ZIP) EPUB Container.
  • EPUB Media Overlays 3.0, which defines a format and a processing model for synchronization of text and audio

The EPUB 3.0 format was intended to address the following criticisms:

  • While good for text-centric books, EPUB was rather unsuitable for publications that require precise layout or specialized formatting, such as comic books.
  • A major issue hindering the use of EPUB for most technical publications was the lack of support for equations formatted as MathML. They were included as bitmap or SVG images, precluding proper handling by screen readers and interaction with computer algebra systems. Support for MathML is included in the EPUB 3.0 specification.
  • Other criticisms of EPUB were the specification's lack of detail on linking within or between EPUB books, and its lack of a specification for annotation. Such linking is hindered by the use of a ZIP file as the container for EPUB. Furthermore, it was unclear if it would be better to link by using EPUB's internal structural markup (the OPF specification mentioned above) or directly to files through the ZIP's file structure. The lack of a standardized way to annotate EPUB books led to difficulty in sharing and transferring annotations and therefore limited the use scenarios of EPUB, particularly in educational settings, because it cannot provide a level of interactivity comparable to the web.

On June 26, 2014, the IDPF published EPUB 3.0.1 as a final Recommended Specification.

In November 2014, EPUB 3.0 was published by the ISO/IEC as ISO/IEC TS 30135 (parts 1–7).

In January 2020, EPUB 3.0.1 was published by the ISO/IEC as ISO/IEC 23736 (parts 1–6).

Version 3.2

EPUB 3.2 was announced in 2018, and the final specification was released in 2019. A notable change is the removal of a specialized subset of CSS, enabling the use of non-epub-prefixed properties. The references to HTML and SVG standards are also updated to "newest version available", as opposed to a fixed version in time.

Version 3.3

The W3C announced version 3.3 on May 25, 2023. Changes included stricter security and privacy standards; and the adoption of the WebP and Opus media formats.

Sign in to keep reading

5 more chapters are free with a Lably account.

More in Computing and communication

Source and licence. Adapted from the Wikipedia article “EPUB” (this version, 2026-09-16) by its contributors, shared under CC BY-SA 4.0. Lablypedia has left out its tables, references and most pictures, and linked it to other Lablypedia articles.