← All guides
Every finding, explained

Missing ARIA roles - epub:type without a role

what the file tells EPUB but not the screen reader

EPUB has its own vocabulary for what a thing is: epub:type="toc", "footnote", "chapter". Assistive technology mostly does not read it. The parallel vocabulary it does read is DPUB-ARIA, so an element that declares itself to EPUB and not to ARIA is invisible as structure to the reader who most needs the structure.

The hand-fix

Add the matching role alongside the epub:type. The published mapping pairs them one to one for the common cases.

<nav epub:type="toc" role="doc-toc">
<aside epub:type="footnote" role="doc-footnote">
<section epub:type="chapter" role="doc-chapter">

The catch that costs people a day

A role is only valid where ARIA in HTML permits it on that element. doc-toc belongs on the nav, not on a link inside it; putting it in the wrong place makes the file fail validation, which is worse than the missing role you set out to fix.

What Reflow does

Writes the matching role for every marked element, and only where the per-element permission table allows it. That table was earned the hard way: an early version put doc-toc on a link, the EPUBCheck delivery gate refused the file exactly as designed, and the table was corrected.