Skip to content

Keyboard & focus

A Frame with Controls Inside Is Skipped by the Keyboard

The frame has `tabindex="-1"`, so pressing Tab jumps right past it. Keyboard users can't reach the buttons, links or fields inside.

frame-focusable-contentWCAG 2.0Introduced in WCAG 2.0.Level AA — the minimum. Missing it blocks people outright.

Status
SeriousSerious — Significant friction, or information that is lost.CurrentScanners run this rule today.
Owner
DevTestProduct
Audit
Automated+ManualA scanner finds it; a person confirms the fix.
Save as PDF (opens in a new tab)

Why it matters

An iframe (a frame) shows another page inside your page — a payment form, a video player, a map. Adding tabindex="-1" to the frame tells some browsers to skip it, and everything inside it, when someone presses Tab.

People who use only a keyboard then can't pay, play the video or fill in the form. Mouse users never notice, so the problem often ships unseen.

Who it affects

Who it affects, and how much
WhoWhat they experienceImpact
Screen reader usersMoving by Tab skips the frame's controls, so they may never find the form or player.High impact
Keyboard-only usersTab jumps over the frame, so they can't reach or use anything inside it.High impact
Motor and dexteritySwitch and other keyboard-like devices skip the frame too, so the task is blocked.High impact
Low-vision users (magnification)Affected if they move around with the keyboard, as many magnifier users do.Partial impact
Voice control usersThey can often still click by saying a control's name, but "press Tab" commands skip the frame.Partial impact

Business & product impact

Business & product impact, with how much each claim weighs
AreaWhyImpact
LegalEverything must work by keyboard under WCAG 2.1.1 Keyboard, at Level A. Australia's Disability Discrimination Act complaints point to WCAG, and EN 301 549 includes the same need.High impact
ConversionFrames often hold payment, booking or sign-up forms. If keyboard users can't reach them, the sale is lost.High impact
SEONo real search benefit — don't sell it as one.Low impact
Brand trustA checkout that can't be used tells customers they weren't thought of.Moderate impact
Cost to fixUsually you just delete one attribute. Check the shared embed component so it's fixed everywhere.High impact

Fixing it in code

An embedded payment form

Don't

<iframe src="/pay" title="Payment details" tabindex="-1"></iframe>

A screen reader says: “Tab skips the frame and lands on the next link after it, such as "Terms, link".”

Do

<iframe src="/pay" title="Payment details"></iframe>

A screen reader says: “Payment details, frame. Card number, edit text.”

Without tabindex="-1", Tab moves into the frame and through its controls.

A frame that really should be hidden

Don't

<iframe src="/preview" title="Preview" tabindex="-1" style="visibility:visible"></iframe>

A screen reader says: “The preview is on screen, but Tab can't reach its links.”

Do

<iframe src="/preview" title="Preview" hidden></iframe>

A screen reader says: “Nothing — the frame is hidden from everyone until it's needed.”

If no one should use it yet, hide it for everyone, not just keyboard users.

Designer's handoff note

When you place an embed — map, video, payment form — note in the spec that keyboard users must be able to Tab into it and out again.

Quick test

Tool

The keyboard alone

Checklist

Pass
Focus moves into the frame and you can use its controls.
Fail
Focus jumps from before the frame to after it, skipping everything inside.

What a green scan still misses

A scanner can't look inside frames from other websites, so it may miss some. It also can't tell whether the frame's own controls work by keyboard — Tab through them yourself.

Reference

Rule ID
frame-focusable-content
Raised by
  • axe-core: “Frames with focusable content must not have tabindex=-1”
WCAG
Other standards
EN 301 549 9.2.1.1 · RGAA 7.3.2
Last reviewed
14 October 2026