How to Make an EPUB Accessible

An accessible EPUB needs more than a valid ZIP and OPF. Its content, reading order, navigation and text alternatives must work for readers using assistive technology. This guide is a technical starting point based on EPUB Accessibility and WCAG; it does not certify a book or determine its legal obligations.

What "accessible EPUB" means in practice

Two specs are relevant:

  • EPUB Accessibility 1.1 — the EPUB-specific spec. Requires structured navigation, a declared reading order, accessibility metadata in the package document, and certain semantic markup.
  • WCAG 2.1 Level AA — the web content spec, referenced by EPUB Accessibility 1.1. Covers text alternatives, contrast, semantic structure, and similar web concepts applied to EPUB content.

Use those specifications as a checklist, then test the actual book. The five areas below are a starting point, not the complete set of conformance requirements.

Five areas to review first

1. Alt text on every meaningful image

Every <img> that conveys information needs an alt attribute describing what it shows. Decorative images (spacers, dividers) get alt="" — empty but present. A missing alt attribute needs review; an empty one can correctly mark a decorative image.

Cover images are special. The cover also needs alt text, but most tools leave it empty. The description should be something like "Book cover: [title] by [author], showing [brief visual description]".

2. Language attribute on the root element

The <html> element of every content document needs a lang attribute (e.g. lang="en-US"). Without it, screen readers don't know which pronunciation to use. The metadata editor sets the document-level language, but individual XHTML files need the attribute on the <html> tag too.

3. Logical heading structure

Headings should step from h1 to h2 to h3 without skipping levels. A chapter title is h1 (or h2 if the book title takes the h1); a scene or subsection is the next level down. Don't use h3 directly under h1 to make it look smaller — screen-reader users navigate by heading level, and skipped levels confuse the outline.

4. Semantic markup, not div-soup

Use <section>, <nav>, <aside>, <blockquote>, and <figure> for what they mean. Not every block needs to be a <div> with a class. EPUB 3 also has specific semantic attributes like epub:type="chapter", epub:type="footnote", and epub:type="titlepage" — use them on the corresponding elements so assistive tech knows the role.

5. Accessibility metadata in the OPF

The package document (content.opf) can describe the features you have actually verified. Do not copy declarations for features your book does not provide; an example to adapt is:

<meta property="schema:accessMode">textual</meta>
<meta property="schema:accessMode">visual</meta>
<meta property="schema:accessibilityFeature">alternativeText</meta>
<meta property="schema:accessibilityFeature">structuralNavigation</meta>
<meta property="schema:accessibilityHazard">none</meta>
<meta property="schema:accessibilitySummary">Describe the accessibility features and known limitations verified for this book.</meta>

These tell stores and readers what accessibility features the book provides. Benetech Bookshare, educational publishers, and an increasing number of trade retailers now require them.

Use structural validation and accessibility testing together

Run the EPUB validator first. The Epublys deep scan flags images without an alt attribute and chapter documents without a language declaration. It does not inspect accessibility metadata or certify WCAG conformance. Use full EPUBCheck for conformance, an accessibility checker for additional issues, and manual review with assistive technology.

What it does not catch: whether your alt text is actually descriptive, whether your heading structure is logical, whether the reading order matches the visual order, or whether color contrast meets WCAG. Those require human review. A clean validator pass is necessary, not sufficient.

Test with a real screen reader

Five minutes of screen-reader testing catches issues no automatic tool will:

  • macOS: open the EPUB in Apple Books → Cmd+F5 to enable VoiceOver. Read the first chapter.
  • Windows: download NVDA (free) from nvaccess.org. Open the EPUB in an EPUB-supporting reader like Thorium. Insert+Down Arrow to start reading.
  • iOS: Settings → Accessibility → VoiceOver. Open the book in Apple Books. Swipe right to advance.

Listen for: does each heading announce as a heading? Does each image's alt text make sense out of context? Is the reading order natural? This takes minutes and catches issues that would cost you a store rejection.

When the author isn't a developer

If you write in Word, Scrivener, or Pages and compile to EPUB, most of this happens automatically if you use heading styles, add alt text in the image dialog, and set the document language. Failures almost always come from skipping one of those in the source document. Fix it there, not in the exported EPUB — trying to edit XHTML in a compiled EPUB is a fast way to break the file.

Related

Try it now — free

Free online EPUB checker and validator — no signup. Catch the structural, well-formedness, and reference errors that get books rejected from KDP and Apple Books.

EPUB Validator & Checker →

Found this helpful? Share it