iBooks: How your EPUB's structure creates what you see in the iBooks app

Learn how the HTML in your EPUB translates into an iBook.

Functional table of contents

iBooks creates a table of contents based on the structure of your EPUB. By providing a complete table of contents, you can enhance the reader's experience.

Table of Contents in an EPUB


You can create items in the navigation document (an XHTML file) using the HTML5 <nav> element. Because each navigation item uses <nav> elements, you must include an epub:type attribute to identify the purpose of each <nav>. These structures include:

  • Table of contents: A table of contents is required for all books.
  • Landmarks: Landmarks are required for fixed-layout books if you don't provide a custom sample.
  • Page-list: A page-list is optional for both formats.


A table of contents is created using a <navMap> element in the NCX (a .ncx file). The iBooks app uses the data in the NCX to build the table of contents, which the customer can access from the navigation bar in the iBooks app.

The navMap element contains navPoints. Each navPoint creates an entry in the table of contents. However, if the navMap contains only one navPoint, iBooks suppresses the list table of contents. This is useful if you're creating a picture book that doesn't need a list table of contents because it doesn't have chapters. iBooks will always create a thumbnail table of contents for a fixed-layout book.

Text starting location

You can choose which page a reader sees first in your book using a text starting location.


The landmarks navigation structure replaces EPUB 2's <guide> element. You need landmarks navigation for fixed-layout books if you don't provide a custom sample. You can also use landmarks to define the start page of a flowing book, which is the first page your readers will see the first time they open your book.

iBooks opens to the first landmark that contains epub:type="ibooks:reader-start-page". If you don't specify that value in the landmarks navigation structure, iBooks opens to the first landmark that contains one of these epub:type attributes:

  • Bodymatter
  • Acknowledgements
  • Dedication
  • Epigraph
  • Foreword
  • Preface
  • Introduction
  • Frontmatter

We recommend that you identify all of the key files in your book and label the first chapter of the book with epub:type="bodymatter." Remember to tag all other epub:type attributes with the appropriate type (such as toc, titlepage, epilogue, preface). Within the landmarks <nav> element, you can use one epub:type attribute of each type. For example, there can't be multiple epub:type="bodymatter" attributes. You can see a full list of the values available for epub:type on the International Digital Publishing Forum (IDPF) website.

Landmarks example:

<nav epub:type="landmarks">
    <li><a href="coverpg.xhtml" epub:type="cover">Cover</a></li>
    <li><a href="titlepg.xhtml" epub:type="titlepage">Title Page</a></li>
    <li><a href="chapter.xhtml" epub:type="bodymatter">Start</a></li>
    <li><a href="bibliog.xhtml" epub:type="bibliography">Bibliography</a></li>


The <guide> element of the OPF (an .opf file) outlines the key parts of the book. For example, you can identify the cover, table of contents, first chapter, index, and so on in the <guide>. We recommend that all books include a <guide>.

You can use any of the reference types from the Open Packaging Format (OPF) spec on the IDPF website. However, you can use only one <reference> element of each type within the <guide> tags. For example, you can't use multiple <reference> elements with a type="text" attribute.

  <reference type="cover" ... />
  <reference type="toc" ... />
  <reference type="text" ... />
  <reference type="epilogue" ... />

When a customer first opens a flowing book (as opposed to a fixed-layout book), iBooks will display the first <reference> element in the <guide> with any of these types:

  • Text
  • Start
  • Acknowledgements
  • Dedication
  • Epigraph
  • Foreword
  • Preface

To designate a start page with higher precedence over the types listed above, use the <reference> element with the type="other.reader-start-page" attribute.

Information about products not manufactured by Apple, or independent websites not controlled or tested by Apple, is provided without recommendation or endorsement. Apple assumes no responsibility with regard to the selection, performance, or use of third-party websites or products. Apple makes no representations regarding third-party website accuracy or reliability. Risks are inherent in the use of the Internet. Contact the vendor for additional information. Other company and product names may be trademarks of their respective owners.

Published Date:Wed Nov 02 01:13:27 GMT 2016