What is EPUB Validation — and Why Does It Matter for Publishing?
EPUB validation explained for indie authors. What EPUBCheck actually checks, why retailers reject files, and how to produce EPUBs that pass.
If you’ve ever had an ebook file rejected by KDP, Kobo, or Apple Books, you’ve encountered EPUB validation — even if you didn’t know the term.
Validation is the process of checking an EPUB file against a set of technical standards to confirm it’s structured correctly. When a retailer runs your file through validation and it fails, you get an error message. Sometimes the message is clear. Often it’s cryptic. Either way, your book isn’t live until you fix it.
This explainer covers what EPUB validation actually is, what it checks, why different retailers reject the same file, and how to avoid the whole cycle.
What is EPUBCheck?
EPUBCheck is the open-source validation tool used as the industry standard for EPUB files. When you upload an EPUB to KDP, Kobo, Apple Books, or other retailers, they run your file through EPUBCheck (or a derivative of it) before accepting it.
EPUBCheck checks for:
- Valid XHTML structure — The content files inside your EPUB need to be well-formed XHTML. A missing closing tag, an improperly nested element, or a stray character can fail this check.
- Navigation document — EPUB 3 files must have a valid navigation document (the table of contents). If it’s missing, malformed, or references chapters that don’t exist, the file fails.
- Manifest integrity — Every file referenced inside the EPUB’s package must actually exist in the package. A broken image link, a missing CSS file, or a reference to a font that isn’t embedded will fail this.
- Spine order — The reading order of your chapters (defined in the spine) must be consistent with the manifest.
- Metadata requirements — Title, language, and unique identifier must be present and correctly formatted.
- Media type declarations — Every file type in the EPUB (HTML, CSS, images, fonts) must be declared with its correct media type.
Most of these checks are invisible to you when everything works. They only surface when something is wrong.
Why does my EPUB pass KDP but get rejected by Kobo?
This is one of the most common — and most frustrating — experiences indie authors have.
The short answer: KDP and Kobo apply different levels of strictness to the same validation standard.
KDP is relatively lenient. It will accept EPUBs with minor structural issues, deprecated elements, and even some broken references. It patches or works around a lot of problems silently. This is why you can upload a Word-generated EPUB and have it “work” on KDP even though it would fail a strict validation check.
Kobo is significantly stricter. It applies closer to a full EPUBCheck validation and rejects files that KDP would have accepted. Common Kobo-specific rejection triggers include:
- Back matter links that point to Amazon, KDP, or other competitor stores (Kobo flags these)
- Inconsistent CSS that produces layout errors on Kobo’s reader engine
- Navigation documents that don’t match the EPUB 3 specification precisely
- Embedded fonts that aren’t properly declared in the manifest
Apple Books is similarly strict, with additional requirements around metadata formatting and EPUB 3 compliance.
IngramSpark applies some of the strictest validation of any major distributor.
The practical result: a file that works on KDP is not necessarily a file that will work everywhere. If you’re publishing wide, your EPUB needs to pass the strictest standards, not just KDP’s looser checks.
What the most common validation errors actually mean
“Missing or invalid navigation document” Your EPUB doesn’t have a correctly structured table of contents, or the TOC references chapters that don’t exist in the file. Often happens when chapters are manually edited after export in a way that breaks the navigation structure.
“Unexpected element in namespace” A stray HTML element that isn’t valid XHTML. Often introduced when copying and pasting from Word or a browser, which can include non-standard tags or attributes.
“Item not found in manifest” Your EPUB references a file (an image, a CSS file, a font) that doesn’t actually exist inside the EPUB package. This happens when images are linked rather than embedded, or when files are renamed or moved after the EPUB is built.
“Spine item not in manifest” A chapter is listed in the reading order but doesn’t exist in the file list. Usually the result of a corrupted or manually edited EPUB.
“Deprecated element” Your file uses an HTML or EPUB element that was valid in older versions of the spec but isn’t in EPUB 3. Common in files created by older tools.
How a good formatting tool prevents validation errors
You shouldn’t have to think about any of this when formatting your book. A tool that generates EPUB correctly handles all of it automatically:
- Produces valid XHTML for all content files
- Generates a correctly structured navigation document
- Embeds all referenced assets and declares them in the manifest
- Uses EPUB 3 compliant structure throughout
- Strips or adjusts back matter links for retailer-specific exports
Libba produces standards-based EPUB 3 files and is built to avoid the structural problems that EPUBCheck reports. It doesn’t run EPUBCheck for you, so for extra certainty, check your exported file yourself before you upload (see below).
This doesn’t mean every file from every tool is guaranteed to be error-free — your content can introduce issues through unusual characters, broken image links, or formatting patterns the tool doesn’t anticipate. But starting from a clean, standards-based export means you’re working with a solid foundation.
Can I validate my EPUB before uploading?
Yes. You can run your EPUB through EPUBCheck yourself before uploading to any retailer.
The W3C’s online EPUB checker lets you upload a file and get a validation report. The errors it surfaces are the same ones retailers will catch.
If you use a well-built formatting tool, you shouldn’t need to do this routinely — the tool should produce clean files. But if you’re importing an older EPUB, working with a file that was manually edited, or troubleshooting a rejection, running it through the validator before upload is a sensible step.
The practical takeaway
EPUB validation isn’t something you need to understand deeply. You need to know:
- Retailers run your file through a validator before accepting it
- KDP is more lenient than Kobo, Apple, and IngramSpark
- A file that works on KDP may still be rejected elsewhere
- A formatting tool that produces clean, validated output removes this problem from your publishing workflow
If you’ve been through the rejection cycle — uploading, getting an error, not understanding it, trying random fixes, resubmitting — the answer isn’t learning more about EPUB structure. It’s switching to a tool that produces files that pass validation in the first place.
Join the waitlist to get launch updates and clean-export workflows.




