Skip to content

Test your website now

Free, no card. We read only public pages.

Run free audit →

Accessibility · Info severity

Skip to Content Link Missing: Add and Test a Useful Bypass

Add a useful skip-to-content link. Verify its target, focus visibility and keyboard continuation, and understand the source check language and ordering limits.

Published · Updated

What the check tests

Check
a11y.skip-link - Skip-to-content link
Passes when
The first focusable element should be a skip link targeting the main content.
Scope
graded on every page crawled
Severity
Info
Fix effort
small - under an hour
Impact when fixed
low

In one paragraph

Skip to content link missing means this heuristic did not recognise the first source fragment link as the kind of bypass it expects. A warning can miss a valid mechanism, while a pass can accept a broken one. Provide a useful keyboard route past repeated material, test the real target and focus behaviour, and assess the broader bypass requirement separately from the scanner's wording match.

Why it matters

A skip link can save many repeated keyboard stops before the main task. It is particularly useful when a header or menu precedes each related page. Landmark and heading navigation also help, but different users and user agents have different mechanisms available.

WCAG 2.4.1 does not require one exact English label or class name. The intended result is an effective supported bypass mechanism. A localised link can be entirely useful even if an English keyword detector fails to recognise it.

Conversely, a first Jump to recipe link or a class containing skip does not prove every repeated block is appropriately bypassed. The destination, supported behaviour, context, and actual task still matter.

How WebAuditOS evaluates this finding

The supplied custom check reads served HTML and examines the first anchor whose href starts with a hash. If its text or class includes skip or jump case-insensitively, it passes; otherwise it warns informationally. Unparseable responses are not graded.

It can miss later, absolute, or runtime-created skip links and non-English wording without a matching class. It does not verify destination existence, focus movement, placement, or visibility. These are recognition limits rather than the complete accessibility requirement.

How to fix it

  1. Review the repeated content and intended landing point on each template. Choose a meaningful start of the main task rather than an arbitrary empty anchor above another long block.
  2. Add the link early in keyboard navigation with a matching unique target. For example:
<a class="skip-link" href="#main-content">Skip to main content</a>
<main id="main-content" tabindex="-1"><h1>Delivery information</h1></main>

The destination must contain the real content. Negative tabindex on this target is for programmatic or fragment focus handling, not a request for another ordinary tab stop.

  1. Keep the link visible or reveal it clearly when focused. Do not hide it with display:none or leave it behind a fixed banner. An always-visible link can be simpler and fully appropriate.
  2. Test activation with a keyboard in supported browsers. Confirm focus or the subsequent navigation position reaches the intended content rather than merely scrolling the page while Tab resumes in the old menu.
  3. Preserve visible focus at the link and destination as appropriate. Account for sticky headers and zoom so the landing section or first required control is not concealed.
  4. Localise human wording accurately. A stable useful class can help a narrow detector, but it is not a substitute for understandable text or real behaviour. Do not rewrite a valid local-language label into English just to pass.
  5. Review initial source order and scripts intercepting fragments. An earlier menu toggle with href=# can affect the scanner result and can also deserve its own semantic repair to a real button.
  6. Rescan and maintain manual tests through responsive navigation, overlays, route changes, and different main-content templates. A heuristic pass should confirm recognition, not close all bypass review.

What the fix can break

An incorrect or duplicate target can direct people to the wrong area. Keep shared template and destination IDs coordinated.

Client-side routing can replace or intercept fragment navigation. Test direct loading and in-app transitions rather than only a static sample.

Do not hide a useful link visually until it is impossible to locate at focus. A polished appearance is not a reason to remove the actual bypass route.

Questions

Does missing this detector mean no valid bypass exists?

No. It inspects a narrow first-link pattern, not every supported mechanism.

No. Use the page's language. The detector's keyword limits are not a WCAG language requirement.

No. Verify its target and actual keyboard continuation.

Review bypass mechanisms, heading structure, and the automation limits guide.

Standards and sources

  • WCAG 2.2 2.4.1

In the report

Test this on your own site

Every scan runs a11y.skip-link 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.