Avoid using CSS solutions for hiding any type of primary content, as they typically don't work as
Setting the display property to hidden to
not render it is the same as telling an assistive technology not to render it
The same applies when setting the visibility property to hidden
The HTML hidden attribute is equivalent to setting the above two properties, so again
effects no change
Absolute positioning content off-screen and using large negative margins are common Web practices,
but are not guaranteed to be supported in reading systems which may not allow positioning outside the
boundaries of the viewport. They also take the choice of what content a user wants access to away
from the user
Clipping content to a single pixel and changing its opacity or color is an equally flawed technique
to rely on
If content is intended for a specific audience, use the techniques that HTML5 and ARIA make it available.
Standard hyperlinks to text alternatives, such as transcripts of audio and video tracks, are more broadly
usable than hidden content.
There are going to be cases where some content does need to be legitimately hidden, such as when including
interactive features and forms.
Ensure that such content is not central to understand the publication, and that progressive enhancement techniques have been followed (i.e., the
interactive nature of the content that requires the visibility to change is not an impediment to
consuming the publication).
The aria-hidden attribute provides a way to selectively hide visible content from an
assistive technology, or expose hidden content. Use this attribute with caution, as toggling content for
assistive technologies can have negative effects if not all user groups are taken into consideration.
Frequently Asked Questions
How come the EPUB Navigation Document uses the hidden attribute to hide content?
The EPUB Navigation Document is a special case. It is declarative markup intended for use by
reading systems to create their own dynamic tables of contents, that happens to be written in
XHTML. It is not intended to be rendered as plain old XHTML, except when embedded in the content
of a publication (i.e., it facilitates two uses, but is not meant to be rendered the same way in
When rendered as XHTML, the hidden attribute will remove access to the hidden nodes
from assistive technologies.