Skip to content
install

TWO BUILDS9 browsers

Chromelisting in reviewFirefoxlisting in reviewBravelisting in reviewOperalisting in reviewEdgelisting in review4 moreChromium browsers: Arc, Vivaldi, Chromium, Opera GXthe Chrome build

diagnostic · one of 29free, no counter

Outline

What does this page look like to a screen reader?

A screen reader’s rotor is a list of landmarks and a list of headings, and it is the primary way many people navigate a page. This is that list, in the order it is met, indented by real containment rather than by DOM depth - so what you see is the structure somebody will actually move through rather than a pretty-printed tree.

Reach itPress +K on any tab and type outline.Ctrl+Kon Windows and Linux

The page as a screen reader files it: landmarks, then headings
readslandmarks, headings and their names
writesnothing
sendsnothing
indentcontainment among these nodes, not DOM depth
unnamed regionskept - that is the row worth surfacing
heading markits level, never the bare tag
planfree
Add LoupeKit- opens the list of browsers it can be installed in

TWO BUILDS9 browsers

Chromelisting in reviewFirefoxlisting in reviewBravelisting in reviewOperalisting in reviewEdgelisting in review4 moreChromium browsers: Arc, Vivaldi, Chromium, Opera GXthe Chrome build

in the panel · free, no counter

section#about

What this actually is

Before any page ships, and on any page where the visual hierarchy and the heading levels have drifted apart - which happens the moment a heading is chosen for its size.

section#asked

Asked about this diagnostic

Why keep an unnamed section in the list?

Because that is the row the filter exists to surface. A `<section>` with no accessible name is announced as an unlabelled region, which is worse than not being a landmark at all.

Why is a heading’s mark its level rather than its tag?

Because an `<h2>` with `role="heading" aria-level="4"` is a level four heading, and the tag would say two. The level is what gets announced.

Does it check the heading order?

It shows it. A jump from `h2` to `h4` is visible in the indentation, and the panel names it - but whether a skipped level matters depends on the page, and this reading does not grade.

Why does the indentation not match the DOM?

Because DOM depth is an implementation detail - three wrapper divs do not make a heading more nested. The indent is containment among the nodes on this list, which is the structure a rotor presents.

Add LoupeKit- opens the list of browsers it can be installed in

TWO BUILDS9 browsers

Chromelisting in reviewFirefoxlisting in reviewBravelisting in reviewOperalisting in reviewEdgelisting in review4 moreChromium browsers: Arc, Vivaldi, Chromium, Opera GXthe Chrome build

63 of these · no host permissions · three free audits