Why Does Kobo Reject Ebooks?

Kobo Writing Life can reject your EPUB at two separate stages: the initial upload check, and the KEPUB conversion that runs afterward. The conversion stage is where Kobo-specific failures occur — structural issues that pass EPUBCheck and upload to KDP without error can cause Kobo's KEPUB pipeline to stall silently, leaving the book stuck in "Processing" with no error message until you contact KWL support directly.

Most common rejection reasons

1. KEPUB conversion stalls silently

Kobo converts every uploaded EPUB to its own KEPUB format before listing. Structural issues that EPUBCheck doesn't flag — deeply nested block elements, XPointer-style fragment identifiers in internal links, or invalid UTF-8 byte sequences outside the Basic Multilingual Plane — cause the KEPUB conversion process to hang indefinitely. The KWL dashboard shows "Processing" without advancing to "Live." This is the most common source of Kobo-specific failures on files that pass full EPUBCheck validation.

2. Nickel CSS rendering incompatibilities

Kobo's Nickel rendering engine does not support position: fixed, vw/vh viewport units, CSS3 transitions or animations, or some calc() expressions. A file that renders correctly in Kindle Previewer and Calibre can show blank pages, text overlap, or broken layout sections on Kobo devices. These are not validation errors — they are rendering incompatibilities discovered only when the file is previewed on a Kobo device or in the Kobo desktop app.

3. 100MB file size ceiling

Kobo Writing Life enforces a 100MB maximum upload size, significantly stricter than KDP's 650MB or Apple Books' 2GB limit. Illustrated non-fiction, children's picture books, graphic novels, and books with many embedded photographs commonly exceed this. Images that pass other platforms can push a file over Kobo's limit — resize all body images to their actual display dimensions and target an EPUB size under 80MB to give a margin below the ceiling.

4. BCP 47 language code not in Kobo's catalog allowlist

Kobo's catalog system validates the dc:language field against a specific internal allowlist of BCP 47 codes. Uncommon regional variants — en-IN (English, India), pt-AO (Portuguese, Angola), fr-BE (French, Belgium) — may not appear in Kobo's recognized list, causing catalog processing to fail even when EPUBCheck accepts the language code as valid. Using the primary language subtag (en, pt, fr) without a regional variant resolves most of these.

5. Adult content two-tier distribution blocking

Kobo separates 'listed on Kobo store' from 'distributed to retail partners.' Books with explicit sexual content can pass initial upload and appear in the Kobo store, then be blocked from distribution to retail partners (OverDrive, Indigo, Walmart) without removing the Kobo listing. Authors discover this when their book shows as Live on KWL but never appears at partner retailers.

6. ISBN conflicts from parallel submissions

Authors who distribute to Kobo via both KWL directly and through an aggregator (Draft2Digital or Smashwords) can create duplicate listings under the same ISBN. Kobo flags the conflict and blocks one version — typically the aggregator's — until the duplicate is withdrawn. Resolving this requires contacting both KWL support and the aggregator to identify and remove the non-primary submission.

How to fix it before resubmitting

  1. If your book is stuck in "Processing," contact KWL support directly — include your book title and KWL account email. Request the KEPUB conversion log to identify the specific structural element causing the stall.
  2. Preview your EPUB on a physical Kobo device or the Kobo desktop app before submitting, not just in Kindle Previewer or Calibre. Nickel-specific rendering issues only appear on Kobo's own renderer.
  3. Validate with EPUBCheck before upload. While EPUBCheck won't catch Nickel CSS issues, it catches structural problems that compound with Kobo's KEPUB conversion pipeline.
  4. Resize all body images to their actual display dimensions — target under 1MP per image and keep total EPUB size under 80MB to give a margin below Kobo's 100MB limit.
  5. Use the primary BCP 47 language subtag (en, fr, pt) rather than regional variants unless you've confirmed the regional code is in Kobo's allowlist.
  6. Choose one submission channel for Kobo — either direct via KWL or via an aggregator — not both. Parallel submissions create ISBN conflicts that require manual intervention to resolve.

Common questions

Does Kobo accept EPUB 3?

Yes — EPUB 3 is Kobo's preferred format and generally produces cleaner KEPUB conversion output than EPUB 2. EPUB 2 files are also accepted but may produce a KEPUB with fewer enhanced features.

How is KEPUB different from EPUB?

KEPUB is Kobo's proprietary reading format. It adds Kobo-specific features (chapter progress indicators, Reading Life statistics) and uses a different rendering pipeline. You never interact with KEPUB directly — it's the delivery format used internally by all Kobo apps and devices after your EPUB is converted during the KWL upload process.

Why does my book show as Processing for several days?

Extended processing almost always means the KEPUB conversion stalled on a structural element in your EPUB. Kobo's system doesn't automatically notify you of conversion failures — it just stops processing. Contact KWL support if a book has been in Processing status for more than 72 hours and request the conversion error log.

Validate your EPUB before submitting to Kobo

The free EPUB Validator catches the structural, metadata, and navigation errors that Kobo flags — no signup required.

Validate Your EPUB Free →

For a complete guide to EPUB structure and common errors, see the EPUB formatting guide and the EPUB errors reference.

Common EPUB errors: Empty title tag (Kobo metadata error), Ghost spacing in e-reader previews, Missing NCX navigation table

Publishing checklists: EPUB formatting pre-upload checklist