Skip to content

Test your website now

Free, no card. We read only public pages.

Run free audit →

Accessibility · Low severity

Iframes missing a title attribute

Fix iframe titles that are missing or blank. Describe embedded purpose, compare source and rendered naming checks, and test the framed experience separately.

Published · Updated

What the check tests

Check
a11y.iframe-title - Iframes are identifiable
Passes when
Each iframe should carry a non-empty title attribute.
Scope
graded on every page crawled
Severity
Low
Fix effort
small - under an hour
Impact when fixed
low
Also covers
a11y.axe.frame-title - Frames must have an accessible name

In one paragraph

Iframe missing title attribute means a tested embed lacks the outer title this source check expects. Provide concise wording identifying the embedded purpose, and compare that title with any other naming declarations. The title does not make the inner document accessible or keyboard-operable. Review source and rendered scope separately when the custom check and axe report different results or severities.

Why it matters

An iframe presents another document within the page. A useful outer name helps users decide whether to enter a map, video, booking tool, or payment interface. A generic Frame label provides little context even though it is non-empty.

The outer title, embedded document title, and player or form labels solve different problems. Do not assume one attribute repairs all content inside a vendor widget. Accessibility evidence and testing should include the actual embedded interaction.

Hidden or tracking frames require intent review rather than a blanket instruction to expose them. A source parser cannot tell every frame's visibility or whether its role should be presented to users. Keep product heuristics distinct from a full conformance assessment.

How WebAuditOS evaluates this finding

The supplied custom rule reads served HTML and expects a non-blank title on iframe elements with non-empty src. Any missing title fails at low severity; no eligible frame or unparseable content is not graded. It does not inspect ARIA naming or runtime injection.

The source also covers an axe frame-title rule on rendered samples, with different visibility, negative-tabindex, and naming paths, and serious impact mapped to high severity. These are separate checks with different coverage. They can disagree without either result proving complete embedded-content accessibility.

How to fix it

  1. Identify the exact embed and its purpose. Inspect source, rendered DOM, title, computed name, and whether a consent or loader component creates the frame later.
  2. Provide a useful outer title. For example:
<iframe src="/office-map" title="Brno office location map"></iframe>

This is illustrative. Use the actual resource and appropriate dimensions, security settings, and alternative information.

  1. Keep other names coherent. If aria-label or aria-labelledby is already intentional, inspect its precedence and meaning rather than adding a conflicting title solely for the source check.
  2. Distinguish different embeds naturally. Several videos can need subject-specific titles, while genuinely equivalent repeated content may not need arbitrary numeric names. Uniqueness and presence are separate review questions.
  3. Configure the template or provider integration at the source. Avoid fragile scripts that rename only the first iframe and leave later instances or responsive replacements untouched.
  4. Test dynamic and lazy-loaded frames after consent or interaction, alongside the initial HTML. A rendered finding can see content absent from a source check, while a source finding can include a hidden frame that axe skips.
  5. Test keyboard entry and exit, focus visibility, and the embedded task separately. For owned content, inspect its document and controls directly; for third parties, combine supplier evidence with integration testing.
  6. Rescan both outer naming checks and review any remaining scope differences. A clean title does not validate captions, forms, internal document structure, or cross-origin content the scanner does not inspect.

What the fix can break

Adding a meaningful title normally changes little visually, but scripts or tests may misuse it as an internal selector. Keep machine identifiers separate from human names.

A title copied from the provider can remain generic or stale after the content changes. Update metadata with the actual embed subject.

Do not weaken sandbox or other security settings just to simplify naming or focus tests. Repair the appropriate layer without discarding necessary protections.

Questions

Why can two checks show different severities?

The supplied source parser and rendered axe rule have different inputs and grading. Inspect which rule reported which element.

Does aria-label always satisfy the custom title check?

No. Its documented requirement is specifically the title attribute, while axe has other naming paths.

Does a title certify the embedded resource?

No. It identifies the outer context; internal accessibility requires separate assessment.

Review frame-title distinctions, frame keyboard access, and the automation limits guide.

Standards and sources

  • WCAG 2.2 4.1.2

In the report

Test this on your own site

Every scan runs a11y.iframe-title on every page it crawls, on every plan. The finding carries this id, so a line in a report can be matched to the explanation above - and the free scan needs no account.