5 min read

EPUB Accepted by KDP But Rejected by Apple Books? Here's Why and How to Fix It

Your EPUB passed KDP but Apple Books rejected it instantly. Here's exactly why the two platforms validate differently and the specific errors you need to fix before uploading wide.
EPUB Accepted by KDP But Rejected by Apple Books? Here's Why and How to Fix It
EPUB accepted by KDP but rejected by Apple Books fix guide for indie authors

ou uploaded the same EPUB file to KDP and Apple Books. KDP accepted it without a single complaint. Apple Books rejected it within minutes.

Same file. Two completely different results. So what's going on?

This isn't a glitch. It's how these platforms are designed to work - and once you understand why, fixing it becomes straightforward.

Why KDP and Apple Books Validate Completely Differently

When you upload an EPUB to Amazon KDP, it doesn't actually use your file as-is. KDP converts it into Amazon's proprietary KF8 format. During that conversion, KDP silently fixes or ignores structural problems in your EPUB. If your file opens and renders, KDP typically accepts it.

Apple Books works the opposite way. Apple delivers 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.

So KDP is forgiving because it rebuilds your file. Apple Books is strict because it serves your file directly. That's the core difference, and it's why the same EPUB can pass one platform and fail the other.

Which Platforms Are Strict and Which Are Lenient

It helps to know where each retailer sits on the strictness scale before you upload anywhere.

KDP is the most lenient. It runs basic integrity checks but does not enforce the full EPUB specification. Most structural errors get silently converted away.

Apple Books enforces strict EPUB 3.0 validation and rejects many errors. Kobo, Barnes & Noble Press, and Google Play Books all require valid EPUBs. Smashwords and Draft2Digital run EPUB Check on uploads and reject invalid files. Ingram Spark requires valid EPUBs for wide distribution. ebookpbook

So if you're publishing wide, not just on Amazon, your EPUB needs to pass strict validation. KDP acceptance tells you almost nothing about whether your file will work everywhere else.

The Most Common Errors That Cause Apple Books Rejections

The errors that cause Apple Books and Google Play rejections almost always show up in EPUB Check, the official W3C conformance checker.

Here are the specific ones that trigger rejections most often:

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 ingestion pipeline flags them as fatal errors.

This is especially common in books with repeating chapter structures. If your chapters follow the same template, "Chapter 1: John," "Chapter 2: John", your formatting tool may assign identical IDs to matching elements across chapters.

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 isn't 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. That means every tag needs to be properly closed, attributes need to be quoted, and certain HTML elements that browsers forgive silently will cause EPUB validators to fail. A missing closing tag that renders fine in a browser will break strict EPUB validation.

Wrong EPUB version

If you are distributing to Apple Books, you need EPUB 3. KDP accepts both EPUB 2 and EPUB 3 files. If you're distributing wide through an aggregator like Draft2Digital or Smash words, producing an EPUB 3 file with a fallback toc.ncx gives you the broadest compatibility.

So if you've been publishing EPUB 2 files to KDP without issues, that same file may get rejected by Apple Books simply because it's the wrong version.

How to Find Out Exactly What's Wrong

Don't guess. Run EPUB Check first.

EPUBCheck is the same validation tool that Apple Books, Google Play, and most major retailers use internally. Running it yourself before uploading means you see the same errors they see - before rejection.

The easiest way is the free online validator at check.w3.org/epub - upload your file and get a full error report in seconds.

If you prefer command line, download the EPUB Check JAR from GitHub and run:

bash

java -jar epubcheck.jar yourbook.epub

Reading the output:

EPUB Check distinguishes between two severity levels. ERROR means fatal. retailers will reject your file. WARNING means non-fatal, it may cause rendering quirks on some devices but won't necessarily cause rejection.

Fix all ERRORs first. Then decide whether the WARNINGs matter for your specific distribution targets.

Common error codes to look for:

RSC-007 - A file referenced in your EPUB doesn't exist in the package. Usually means a chapter file was renamed but the manifest wasn't updated.

RSC-008 - A file exists in the package but isn't listed in the manifest. Common with fonts added manually.

OPF-055 - Your NCX file is missing or not listed in the manifest. This causes navigation failures on older devices.

HTM-004 - Your XHTML content has malformed markup. Usually a missing closing tag or improperly nested element.

PKG-026 - Font obfuscation issue. Happens when font licensing keys don't match between the OPF and the font files.

How to Fix the Errors

Once you know what's broken, here's how to fix each category:

For duplicate IDs: Open your EPUB in Sigil, a free EPUB editor. Use Find & Replace across all files to locate duplicate ID values. Rename the second occurrence of each duplicate, for example, change id="chapter" to id="chapter-2" in the second file. Run EPUBCheck again to confirm all duplicates are resolved.

For missing manifest entries: Open your content.opf file in Sigil. Look at the <manifest> section and compare it against your actual file list in the Book Browser panel. Add entries for any files that exist but aren't listed. Remove entries for files that are listed but don't exist.

For malformed XHTML: EPUBCheck will give you the exact file and line number where the problem is. Open that file in Sigil's code editor and fix the specific tag. Common issues are unclosed <img> tags (needs to be <img /> in XHTML), missing quotes around attribute values, and improperly nested elements.

For wrong EPUB version: If you're on EPUB 2, you'll need to convert to EPUB 3. Sigil can do this — go to Edit → Metadata Editor and change the EPUB version. You'll also need to add a proper navigation document (nav.xhtml) if one doesn't exist.

The Right Workflow Before Any Upload

This is the process that prevents cross-platform rejections entirely.

First, finish formatting your manuscript in your tool of choice — Word, Atticus, Scrivener, whatever you use. Export to EPUB.

Second, run EPUB Check immediately after export. Fix all errors before doing anything else.

Third, open the fixed file in Kindle Previewer. Check the navigation panel on the left for chapter entries. Make sure the book renders correctly.

Fourth, upload to KDP last — not first. KDP's leniency makes it a bad quality signal. Use Apple Books or EPUB Check as your benchmark instead.

If your file passes EPUB Check with zero errors, it will be accepted by every major retailer.

Fix It Faster With Book Kraft AI

Running EPUB Check manually and editing XHTML in Sigil is the right approach - but it takes time and comfort with code.

Book Kraft AI's EPUB Validator runs the same checks automatically and explains each error in plain language, not error codes. It catches duplicate IDs, missing manifest entries, malformed markup, and navigation issues before you upload anywhere.

Free to try at bookkraftai.com/tools/epub-validator - no login required.

The Short Version

KDP accepts your EPUB because it converts it. Apple Books rejects it because it doesn't. The fix is running EPUB Check before you upload to anyone - not after you get rejected.

A clean EPUB works everywhere. A KDP-accepted EPUB works only on Amazon.

If you're publishing wide, validate first. Every time.