Embedded frames without a title
What it is
One or more <iframe> elements on the page have no title. An iframe embeds another page inside yours: a video, a map, a booking or form widget, a chat window, or an ad or tracking tag. Its title attribute is the short name assistive technology reads for the frame, such as “Product demo video” or “Office location map”.
Why it matters
When a screen reader reaches a frame without a title, it often says only “frame” or reads out the embedded file’s address. A page with a video, a map and a booking widget then offers three unnamed frames to choose between. A frame without a name fails WCAG 4.1.2 Name, Role, Value (Level A), and the W3C technique H64 describes the title fix. Since June 2025 the European Accessibility Act requires many businesses selling to consumers online in the EU to meet this criterion.
How Asky checks it
Asky reads the page’s raw HTML and checks every <iframe>. Frames that video, chat and ad scripts add with JavaScript are not seen, and <frame>, <object> and <embed> are not checked. A frame passes when it has a non-empty title or aria-label, or an aria-labelledby whose target has text. Frames inside aria-hidden="true", hidden, <noscript> or <template>, or inline display: none or visibility: hidden, are skipped, so the Google Tag Manager fallback frame inside <noscript> is not reported. One issue per page gives the count and up to 20 frame addresses, or the HTML of a frame with no src.
Reported as a warning with medium severity.
How to fix it
- Find the frames listed in the issue by their addresses.
- Add a
titlethat says what the frame contains (“Product demo video”, “Contact form”), not how it is built (“iframe”, “embed”). - For embed code you paste into a page, such as a video or map embed, add the attribute to the code before pasting it. Site builders’ video and map elements often have a title or accessibility field for it.
- For a frame that a template, plugin or tag outputs on every page, add the title at that source so every page is corrected.
- An invisible frame used only for tracking needs a name too; a title such as “Tracking frame” is the simplest fix.
- To leave it as it is: if the frame is hidden from everyone by your stylesheet, it is not exposed to screen readers; mark the issue resolved.
Example
A product video embedded on https://example.com/features:
<!-- Before: announced as "frame" -->
<iframe src="https://video.example.org/embed/product-demo"></iframe>
<!-- After: announced as "Product demo video" -->
<iframe src="https://video.example.org/embed/product-demo" title="Product demo video"></iframe>