EPUB 3 Accessibility Guidelines

Page Numbers

If an ebook is produced from the same workflow as a print document, print pagination markers should be retained in the document. These markers benefit readers in mixed print/digital environments, such as a classroom, as the page numbers allow a common point of reference between the two editions.

Page break locations can be added to the markup using span and div tags with an epub:type attribute set to the value pagebreak.

The page number associated with each break point can be represented either as text content of the element (Example 1) or embedded as hidden elements using the title attribute to carry the number (Example 2).

When including page numbers, a page-list nav should also be included to faciliate navigation. The page-list nav is used to look up the location of the page break when the reader requests to move to a specific location. (An id attribute must be attached to each element containing a page number to allow creation of the page-list nav.)

Do not use CSS styling to hide page numbers, as this practice typically results in the element not being linkable to, which will prevent navigation using the page list.

When including print pagination references, the package document metadata must also include a dc:source element identifying the print source.


Example 1 — Page number as content element
   <span epub:type="pagebreak" id="page23">23</span>
Example 2 — Page number as empty element
Example 3 — Page number as block element
<div epub:type="pagebreak" id="page25">25</div>
Example 4 — Package document source declaration
      <dc:source id="src-id">


The EPUB Samples Project contains the following publications that include print page numbering:

Compliance References and Standards

Additional Resources

Frequently Asked Questions

Does the page number reflect the page that is ending or the page that is starting?

The page number always reflects the page that is starting.

Does the page break marker placement follow the print position?

No, page break markers are always placed at the start of the page's content, regardless of whether the page number is printed at the top or bottom of the page in the print edition. When a user jumps to a specific page, they want to jump to the start of the content for that page, not the end.

Should I include the page numbers as content or empty elements?

There are pros and cons to each approach.

If you include the page numbers as text content within a span or div, the pages will be more easily accessible to both sighted readers and readers using assistive technologies. This method has been employed in previous DAISY standards. The potential downside, however, is that mainstream reading systems will not provide equivalent functionality to turn off unwanted content, forcing readers to view the page numbers. Additionally, current assistive technologies may not provide content filtering on the epub:type attribute, also interfering with reading.

Page numbers as empty elements are the more traditional mainstream approach, with anchor tags having served this function in the past. Using the title attribute on an empty element, however, potentially complicates the rendering/announcing of the pages. Page numbers that mix alphanumeric characters, for example, could not include both visual and aural alternatives.

Do page numbers really matter anymore?

Yes. Despite the assertions of the futurists and technophiles, print still reigns supreme. As a result, anyone in a mixed print/digital environment — using an assistive technology or not — needs a way synchronize electronic and print content.

Also note that reading is not a solitary activity. From educational settings to reading clubs, the need to coordinate print and digital is very real.

Why is the page-list nav necessary?

Although the page-list nav provides readers a way to manually look up pages, it is primarily intended to facilitate quick-access through the reading system. To implement a feature that can jump a reader to a specific page that they voice or type in, reading system need to be able to map the location quickly without having to randomly load and scan content files. The page-list nav is how these lookups occur.

Where do I put a page number when the page break occurs in the middle of a list?

List often break across pages, with one item ending at the bottom of one and a new item starting at the top of the next. In these cases, it's not possible to locate the page number between the two list items, as it's not valid for a list to contain anything but list items.

The obvious solutions are to either insert the page number as the very last element in the item that ends the page:


or to place it as the very first element in the list item that starts the page


Best practice at this time is to place the page break inside the concluding element, but both methods are acceptable. When included in the trailing list item, an assistive technology should announce the new list item that starts the next page to the reader, whereas if the page number starts the list item the reader may not be made aware they are in a list until reaching the next item.

One practice to avoid is creating a new list item just for the page break. As page breaks are often not visible content, an empty list item will be confusing to all readers.

Can I use a tags for page numbers?

The a element has two specific uses defined in HTML5: for links when the href attribute is present, and for placeholder links when it is not (e.g., a link that might be active in another context or after some interaction by the user). As page breaks are not links, and are never intended to be activated as links, it is semantically incorrect to use them for page breaks.

Revision History

  • Added FAQ entries to clarify page break positioning.
  • Added faq entry on page breaks between list items.
  • Added faq entry on avoiding a tags for page numbers.
  • Removed comment about using CSS to hide page numbers. Hiding should be left to reading systems