Hiding Semantics with the presentation Role
The presentation role removes implicit ARIA semantics from the accessibility tree while keeping content visible.
This practice is documented in detail at Hiding Semantics with the presentation Role - WAI-ARIA APG . Below we provide additional context specific to our pattern implementations.
Overview
The presentation role (and its synonym none) removes the implicit ARIA semantics of an element from the accessibility tree. This can be useful when an elementโs visual appearance doesnโt match its semantic meaning, but it must be used carefully to avoid hiding important information from assistive technology users.
When to Use presentation/none
Decorative Images
Images that donโt convey content:
<img src="decorative-border.png" alt="" /> <img src="decorative-border.png" role="presentation" /> Layout Tables
Tables used only for visual layout:
<table role="presentation">
<tr>
<td>Left column content</td>
<td>Right column content</td>
</tr>
</table>
Redundant Container Elements
When a parent elementโs role is redundant:
<div role="tablist">
<ul role="presentation">
<li role="presentation">
<button role="tab">Tab 1</button>
</li>
<li role="presentation">
<button role="tab">Tab 2</button>
</li>
</ul>
</div> presentation vs none
These roles are synonymous:
<div role="presentation">...</div>
<div role="none">...</div> role="none" was introduced to clarify intent. role="presentation" is more widely supported in older assistive technology.
What presentation/none Removes
| Element | Original Role | After presentation |
|---|---|---|
<table> | table | none |
<ul> | list | none |
<li> | listitem | none |
<img> | img | none |
Important: The role only affects the element itself, not its descendants (except for required children).
Required Children Are Also Hidden
Some roles have required children that are automatically hidden:
<table role="presentation">
<tr><td>...</td></tr>
</table> <ul role="presentation">
<li>...</li>
</ul> What presentation/none Cannot Hide
Focusable Elements
If an element is focusable, role="presentation" is ignored:
<button role="presentation" tabindex="0">Still a button</button> <a href="/page" role="presentation">Still a link</a> Elements with Global ARIA Attributes
If aria-label, aria-describedby, or other global ARIA attributes are present:
<img role="presentation" aria-label="Important info" /> Implementation Tips
Hiding Decorative Icon Buttons
<button type="button" aria-label="Close">
<svg aria-hidden="true">...</svg>
</button> Use aria-hidden="true" instead of role="presentation" for content that should be completely hidden from assistive technology.
Hiding Redundant Text
<button>
<svg aria-hidden="true">...</svg>
<span class="visually-hidden">Close</span>
Close
</button> Common Pitfalls
Hiding Meaningful Content
<img src="chart.png" role="presentation" alt="Sales chart" /> <img src="chart.png" alt="Sales chart showing 20% growth" /> Using presentation on Interactive Elements
<button role="presentation">Click me</button> Forgetting aria-hidden for Complete Hiding
<div role="presentation">Text content</div> <div aria-hidden="true">Text content</div> Use aria-hidden="true" when you want to hide both the element and its content from assistive technology.