How to Preserve Print Page Numbers in a Reflowable EPUB
Map print pagination into EPUB pagebreak markers, a page-list, and source metadata without forcing print pages onto a reflowable screen.

To preserve print page numbers in a reflowable EPUB, record each print boundary as a semantic pagebreak marker, link those markers from a page-list in the EPUB navigation document, and identify the edition that supplied the pagination. Do not recreate printed pages with fixed heights, forced screen breaks, or page numbers copied into paragraph text. A reflowable screen has no stable visual page count; the preserved numbers are references back to a specific static source.
This distinction matters for textbooks, scholarly books, book clubs, classroom editions, and any translated publication whose readers cite the print edition. It also prevents a common conversion mistake: deleting every OCR page number before deciding whether the pagination is meaningful.
Decide Which Pagination You Are Preserving
Page number 42 is useful only if the reader knows what it refers to. A hardcover, paperback, revised edition, and translated edition can place the same sentence on different pages. Before editing the EPUB, freeze a pagination source:
- exact title and edition statement;
- publisher and publication date;
- ISBN or another stable source identifier when available;
- front-matter numbering policy;
- every printed page label, including intentionally blank pages; and
- missing, duplicated, unnumbered, or misnumbered leaves.
Do not silently combine page labels from two editions. If your EPUB follows a 2024 paperback, a reader holding the 2018 hardcover might still land on the wrong passage even though both books call it “page 42.”
Create a page inventory before touching the markup. One row per printed boundary is enough:
| Print label | Source leaf | EPUB target | Content at boundary | Decision |
|---|---|---|---|---|
| i | scan 001 | frontmatter.xhtml#page-i | Title page | Keep Roman numeral |
| ii | scan 002 | frontmatter.xhtml#page-ii | Edition note | Keep Roman numeral |
| 1 | scan 003 | chapter.xhtml#page-1 | Chapter opening | Start Arabic sequence |
| 2 | scan 004 | chapter.xhtml#page-2 | Boundary inside a paragraph | Inline marker |
| 3 | scan 005 | chapter.xhtml#page-3 | Intentionally blank printed page | Keep marker, no filler |
| 4 | scan 006 | chapter.xhtml#page-4 | Text resumes | Keep sequence |
The inventory is the source of truth. OCR output is evidence to compare, not the authority: OCR can confuse 1 with I, attach a running page number to body text, or omit a blank page completely.
Use Pagebreak Markers, Not Visual Page Boxes
The EPUB 3.3 specification shows page boundaries as elements with page-break semantics, a stable identifier, and an accessible label. A minimal marker looks like this:
<span id="page-42" epub:type="pagebreak" role="doc-pagebreak" aria-label="42" />
Place the marker at the exact point where the print page begins. That may be before a heading, between paragraphs, or inside a paragraph:
<p>
The argument begins on the previous print page.
<span
id="page-42"
epub:type="pagebreak"
role="doc-pagebreak"
aria-label="42"
/>
This sentence begins on print page 42.
</p>
Do not move the marker to the nearest heading merely because the markup looks tidier. That makes citations imprecise. Do not put visible text such as [42] into the paragraph unless the edition explicitly requires visible page labels; it can interrupt reading and may be announced twice by assistive technology.
Also avoid CSS such as break-before: page on every marker. A print boundary is metadata about the source, not an instruction to force a new screen. On a small phone, print page 42 might span several screens. On a large display, parts of pages 42 and 43 might appear together. That is normal reflow.
Add One Page List to the Navigation Document
The EPUB navigation rules define page-list as navigation to static page boundaries. It is optional, may occur at most once, and should use a single ordered list rather than nested sections.
<nav epub:type="page-list" hidden="hidden">
<h2>Print pages</h2>
<ol>
<li><a href="frontmatter.xhtml#page-i">i</a></li>
<li><a href="frontmatter.xhtml#page-ii">ii</a></li>
<li><a href="chapter.xhtml#page-1">1</a></li>
<li><a href="chapter.xhtml#page-2">2</a></li>
<li><a href="chapter.xhtml#page-3">3</a></li>
<li><a href="chapter.xhtml#page-4">4</a></li>
</ol>
</nav>
The hidden attribute keeps the page list out of the normal spine rendering when the navigation document is displayed as content. It does not erase the navigation data a reading system may expose through its own interface.
Every link must resolve to a unique marker. The labels should match the source exactly: do not turn Roman xii into Arabic 12, fill a source gap by renumbering later pages, or reset the sequence because the translated text created a new chapter boundary.
Identify the Source of Pagination
When the EPUB adapts a known print edition, identify that source in package metadata. For a new EPUB, use the pageBreakSource property. EPUB 3.4 uses this property in place of the older dc:source plus source-of refinement:
<meta property="pageBreakSource">
urn:isbn:9780000000000
</meta>
<meta property="schema:accessibilityFeature">
pageBreakMarkers
</meta>
<meta property="schema:accessibilityFeature">
pageNavigation
</meta>
Use the real identifier of the edition that supplied the boundaries. Do not copy the EPUB's own ISBN into pageBreakSource merely to populate the field. If the source has no ISBN, use an honest text description that identifies the edition as clearly as possible. If the markers belong only to a digital edition and have no static source, use none rather than inventing one.
The EPUB 3.3 dc:source plus source-of: pagination method remains valid for existing files, but the W3C accessibility techniques strongly advise using pageBreakSource for new publications. The accessibility feature values separately declare that the book contains page-break markers and page-list navigation.
The metadata, markers, and page list have different jobs:
| Component | What it establishes |
|---|---|
pageBreakSource | Which static edition supplied the pagination |
pagebreak marker | Where a particular print boundary occurs in the content |
aria-label | The human-readable page label for that boundary |
page-list link | A navigable index of the preserved boundaries |
| Separate page inventory | The editorial audit trail from source leaf to EPUB |
None of these components should be inferred from screen positions after the EPUB is built.
Handle Front Matter, Blank Pages, and Gaps Deliberately
Roman-numbered front matter
Preserve the labels readers see in the source: i, ii, iii, and so on. Keep their identifiers unique (page-i, page-ii) and place them before the body sequence. Do not convert them to Arabic labels in the page list.
Intentionally blank pages
A blank print page can still matter because it explains why the next numbered page jumps. Record it in the inventory. In a reflowable EPUB, a zero-content marker can preserve that boundary without manufacturing a blank screen. If the blank page carries a required notice such as “This page intentionally left blank,” encode the notice as content; otherwise, do not invent it.
Plates and unnumbered leaves
Do not assign a number the source does not use. Record an unnumbered plate in the inventory and give it normal structural navigation when useful, but keep it out of the numbered page list unless the publication contract defines a label.
Missing pages
If the source scan is incomplete, stop and resolve the missing leaf before release. A gap caused by an intentionally blank page is not the same as an absent scan. The page inventory should distinguish them.
Duplicate or erroneous labels
Some sources contain repeated or incorrect printed numbers. Preserve the source label only after deciding how readers are expected to cite it. Because HTML IDs must remain unique, identifiers may need a disambiguating suffix even when two visible labels are the same. Document the anomaly rather than silently “correcting” the edition.
Translation Changes Text Length, Not the Source Boundaries
A translation can expand or contract enough that a marker falls in a very different visual place. Do not redistribute markers at equal word intervals. Each marker belongs to the translated counterpart of the source content that follows that boundary.
Use aligned source and target segments to migrate markers:
- freeze the source page inventory and pagebreak IDs;
- align each source boundary with the smallest meaningful text span after it;
- locate the translated counterpart of that span;
- place the same page label immediately before the counterpart;
- review boundaries inside merged, split, or reordered sentences manually; and
- compare opening, middle, and final boundaries against the source edition.
If a translator combines two source paragraphs, the page marker may sit inside the resulting target paragraph. That is better than moving it to a cleaner but false location. If content is intentionally omitted, record the decision; do not attach its page marker to unrelated text.
Page numbers created by the translated edition itself are a separate pagination system. Do not replace source-edition markers with new paperback proofs unless the release contract explicitly changes the cited pagination source.
A Reproducible Pagination Fixture
We built a six-boundary synthetic EPUB called Field Notes with Print Pages. It includes Roman front matter, Arabic body pages, a boundary inside a paragraph, and an intentionally blank print page. The fixture is CC0 and is not presented as a BookTranslator product output or a reading-system benchmark.
You can inspect the fixture notes, the page inventory, the deterministic generator, and the generated EPUB.
The exact committed EPUB has SHA-256 9d00f9d0afd9c669b1734b24ed17d00752a5f02f718f338b976e994bc05d22d8. On September 20, 2026, it passed EPUBCheck 5.4.0 under EPUB 3.4 rules with 0 fatal errors, 0 errors, 0 warnings, and 0 informational messages; the validation report records the validator version, exact file hash, command, and result.
That result proves only machine-checkable package conformance. We did not use it to claim that every reading system exposes the page list, that every screen reader announces markers identically, or that the fixture represents a translated commercial book.
Validate Structure, Then Test the Actual Reading Systems
Run EPUBCheck on the exact file you plan to distribute. Then test the same hash in the reading systems required by the release. Record the app or device version and actual result rather than assuming support from the EPUB specification.
For page navigation, check all of the following:
- the page list, if exposed, opens the first Roman page, first body page, a middle page, and final page;
- every target exists once and lands at the intended source boundary;
- text immediately before and after each sampled marker matches the page inventory;
- increasing font size does not reveal forced blank screens or clipped content;
- search and text selection still work across inline markers;
- a screen reader does not announce meaningless duplicate labels;
- front-matter labels remain Roman and body labels remain Arabic; and
- changing the EPUB after testing triggers a new hash and a complete retest.
The EPUB translation QA checklist covers package, navigation, metadata, accessibility, and content review. The cross-reader EPUB test guide separates conformance from platform behavior.
Where Print-Page Preservation Fits in a Book Workflow
If the source is a scan, first build a trustworthy page inventory, OCR the content, and reconstruct a valid EPUB using the scan-to-reflowable-EPUB workflow. Preserve the source page mapping while you correct OCR; removing every header and page number without an inventory destroys evidence you may need later.
If you are translating an existing EPUB, inspect it before translation. A source EPUB may already have a correct page list, have only visible page numbers copied into text, or have no print pagination at all. Do not invent source-edition markers when none are available. After the translation is complete, migrate and review the existing boundaries instead of regenerating them from target word counts.
When the file is structurally sound and you have permission to process it, BookTranslator can handle the language transformation through the EPUB translator. The final page mapping still requires editorial QA because a translation system cannot decide which print edition your readers intend to cite.
Release Gate
Do not publish the EPUB until:
- one exact static edition is named as the pagination source;
- the page inventory accounts for front matter, body pages, blanks, plates, gaps, and anomalies;
- every preserved boundary has one unique marker and the correct accessible label;
- the page list links to every intended marker exactly once;
- no CSS forces print pagination onto reflowable screens;
- translated markers follow aligned content rather than equal target-text intervals;
- EPUBCheck has no unresolved release-blocking findings;
- required reading systems have been tested against the exact final hash; and
- the production record preserves the inventory, validation report, device evidence, and reviewer decisions.
Print page numbers are useful when they remain honest references to a known edition. Preserve the mapping—not the physical geometry of paper—and the EPUB can stay reflowable while still supporting citations, classrooms, research, and accessible page navigation.
Matsalwa lama fambelanaka





