EPUB NCX vs Nav Document: What They Are and Which to Use
If you've opened an EPUB file and seen a toc.ncx file, or noticed a nav.xhtml with a nav epub:type="toc" element, you've encountered the two generations of EPUB navigation. This guide explains what each is, how they differ, and what to include in 2026.
What is the NCX?
The NCX (Navigation Control for XML, defined by the DAISY Consortium) was the navigation format for EPUB 2. It's an XML file — typically named toc.ncx — that defines the table of contents and page list for the ebook.
A minimal toc.ncx looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
<head>
<meta name="dtb:uid" content="urn:uuid:YOUR-BOOK-UUID"/>
<meta name="dtb:depth" content="2"/>
</head>
<docTitle><text>My Book</text></docTitle>
<navMap>
<navPoint id="np1" playOrder="1">
<navLabel><text>Chapter 1</text></navLabel>
<content src="chapter01.xhtml"/>
</navPoint>
<navPoint id="np2" playOrder="2">
<navLabel><text>Chapter 2</text></navLabel>
<content src="chapter02.xhtml"/>
</navPoint>
</navMap>
</ncx>
The NCX was declared obsolete in EPUB 3, though it is still allowed for backwards compatibility. Many older e-readers (first-gen Kindle, early Sony Readers) only understand the NCX.
The EPUB 3 nav document
EPUB 3 replaced the NCX with a navigation document — a standard XHTML file that uses semantic epub:type attributes to mark navigation structures. This approach uses HTML5 instead of a custom XML format and is more accessible and flexible.
A minimal EPUB 3 nav document:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:epub="http://www.idpf.org/2007/ops">
<head><title>Table of Contents</title></head>
<body>
<nav epub:type="toc" id="toc">
<h1>Contents</h1>
<ol>
<li><a href="chapter01.xhtml">Chapter 1</a></li>
<li><a href="chapter02.xhtml">Chapter 2</a></li>
</ol>
</nav>
<nav epub:type="landmarks" hidden="">
<ol>
<li><a epub:type="toc" href="#toc">Table of Contents</a></li>
<li><a epub:type="bodymatter" href="chapter01.xhtml">Begin Reading</a></li>
</ol>
</nav>
</body>
</html>
The nav document is declared in the OPF manifest with properties="nav":
<item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
NCX vs nav: key differences
| Feature | NCX (EPUB 2) | Nav document (EPUB 3) |
|---|---|---|
| File format | Custom XML | Standard XHTML |
| Accessibility | Limited | Full ARIA + WCAG support |
| Nested TOC | Supported via nested navPoint | Supported via nested ol |
| Page list | pageTarget element | nav epub:type="page-list" |
| Landmarks | navList | nav epub:type="landmarks" |
| EPUB version | EPUB 2 (obsolete in EPUB 3) | EPUB 3 (required) |
| Readable in browser | No | Yes (valid HTML) |
Compatibility and when to include both
For maximum compatibility in 2026:
- Always include a nav document — required for EPUB 3, read by all modern readers (Kindle, Kobo, Apple Books, Thorium, Calibre).
- Include a toc.ncx for older device compatibility — first-gen Kindles and some library systems still rely on it. It's optional in EPUB 3 but harmless to include.
To include a toc.ncx in an EPUB 3 package, declare it in the OPF manifest and spine:
<!-- In manifest -->
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
<!-- In spine -->
<spine toc="ncx">
EPUBCheck will warn about the NCX in strict EPUB 3 validation mode but will not fail — the file is permitted for backwards compatibility.
Does toolkit.bot output include both?
Yes. EPUBs produced by toolkit.bot include both a compliant nav document (for EPUB 3 readers) and a toc.ncx (for legacy compatibility). The output passes EPUBCheck validation and EPUB Accessibility 1.1 checks.
FAQ
Is the NCX required in EPUB 3?
No. The nav document is required; the NCX is optional. Include the NCX if you need to support very old e-reader firmware.
Can I have both nav document and NCX in the same EPUB 3 file?
Yes. EPUB 3 allows both. The nav document takes precedence for EPUB 3 readers; the NCX is used as a fallback by EPUB 2-only readers.
What is the "landmarks" nav?
The landmarks nav (epub:type="landmarks") provides access points like "cover", "toc", "bodymatter", and "backmatter". Screen readers and reading system navigation menus use it to jump directly to major sections. It's optional but recommended for accessibility.
What is the page-list nav?
The page-list nav (epub:type="page-list") maps EPUB positions to the original print page numbers. Used by reading systems to show "page 47 of 312" and by students or readers citing specific pages.
toolkit.bot converts PDF to EPUB3 with compliant nav document and NCX fallback — free, no account required.