Your EPUB uploaded to KDP without a single error, but Apple Books rejected it within minutes. Google Play flagged issues you have never seen before. The file is the same; the problem is that these platforms do not validate EPUBs the same way. Amazon KDP converts your EPUB into its own proprietary format and silently fixes (or ignores) structural problems during conversion. Apple Books and Google Play, by contrast, enforce strict compliance with the EPUB standard and reject files that contain EPUB validation errors. Understanding why this happens, and what specific errors trigger rejections, is the fastest way to get your ebook accepted everywhere on the first attempt.
If the technical detail in this article feels overwhelming, here is the short version. An EPUB is the standard file format for ebooks; think of it as a small package containing your book’s text, images, fonts, and a set of instructions that tell e-readers how to display everything. When you upload that package to a retailer, some platforms inspect it more carefully than others. The rest of this post explains exactly where those differences lie and how to handle them. If you would rather not deal with EPUB technicalities at all, there is a contact link at the foot of this page; we are happy to take a look at your file for you.
Contents
- Why Does Kindle Accept EPUBs That Other Retailers Reject?
- What Are the Most Common EPUBCheck Errors?
- How Do Apple Books, Google Play, and Other Retailers Validate Differently?
- Does EPUB 2 vs EPUB 3 Matter for Retailer Acceptance in 2026?
- How to Validate Your EPUB Before Submitting to Any Retailer
- Frequently Asked Questions
Why Does Kindle Accept EPUBs That Other Retailers Reject?
KDP does not actually use your EPUB file as-is. When you upload an EPUB to Amazon, KDP converts it into Amazon’s proprietary KF8 format (Kindle Format 8). During this conversion, Amazon’s internal toolchain strips out non-essential metadata, rebuilds the internal file structure, and resolves many structural errors automatically. An EPUB with duplicate ID attributes, missing manifest entries, or malformed XML can sail through KDP upload because the converter discards or rewrites those elements during the transformation.
This is why Amazon’s EPUB-to-Kindle conversion process can feel deceptively smooth. KDP accepts both EPUB 2 and EPUB 3 files and does not run a strict EPUBCheck-style validation on upload. It checks for basic file integrity (is it a valid ZIP archive with the right MIME type?) and content policy compliance, but it does not enforce the full W3C EPUB specification. If your file opens and renders, KDP typically accepts it.
Apple Books and Google Play take the opposite approach. They deliver your EPUB file directly to readers, so the file must be structurally correct before it reaches the store. Any error that could cause rendering problems on a reader’s device results in a rejection at the upload stage rather than a silent fix downstream.
What Are the Most Common EPUBCheck Errors?
The errors that cause Apple Books and Google Play rejections almost always show up in EPUBCheck, the official W3C conformance checker maintained by the DAISY Consortium (latest release: v5.3.0 as of 2026). These are the errors that pass KDP but fail elsewhere:
Duplicate ID attributes. This is the single most common cause of cross-platform rejection. Formatting tools like Atticus, Calibre, and older versions of Scrivener’s EPUB export sometimes generate duplicate id values across HTML files within the EPUB. The EPUB specification requires every ID to be unique within a given XHTML document. KDP’s converter ignores duplicates; Apple’s Transporter and Google’s ingestion pipeline flag them as fatal errors.
Missing manifest entries. Every file inside an EPUB (fonts, images, CSS stylesheets) must be listed in the OPF manifest. If your EPUB contains a font file that is not declared in the manifest, EPUBCheck reports a RSC-008 error. This frequently happens when authors manually add or swap fonts in their EPUB without updating the manifest.
Malformed XHTML. EPUB content files must be valid XHTML, not just HTML. Unclosed tags (<br> instead of <br/>), unescaped ampersands (& instead of &), and missing XML declarations all trigger EPUBCheck errors. Word processors and some conversion tools produce HTML that browsers render fine but that fails strict XML parsing.
Oversized images. Both Apple Books and IngramSpark enforce a maximum image resolution of 5.6 million pixels per image. An image that is 3000 × 2000 pixels (six million pixels) passes KDP but fails both Apple and IngramSpark. Google Play recommends keeping individual image files under 10 MB. These limits apply to interior images; cover images have their own specifications on each platform.
Incorrect or missing navigation document. EPUB 3 requires a nav document (the XHTML-based table of contents) as well as the legacy toc.ncx for backward compatibility. Missing either one triggers validation failures on platforms that enforce the full spec. A properly structured ebook table of contents helps avoid this class of errors entirely.
How Do Apple Books, Google Play, and Other Retailers Validate Differently?
Each major ebook retailer has its own ingestion requirements. The table below summarises the key differences:
| Requirement | Amazon KDP | Apple Books | Google Play Books | IngramSpark | Draft2Digital |
|---|---|---|---|---|---|
| EPUB version accepted | EPUB 2 and 3 | EPUB 3 (3.3 preferred) | EPUB 2 and 3 | EPUB 2 and 3 | EPUB 2 and 3 |
| Runs EPUBCheck-level validation | No | Yes (via Transporter) | Yes | Yes | Yes |
| Max image pixels | No stated limit | 5.6 million | No stated limit | 5.6 million | Varies by retailer |
| Max file size | 650 MB | 2 GB | 2 GB | 100 MB | No stated limit |
| Encoding required | UTF-8 | UTF-8 or UTF-16 | UTF-8 | UTF-8 | UTF-8 |
| JavaScript allowed | No | Limited (iBooks widgets) | No | No | No |
| Converts to proprietary format | Yes (KF8) | No | No | No | No (passes through) |
Apple Books requires EPUB 3 compliance and validates files through Apple’s Transporter application. All files referenced in the EPUB must be listed in the manifest, character encoding must be UTF-8 or UTF-16, and Apple’s Books Asset Guide specifies additional requirements around cover image formatting and metadata completeness.
Google Play Books runs EPUBCheck on every upload and recommends authors provide both EPUB and PDF versions. Google rejects files containing JavaScript or MathML and requires full EPUBCheck compliance. Unlike Apple, Google accepts both EPUB 2 and EPUB 3, but the file must pass EPUBCheck for whichever version it declares.
Draft2Digital takes a different approach: it runs EPUBCheck internally and shows authors which specific retailers will reject the file based on the errors found. D2D does not fix errors for you; it passes your EPUB unchanged to each retailer. This means a single EPUB that passes D2D’s checks should work across all of D2D’s distribution partners.
Does EPUB 2 vs EPUB 3 Matter for Retailer Acceptance in 2026?
Yes, but with nuance. Most retailers still accept EPUB 2 files, and for simple text-heavy novels, EPUB 2 works everywhere except Apple Books (which now requires EPUB 3). The practical difference matters most for non-fiction, illustrated books, and any ebook using advanced features like embedded audio, video, or fixed-layout pages.
EPUB 3 uses XHTML5 content documents, supports the nav element for table of contents navigation, allows embedded multimedia, and supports more sophisticated CSS (including some CSS Grid and Flexbox properties on newer reading systems). EPUB 2 uses XHTML 1.1 content documents and the toc.ncx for navigation.
If you are distributing to Apple Books, you need EPUB 3. If you are distributing wide through an aggregator like Draft2Digital or Smashwords, producing an EPUB 3 file with a fallback toc.ncx gives you the broadest compatibility. KDP accepts both versions and converts either to KF8, so the EPUB version has no practical impact on how your book appears on Kindle devices.
How to Validate Your EPUB Before Submitting to Any Retailer
Running EPUBCheck before uploading to any retailer catches the errors that cause platform-specific rejections. Here is a straightforward validation workflow:
- Run EPUBCheck locally. Download the latest version from the EPUBCheck GitHub releases page (v5.3.0 as of May 2026). Run it from the command line:
java -jar epubcheck.jar yourbook.epub. It produces a detailed report of every error and warning. If you prefer not to install Java, searching Google for “EPUB validator online” will turn up several free web-based tools that run EPUBCheck in the browser. These are convenient for quick checks, but most cap file uploads at 10–30 MB, so they work best for text-heavy books without large images. - Fix fatal errors first. EPUBCheck distinguishes between
ERROR(fatal; will cause rejections) andWARNING(non-fatal; may cause rendering quirks). Focus on errors. The most common ones (duplicate IDs, missing manifest entries, malformed XHTML) are usually quick fixes in a code editor like Sigil or directly in your formatting tool’s EPUB export settings. - Check image dimensions. If you are targeting Apple Books or IngramSpark, verify that no image exceeds 5.6 million total pixels. A quick check: multiply width × height in pixels.
- Test on multiple reading systems. After fixing EPUBCheck errors, preview your ebook on different devices and apps to confirm that the visual rendering matches your intent. EPUBCheck validates structure, not appearance.
- Re-run EPUBCheck after every edit. Each change to the EPUB can introduce new issues. A final clean EPUBCheck run (zero errors, zero warnings) before uploading gives you the best chance of acceptance across all platforms.
Authors who use dedicated formatting tools (Vellum, Atticus, Adobe InDesign) generally produce cleaner EPUB output than those converting from Word or Google Docs, but no tool is immune to edge cases. Vellum’s output is typically EPUBCheck-clean; Atticus has improved its EPUB 3 output significantly but can still produce duplicate IDs in complex manuscripts with many scene breaks. Running EPUBCheck regardless of your tool is the safest approach.
Frequently Asked Questions
Does KDP run EPUBCheck on uploaded files?
No. Amazon KDP does not run EPUBCheck or any equivalent strict EPUB conformance check. KDP converts your EPUB to its proprietary KF8 format during ingestion, and the conversion process silently handles or discards many structural errors. This is why an EPUB with validation issues can upload successfully to KDP while being rejected by Apple Books or Google Play.
What is EPUBCheck and where do I get it?
EPUBCheck is the official open-source validation tool for EPUB files, maintained by the DAISY Consortium on behalf of the W3C. It checks your file against the EPUB specification and reports any structural errors, missing files, or metadata issues. The latest version (v5.3.0) is available as a free download from the EPUBCheck GitHub repository. It requires Java to run.
Can Calibre validate an EPUB file?
Calibre includes a basic “Check Book” feature that catches some structural issues like broken links and missing images. However, Calibre’s built-in check is not a full EPUBCheck replacement. It does not test against the complete EPUB specification and may miss errors that would cause Apple Books or Google Play rejections. For reliable cross-platform validation, run EPUBCheck directly.
Why does Apple Books require EPUB 3 when other retailers accept EPUB 2?
Apple transitioned to requiring EPUB 3 to support modern features like the HTML5 nav element, better accessibility metadata, and multimedia embedding. Apple delivers your EPUB file directly to readers rather than converting it, so the file must conform to the version of the specification that Apple’s reading system is built to render. Other retailers that still accept EPUB 2 either convert files internally (like Amazon) or support both rendering paths.
How do I fix duplicate ID errors in my EPUB?
Open your EPUB in Sigil (a free EPUB editor), use the Find & Replace tool to search across all HTML files for duplicate id values, and rename the duplicates to be unique. If your formatting tool (Atticus, Scrivener, or Calibre) generates duplicates consistently, check for software updates; most tools have addressed this in recent versions. After fixing, re-run EPUBCheck to confirm zero errors before uploading.
