EPUB is an open-standard file format for digital books developed by the International Digital Publishing Forum (IDPF). One of the main benefits of the EPUB format for readers is that it allows a book's text to automatically adjust or "reflow" for different screen sizes, such as those for smartphones, netbooks and eReader devices. EPUB also supports fixed-layout content.
On this page:
Whether to submit EPUB or PDF files
We recommend that you send us both PDF and EPUB files for your books, as we offer our users two display modes: original pages and reflowable text. Providing the PDF file for your book will ensure that readers can view the book in its original layout, while the EPUB file will allow them a more customizable experience. In this case, users will have access to a "reflowable text" option in addition to the "original pages" option. They will be able to resize the text, change the font, and view the book more comfortably on screens of varying sizes. Most major publishers are supplying EPUB files to us.
Supported versions
Google Play Books accepts EPUB3.3,EPUB 3 and EPUB 2, though 3.3 is preferred.
Supported image types
- Static GIF
- JPEG
- PNG
- SVG (maximum width or height of 3200)
See the section below on enhanced EPUB support for more information on other multimedia types.
Implementation
Example:
<svg xmlns="http://www.w3.org/2000/svg" height="100%" preserveAspectRatio="xMidYMid meet" version="1.1" viewBox="0 0 2000 3200" width="100%" xmlns:xlink="http://www.w3.org/1999/xlink"><image height="2000" width="3200" xlink:href="../Images/example.jpg"></image></svg>
The 3200px limit applies to width
and height
attributes present in the <image>
and/or <svg>
tags, and any file referenced by the <image>
tag.
EPUB 3 feature support
Individual features of EPUB 3 may not be supported across all the platforms where Google Play Books can be read.
Embedded audio and video | ✔ |
Embedded fonts | ✔ |
Fixed layout | ✔ |
Global language support | ✔ |
Hyperlink | ✔ |
JavaScript | ✘ |
MathML | ✘ |
Media overlays | ✔ |
Multi-column layouts | ✘ |
Navigation document rendering (toc nav element only) |
✔ |
Navigation document rendering (other element types) | ✘ |
SVG spine items | ✔ |
Validating EPUB files
Prior to uploading your EPUB files, try to open them using an eReader program such as Adobe Digital Editions. If you're able to open the files using eReader software, this is a good indicator that the file will be successfully processed by our system.
An additional step you should take is to run the EpubCheck tool, a tool to validate EPUB files, to ensure that there are no errors in the files you generated.
If you encounter issues while processing an EPUB file, these errors will appear in your Partner Center account under the Content tab for the book.
Optimizing your EPUB sample
To provide a better experience for customers when they browse your book in the Google Play store, indicate where the content starts (after any front matter material such as the title page or copyright page). This allows the sample to begin from that point instead of making customers flip through extra pages.
-
For EPUB 2, inside the
guide
element, include a<reference>
element with atype="text"
attribute. See the EPUB 2.0.1 specification. -
This feature isn't available yet for EPUB 3. For future implementation, inside the
landmarks nav
element, include a link with anepub:type="bodymatter"
attribute. See the EPUB 3.0.1 specification.
Enhanced EPUB support
Enhanced eBooks take advantage of the digital medium to include multimedia or interactive elements. Google Play Books supports audio and video embedded in EPUB 2 and EPUB 3 files.
Implementation
Audio or video embedded in an EPUB file should be contained in HTML5 tags, such as in the examples below:
<audio src="audio/example.mp3" />
<video src="video/example.mp4" width="640" height="480" />
<video title="Example Video" width="640" height="480" poster="images/example.jpg">
<source src="video/example.mp4" />
<source src="video/example.webm" />
</video>
Only the following attributes will be parsed by Google Play Books:
src
: Defines the location of the file for video and audio.width
andheight
: Dimensions for video.poster
: Defines a static image for the video. Google supports image formats specified in EPUB specifications (static GIF, JPEG, PNG, and SVG images).
Additional attributes will be ignored.
Formats
We support a wide variety of audio and video formats:
- MPEG-4, 3GPP and MOV: typically supporting H.264 or MPEG-4 video codecs, and AAC audio codec
- WebM: VP8 video codec and Vorbis audio codecs
- MPEG: typically supporting MPEG-2 video codec and MP2 audio
- WMV
- FLV: Adobe-FLV1 video codec, MP3 audio
- AVI: many cameras output this format; typically the video codec is MJPEG and audio is PCM
- MP3, WAV, M4A, MP4, 3GP for audio
Unsupported features
- Google Play Books doesn't support non-standard audio or video tags, or interactive functionality such as that enabled by JavaScript code.
- The ability to embed audio is limited to EPUB files and doesn't allow for the submission of standalone audio books.
Fixed-layout EPUB support
When the design of a page is particularly important, you may want to implement a fixed layout, which offers greater control over the presentation of your content. Google Play Books supports fixed layout in EPUB 2 and EPUB 3 files.
We recommend that you review fixed-layout EPUB files before they go live. After you upload a fixed-layout EPUB file, add yourself as a Content Reviewer and verify that the book displays as intended in the Web Reader. If possible, do the same for the tablet version of the Google Play Books Android app.
Implementation
Google Play Books supports fixed-layout properties for EPUB 3 files.
Alternatively, the below method works for both EPUB 2 and EPUB 3 files.
- Include the file
META-INF/com.apple.ibooks.display-options.xml
. - Specify layout in XHTML items by adding
<meta name="viewport" content="width=xxx, height=yyy"></meta>
Only the following values in the META-INF/com.apple.ibooks.display-options.xml
file will be parsed:
<?xml version="1.0" encoding="UTF-8"?>
<display_options>
<platform name="*">
<option name="fixed-layout">true</option>
<option name="orientation-lock">landscape-only</option>
</platform>
</display_options>
For orientation-lock
, the portrait-only
value is also supported. Additional attributes, such as the following, will be ignored:
platform name
: if different than*
open-to-spread
: always set tofalse