<iframe> elements embed separate documents inside a page. For screen reader users, each frame must expose a clear, unique accessible name so it can be identified and navigated reliably.
In practice, this name is most often provided using the title attribute, but it is not the only possible source.
What Is an “Accessible Name”?
An accessible name is the text that assistive technologies (like screen readers) use to identify an element.
When a screen reader encounters a frame, it does not infer meaning from layout or visuals.
Instead, it reads the element’s accessible name from the browser’s accessibility tree, a structured representation of the page built from the HTML and ARIA markup. If that name is missing, empty, or duplicated, users cannot reliably tell frames apart.
“Programmatically determinable” simply means: The name can be read directly from the markup by assistive technologies, not guessed from visual context.
WCAG Success Criterion
WCAG 4.1.2 — Name, Role, Value
Frames are considered user interface components.
Each one must expose a name that assistive technologies can determine programmatically.
How the Accessible Name Is Calculated for <iframe>
The accessible name for an <iframe> is computed using the Accessible Name and Description Computation (AccName) algorithm.
For frames, the common name sources are evaluated in this order:
aria-labelledbyaria-labeltitle
If none of these provide a non-empty value, the frame has no accessible name and fails WCAG 4.1.2.
⚠️ The title attribute is the most common and recommended approach, but it is not the only valid one.
Correct Usage
Unique, Descriptive Accessible Names
<iframe src="cart.html" title="Shopping cart"></iframe>
<iframe src="payment.html" title="Payment details"></iframe>
Each frame:
- Has a non-empty accessible name
- Uses wording that describes its content
- Is distinguishable from other frames on the page
Incorrect Usage
Duplicate Accessible Names
<iframe src="video1.html" title="Video player"></iframe>
<iframe src="video2.html" title="Video player"></iframe>
Screen readers may announce:
- “Video player, frame”
- “Video player, frame”
Users cannot tell which frame is which.
Missing or Meaningless Names
<iframe src="report.html"></iframe>
<iframe src="report.html" title="iframe"></iframe>
Assistive technologies may fall back to announcing:
- “frame”
- a URL
- a file name
None of these communicates purpose.
Best Practices for Writing Frame Names
A good frame name should be:
- Brief – easy to scan in navigation lists
- Descriptive – explains what the embedded document contains
- Unique – no duplicates within the page
- Meaningful – not generic placeholders
Practical Guidance
- Replace placeholders like “untitled page”
- Put unique information first
- Avoid repeating brand names across multiple frames
Example:
<iframe title="Order history – Acme Store"></iframe>
Frame Accessible Name vs Embedded Document Title
These serve different purposes and should not be confused.
- Frame accessible name
Identifies the<iframe>element itself (used when navigating between frames) <title>inside the embedded document
Identifies the page inside the frame (announced after focus enters it)
Best Practice (Recommended, Not Required)
Use closely matching text in both places:
<iframe src="settings.html" title="Account settings"></iframe>
Inside settings.html:
<title>Account settings</title>
This avoids confusion when assistive technologies announce both.
Note: Matching titles is a best practice, not a WCAG requirement.
Why This Matters for Users
Screen reader users often:
- Jump between frames by name
- Browse a list of all frames on a page
- Use frame names to decide where to navigate next
When frame names are missing or duplicated:
- Navigation becomes slow and error-prone
- Users must enter frames just to discover their content
- Orientation within the page is lost
WCAG Impact
A frame fails WCAG 4.1.2 when:
- It has no accessible name
- Its accessible name is empty or meaningless
- Multiple frames share the same accessible name
Other success criteria (such as 2.4.1 or 1.3.1) may be indirectly affected in complex layouts, but 4.1.2 is the primary failure.
How to Test
Automated
- axe, Lighthouse, and similar tools flag:
- Missing frame titles
- Duplicate frame names
Manual
- Open browser DevTools → Accessibility pane
- Inspect the
<iframe> - Check the Name field
Screen Readers
- NVDA / JAWS: Navigate by frame and listen for announced names
- VoiceOver: Use the rotor to review frames and their labels
Notes on Legacy Markup
The <frame> and <frameset> elements are obsolete in HTML5 and should not be used in modern content.
The same accessible-name principles apply only when maintaining legacy documents.
Wrapping Up
- Frames must expose unique, meaningful, accessible names
- The name comes from accessible name computation, not the visual
titleis common, but ARIA labelling is also valid- Duplicate or missing names break frame navigation for assistive technology users
One frame. One clear, unique, accessible name.