← toolkit.bot

EPUB NCX vs Nav Document: What They Are and Which to Use

June 12, 2026  ·  7 min read

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.

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

FeatureNCX (EPUB 2)Nav document (EPUB 3)
File formatCustom XMLStandard XHTML
AccessibilityLimitedFull ARIA + WCAG support
Nested TOCSupported via nested navPointSupported via nested ol
Page listpageTarget elementnav epub:type="page-list"
LandmarksnavListnav epub:type="landmarks"
EPUB versionEPUB 2 (obsolete in EPUB 3)EPUB 3 (required)
Readable in browserNoYes (valid HTML)

Compatibility and when to include both

For maximum compatibility in 2026:

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.

Need an EPUB with proper navigation?
toolkit.bot converts PDF to EPUB3 with compliant nav document and NCX fallback — free, no account required.