<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://knowledgebase.pirho.net/index.php?action=history&amp;feed=atom&amp;title=Accessibility%2C_ARIA%2C_and_Semantic_HTML</id>
	<title>Accessibility, ARIA, and Semantic HTML - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://knowledgebase.pirho.net/index.php?action=history&amp;feed=atom&amp;title=Accessibility%2C_ARIA%2C_and_Semantic_HTML"/>
	<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Accessibility,_ARIA,_and_Semantic_HTML&amp;action=history"/>
	<updated>2026-07-11T13:45:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://knowledgebase.pirho.net/index.php?title=Accessibility,_ARIA,_and_Semantic_HTML&amp;diff=296&amp;oldid=prev</id>
		<title>Dex at 11:13, 14 March 2026</title>
		<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Accessibility,_ARIA,_and_Semantic_HTML&amp;diff=296&amp;oldid=prev"/>
		<updated>2026-03-14T11:13:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:13, 14 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Accessibility, ARIA, and Semantic HTML =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;Summary:&#039;&#039;&#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Accessibility is not a feature, a checklist, or an optional enhancement.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Accessibility is not a feature, a checklist, or an optional enhancement.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It is the discipline of ensuring that meaning, structure, and behaviour remain usable when visual presentation is removed.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It is the discipline of ensuring that meaning, structure, and behaviour remain usable when visual presentation is removed.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-275:rev-296:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Dex</name></author>
	</entry>
	<entry>
		<id>https://knowledgebase.pirho.net/index.php?title=Accessibility,_ARIA,_and_Semantic_HTML&amp;diff=275&amp;oldid=prev</id>
		<title>Dex: Created page with &quot;= Accessibility, ARIA, and Semantic HTML =  &#039;&#039;&#039;Summary:&#039;&#039;&#039; Accessibility is not a feature, a checklist, or an optional enhancement.   It is the discipline of ensuring that meaning, structure, and behaviour remain usable when visual presentation is removed.   This article explains how semantic HTML, ARIA, and backward‑compatible design work together — and why misuse of ARIA often makes accessibility worse, not better.  == Context ==  Accessibility is frequently misund...&quot;</title>
		<link rel="alternate" type="text/html" href="https://knowledgebase.pirho.net/index.php?title=Accessibility,_ARIA,_and_Semantic_HTML&amp;diff=275&amp;oldid=prev"/>
		<updated>2026-03-13T14:06:24Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Accessibility, ARIA, and Semantic HTML =  &amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; Accessibility is not a feature, a checklist, or an optional enhancement.   It is the discipline of ensuring that meaning, structure, and behaviour remain usable when visual presentation is removed.   This article explains how semantic HTML, ARIA, and backward‑compatible design work together — and why misuse of ARIA often makes accessibility worse, not better.  == Context ==  Accessibility is frequently misund...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Accessibility, ARIA, and Semantic HTML =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Accessibility is not a feature, a checklist, or an optional enhancement.  &lt;br /&gt;
It is the discipline of ensuring that meaning, structure, and behaviour remain usable when visual presentation is removed.  &lt;br /&gt;
This article explains how semantic HTML, ARIA, and backward‑compatible design work together — and why misuse of ARIA often makes accessibility worse, not better.&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Accessibility is frequently misunderstood as a niche concern or a regulatory burden.  &lt;br /&gt;
In reality, it is fundamental to how the web works.&lt;br /&gt;
&lt;br /&gt;
Blind users browse the internet every day — independently, professionally, and at speed — using assistive technologies such as screen readers. These tools do not “look” at a page. They interrogate structure, roles, relationships, and behaviour exposed through the browser’s accessibility APIs.&lt;br /&gt;
&lt;br /&gt;
If that structure is missing, misleading, or inconsistent, the experience breaks — regardless of how visually polished the interface may be.&lt;br /&gt;
&lt;br /&gt;
The web was never visual‑first.  &lt;br /&gt;
It was structured first.&lt;br /&gt;
&lt;br /&gt;
== Accessibility and Machine‑Readability: The Purpose ==&lt;br /&gt;
&lt;br /&gt;
Accessibility and machine‑readability are often framed as separate concerns:&lt;br /&gt;
* accessibility as a human accommodation&lt;br /&gt;
* machine‑readability as an SEO or automation problem&lt;br /&gt;
&lt;br /&gt;
This separation is artificial.&lt;br /&gt;
&lt;br /&gt;
Assistive technologies *are machines acting on behalf of humans*.  &lt;br /&gt;
They rely on predictable, unambiguous structure to translate content into speech, braille, or alternative navigation models.&lt;br /&gt;
&lt;br /&gt;
Machine‑readability exists so that:&lt;br /&gt;
* meaning survives translation&lt;br /&gt;
* intent is communicated without sight&lt;br /&gt;
* interaction remains predictable&lt;br /&gt;
* users retain autonomy&lt;br /&gt;
&lt;br /&gt;
If an interface only works when seen, it is incomplete.&lt;br /&gt;
&lt;br /&gt;
== Yes — Blind People Browse the Web ==&lt;br /&gt;
&lt;br /&gt;
This should not be surprising, yet it often is.&lt;br /&gt;
&lt;br /&gt;
Blind users do not consume pages linearly. They:&lt;br /&gt;
* jump between headings&lt;br /&gt;
* navigate by landmarks&lt;br /&gt;
* list links or form controls&lt;br /&gt;
* skim structure rather than content&lt;br /&gt;
* rely on predictable keyboard behaviour&lt;br /&gt;
&lt;br /&gt;
Screen readers query the accessibility tree generated from:&lt;br /&gt;
* native HTML semantics&lt;br /&gt;
* ARIA roles, states, and properties&lt;br /&gt;
* actual browser behaviour&lt;br /&gt;
&lt;br /&gt;
When those signals are wrong, users are forced to guess.  &lt;br /&gt;
For sighted users, this is inconvenient.  &lt;br /&gt;
For blind users, it can be a hard stop.&lt;br /&gt;
&lt;br /&gt;
== What Semantic HTML Really Means ==&lt;br /&gt;
&lt;br /&gt;
Semantic HTML is not about fashionable tags or modern syntax.&lt;br /&gt;
&lt;br /&gt;
It is about meaning.&lt;br /&gt;
&lt;br /&gt;
Long before HTML5 introduced new element names:&lt;br /&gt;
* headings conveyed hierarchy&lt;br /&gt;
* lists conveyed grouping&lt;br /&gt;
* links conveyed navigation&lt;br /&gt;
* forms conveyed interaction&lt;br /&gt;
* tables conveyed data relationships&lt;br /&gt;
&lt;br /&gt;
Assistive technologies were built around these concepts — and still rely on them.&lt;br /&gt;
&lt;br /&gt;
Semantics live in:&lt;br /&gt;
* structure&lt;br /&gt;
* relationships&lt;br /&gt;
* behaviour&lt;br /&gt;
&lt;br /&gt;
Not in tag names alone.&lt;br /&gt;
&lt;br /&gt;
A correctly structured document using traditional elements is often more accessible than a visually modern layout with broken or overridden semantics.&lt;br /&gt;
&lt;br /&gt;
== A Deliberate Strategy: Backward‑Compatible Semantic HTML with ARIA ==&lt;br /&gt;
&lt;br /&gt;
A highly effective accessibility strategy is to:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use a strict, well‑understood subset of HTML4/XHTML features, apply clear semantic structure, and layer ARIA roles only where behaviour genuinely requires it.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
This approach prioritises:&lt;br /&gt;
* predictable browser behaviour&lt;br /&gt;
* stable accessibility API mappings&lt;br /&gt;
* broad assistive technology support&lt;br /&gt;
* graceful degradation across user agents&lt;br /&gt;
&lt;br /&gt;
Accessibility improves through consistency, not novelty.&lt;br /&gt;
&lt;br /&gt;
Backward compatibility is not a technical compromise — it is an accessibility feature.&lt;br /&gt;
&lt;br /&gt;
Users do not choose:&lt;br /&gt;
* their devices&lt;br /&gt;
* their operating systems&lt;br /&gt;
* their assistive technologies&lt;br /&gt;
* their upgrade timelines&lt;br /&gt;
&lt;br /&gt;
Designing for older capabilities is not supporting the past.  &lt;br /&gt;
It is refusing to exclude users in the present.&lt;br /&gt;
&lt;br /&gt;
== ARIA: Purpose, Not Decoration ==&lt;br /&gt;
&lt;br /&gt;
ARIA exists to solve a specific problem:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How do we expose meaning, role, and state when native HTML semantics are insufficient or unavailable?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
It was designed for:&lt;br /&gt;
* complex widgets (trees, grids, tabsets)&lt;br /&gt;
* dynamic state changes&lt;br /&gt;
* rich client interfaces where no native element exists&lt;br /&gt;
&lt;br /&gt;
ARIA was not designed to:&lt;br /&gt;
* replace semantic HTML&lt;br /&gt;
* fix poor structure&lt;br /&gt;
* override native behaviour&lt;br /&gt;
* decorate generic containers&lt;br /&gt;
&lt;br /&gt;
ARIA describes intent — it does not create it.&lt;br /&gt;
&lt;br /&gt;
== The First Rule of ARIA ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you can use a native HTML element, do not use ARIA.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Native elements provide:&lt;br /&gt;
* built‑in keyboard interaction&lt;br /&gt;
* correct focus management&lt;br /&gt;
* reliable accessibility API mappings&lt;br /&gt;
* consistent behaviour across platforms&lt;br /&gt;
&lt;br /&gt;
Once a native element is replaced with a generic container and a role, the developer becomes responsible for reproducing *all* of that behaviour.&lt;br /&gt;
&lt;br /&gt;
Most implementations do not.&lt;br /&gt;
&lt;br /&gt;
== Common ARIA Misuse Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Div Soup with Roles ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div role=&amp;quot;button&amp;quot;&amp;gt;Save&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This announces as a button, but lacks:&lt;br /&gt;
* keyboard activation&lt;br /&gt;
* focus handling&lt;br /&gt;
* disabled states&lt;br /&gt;
* expected interaction cues&lt;br /&gt;
&lt;br /&gt;
It sounds correct — but behaves incorrectly.&lt;br /&gt;
&lt;br /&gt;
=== Overriding Native Semantics ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;button role=&amp;quot;link&amp;quot;&amp;gt;Read more&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overriding native semantics:&lt;br /&gt;
* confuses assistive technologies&lt;br /&gt;
* introduces inconsistent behaviour&lt;br /&gt;
* provides no functional benefit&lt;br /&gt;
&lt;br /&gt;
If it behaves like a link, use a link.  &lt;br /&gt;
If it behaves like a button, use a button.&lt;br /&gt;
&lt;br /&gt;
=== Partial ARIA Implementations ===&lt;br /&gt;
&lt;br /&gt;
ARIA roles are contracts, not labels.&lt;br /&gt;
&lt;br /&gt;
For example, `role=&amp;quot;tab&amp;quot;` implies:&lt;br /&gt;
* keyboard navigation rules&lt;br /&gt;
* selection states&lt;br /&gt;
* relationships to a tablist and panels&lt;br /&gt;
&lt;br /&gt;
Applying the role without the full interaction model breaks user expectations.&lt;br /&gt;
&lt;br /&gt;
=== ARIA as Decoration ===&lt;br /&gt;
&lt;br /&gt;
Adding ARIA “just in case” introduces noise:&lt;br /&gt;
* redundant labels&lt;br /&gt;
* duplicated roles&lt;br /&gt;
* misleading announcements&lt;br /&gt;
&lt;br /&gt;
Missing information is better than incorrect information.&lt;br /&gt;
&lt;br /&gt;
== Why ARIA Misuse Is Worse Than No ARIA ==&lt;br /&gt;
&lt;br /&gt;
ARIA creates expectations.&lt;br /&gt;
&lt;br /&gt;
When those expectations are broken:&lt;br /&gt;
* navigation becomes unpredictable&lt;br /&gt;
* trust is lost&lt;br /&gt;
* users must relearn every interface&lt;br /&gt;
&lt;br /&gt;
Misleading accessibility signals are more harmful than absent ones.&lt;br /&gt;
&lt;br /&gt;
ARIA that lies about behaviour actively damages usability.&lt;br /&gt;
&lt;br /&gt;
== ARIA Is Descriptive, Not Corrective ==&lt;br /&gt;
&lt;br /&gt;
This is the critical mental model:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ARIA describes what is already true — it does not make it true.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
If an element:&lt;br /&gt;
* is not keyboard accessible&lt;br /&gt;
* does not manage focus&lt;br /&gt;
* does not behave correctly&lt;br /&gt;
&lt;br /&gt;
Then adding an ARIA role does not fix it.&lt;br /&gt;
&lt;br /&gt;
It misrepresents it.&lt;br /&gt;
&lt;br /&gt;
== Progressive Enhancement and Predictable Behaviour ==&lt;br /&gt;
&lt;br /&gt;
Progressive enhancement is an accessibility strategy.&lt;br /&gt;
&lt;br /&gt;
By:&lt;br /&gt;
* starting with reliable structure&lt;br /&gt;
* layering behaviour carefully&lt;br /&gt;
* avoiding assumptions about capability&lt;br /&gt;
&lt;br /&gt;
Interfaces remain usable across:&lt;br /&gt;
* modern and legacy browsers&lt;br /&gt;
* diverse assistive technologies&lt;br /&gt;
* constrained environments&lt;br /&gt;
&lt;br /&gt;
Predictability is more important than cleverness.&lt;br /&gt;
&lt;br /&gt;
== Design and Architecture Considerations ==&lt;br /&gt;
&lt;br /&gt;
Good accessibility emerges from early design decisions:&lt;br /&gt;
* semantic structure first&lt;br /&gt;
* behaviour before appearance&lt;br /&gt;
* consistency over novelty&lt;br /&gt;
&lt;br /&gt;
Component libraries, frameworks, and abstractions should:&lt;br /&gt;
* honour native behaviour&lt;br /&gt;
* avoid unnecessary role overrides&lt;br /&gt;
* make accessibility the default, not an add‑on&lt;br /&gt;
&lt;br /&gt;
Accessibility debt compounds quickly — and is expensive to unwind.&lt;br /&gt;
&lt;br /&gt;
== Practical Guidance ==&lt;br /&gt;
&lt;br /&gt;
* Use native HTML elements wherever possible&lt;br /&gt;
* Let the browser expose semantics for you&lt;br /&gt;
* Introduce ARIA only when:&lt;br /&gt;
  * no native element exists&lt;br /&gt;
  * behaviour is fully implemented&lt;br /&gt;
  * the interaction pattern is well understood&lt;br /&gt;
* Test with a keyboard and a screen reader&lt;br /&gt;
* Prefer boring, predictable solutions&lt;br /&gt;
&lt;br /&gt;
== The Quiet Truth ==&lt;br /&gt;
&lt;br /&gt;
Most accessibility failures are not caused by lack of ARIA.&lt;br /&gt;
&lt;br /&gt;
They are caused by:&lt;br /&gt;
* ignoring structure&lt;br /&gt;
* fighting the browser&lt;br /&gt;
* prioritising visuals over interaction models&lt;br /&gt;
&lt;br /&gt;
ARIA does not fix that.&lt;br /&gt;
&lt;br /&gt;
Good engineering does.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* Progressive Enhancement&lt;br /&gt;
* Structured Data&lt;br /&gt;
* UI Controls and Widgets&lt;br /&gt;
* Machine‑Readable HTML Technologies&lt;/div&gt;</summary>
		<author><name>Dex</name></author>
	</entry>
</feed>