region

Page content should be inside a landmark region

manualconfidence: mediumseverity: minoroperable

Checks that content under <body> is contained within a landmark region.

Applies to. Applies to a page of its own (not a document shown in a frame, which sits in the top document's landmarks) whose <body> has content: outside any landmark, an element with text of its own or an aria-label, an <img>, <video>, <audio>, <canvas>, <object> or <embed>, or an <input> other than type="hidden"; or a landmark with anything in it. Live regions, dialogs, buttons, <svg>, <iframe>/<frame> and resolvable skip links are not content that needs a landmark. Not while a modal dialog is open: the rest of the page is inert then, so the scan sees the dialog, not the page. Content matched by excludeSelectors (global or for this rule) is left out, and a reported gap never takes it in. A custom element whose ElementInternals give it a landmark role (this.attachInternals().role), with no role attribute naming another, is a landmark as a native element with that role is.

Expectation. Every top-level piece of page content lives inside a landmark region (main, navigation, banner, contentinfo, complementary, region, form, search), so assistive technology users navigating by landmark do not miss content that was never placed inside one.

Examples

pass
<body>
<main>
<p>Everything lives inside a landmark.</p>
</main>
</body>

All page content is contained within a landmark region.

can't tell
<body>
<p>Stray paragraph, not inside any landmark.</p>
</body>

This paragraph sits directly under <body>, outside every landmark.

How to check

When this rule can’t decide, it reports cantTell and leaves the question to a person. Each question it can ask is listed here under its reason code, with the steps to answer it. A finding carries the same steps as howToCheck, in the scan’s language. See Output schema.

CONTENT_OUTSIDE_LANDMARK

  1. Find the content the report names (or the iframe) on the page.
  2. Open the Accessibility pane of the developer tools, or a screen reader's list of landmarks, and see which landmark, if any, contains it.
  3. Decide whether it belongs in an existing landmark (header, nav, main, footer, aside) or is outside every one.

Pass. The content sits inside a landmark, or is something that needs none (such as a skip link or a dialog).

Fail. Real page content sits outside every landmark, so people moving by landmark can miss it (best practice, ARIA11).

View source