Region

Moderate effort

Found on 46% of audited stores.

Wrap all visible page content inside HTML landmark elements (such as `<main>`, `<nav>`, `<header>`, `<footer>`, or ARIA `role` attributes) so screen-reader users can navigate your store efficiently.

What it is

Landmarks are special HTML tags or ARIA attributes that divide a web page into named regions — like the main content area, navigation menu, page header, and footer. Screen readers and other assistive technologies use these regions as a table of contents, letting users jump directly to the part of the page they need. When content sits outside any landmark, assistive technology users cannot locate or skip to it. This is what the "region" accessibility rule checks: it flags any significant block of content that is not wrapped in one of these landmark containers.

Why it matters

Approximately 7 million Americans use screen readers, and landmarks are one of the most fundamental navigation tools they rely on. Without them, a screen-reader user must listen to your entire page linearly just to find the product listing or checkout button — a frustrating experience that causes them to leave. Beyond lost sales, WCAG 2.1 Success Criterion 1.3.6 (and the broader WCAG framework) requires content to be programmatically determinable; failure exposes your store to ADA/Section 508 accessibility complaints and litigation, which are rising year-on-year in the US and EU (EAA 2025). Search engines also use landmark structure to understand page hierarchy, so fixing this can modestly reinforce your on-page SEO signals as well.

How to fix it

  1. Audit your page: run an accessibility scanner (axe DevTools, WAVE, or Lighthouse) to identify exactly which content blocks are outside landmarks.
  2. Map every content block to the correct HTML5 semantic element: use `<header>` for the site banner/logo, `<nav>` for navigation menus, `<main>` for the primary content (there should be exactly one per page), `<aside>` for sidebars or supplementary content, and `<footer>` for the page footer.
  3. If you cannot change the element tag (e.g. a `<div>` forced by your theme), add the equivalent ARIA role attribute: `role="main"`, `role="navigation"`, `role="banner"`, `role="contentinfo"`, `role="complementary"`, or `role="region"` with a descriptive `aria-label` (e.g. `<div role="region" aria-label="Customer Reviews">`).
  4. When you have more than one landmark of the same type on a page (e.g. two `<nav>` elements), give each a unique `aria-label` so users know which is which (e.g. `<nav aria-label="Main menu">` and `<nav aria-label="Breadcrumb">`).
  5. Ensure every piece of visible body content — promotional banners, product grids, announcement bars, trust badges, newsletter sign-ups — falls inside at least one landmark.
  6. Re-run your accessibility scanner to confirm zero 'region' violations remain, then test with a real screen reader (NVDA + Firefox on Windows, VoiceOver + Safari on Mac/iOS) by using the screen reader's landmark-jump shortcut to navigate the fixed page.
<header role="banner">
  <nav aria-label="Main menu"><!-- navigation links --></nav>
</header>

<main id="main-content" role="main">
  <!-- all primary page content goes here -->
</main>

<aside role="complementary" aria-label="Promotions">
  <!-- sidebar or supplementary content -->
</aside>

<footer role="contentinfo">
  <!-- footer links and legal text -->
</footer>

<!-- If a div cannot become a semantic element: -->
<div role="region" aria-label="Customer Reviews">
  <!-- review content -->
</div>

Fix it on your platform

Pick your platform for the exact steps.

How to fix region on Shopify
  1. From your Shopify Admin, go to Online Store → Themes → click the three-dot menu on your active theme → Edit code.
  2. Open `layout/theme.liquid` — this is the master template that wraps every page. Locate the outermost `<div>` or `<body>` content structure.
  3. Ensure the site logo/header area is wrapped in `<header role="banner">`, the primary nav in `<nav aria-label="Main menu">`, and the page body in `<main id="MainContent" role="main">`. Most modern Shopify themes (Dawn, Sense, Craft) already use these tags — verify they are present and that no promotional sections (e.g. announcement bars) sit outside them.
  4. Open individual section files under `sections/` (e.g. `sections/announcement-bar.liquid`, `sections/header.liquid`) and confirm their output HTML is nested inside the correct landmark in `theme.liquid`.
  5. For any custom sections that render standalone `<div>` blocks outside landmarks, either move them inside `<main>` in `theme.liquid` or add `role="region"` and `aria-label="[Section purpose]"` to the outermost `<div>` of that section file.
  6. Save changes, then visit your storefront and run axe DevTools (free Chrome/Firefox extension) to verify no 'region' violations remain.
How to fix region on WooCommerce
  1. Landmark structure is controlled by your active WordPress theme, not WooCommerce itself. In WordPress Admin go to Appearance → Theme File Editor (or use a code editor via FTP/SSH).
  2. Open `header.php` and confirm the site header uses `<header role="banner">` and navigation uses `<nav aria-label="Primary">` (the `wp_nav_menu()` call should be inside this).
  3. Open `footer.php` and confirm the footer is wrapped in `<footer role="contentinfo">`.
  4. Open `index.php`, `page.php`, `single.php`, and WooCommerce template overrides under `woocommerce/` — ensure each wraps its content in `<main id="main" role="main">`.
  5. If you use a page builder (Elementor, Divi, Beaver Builder), switch to its editor and check that sections are placed inside the theme's `<main>` region; many builders inject content outside it. Use the builder's 'HTML tag' or 'wrapper tag' setting on each section to set semantic tags, or install the 'Accessibility Checker' plugin (Equalize Digital) to pinpoint violations.
  6. Re-run axe DevTools or WAVE on the frontend to confirm all content is inside landmarks.
How to fix region on BigCommerce
  1. In BigCommerce Admin go to Storefront → My Themes → click Customize on your active theme → then Edit Theme Files (Advanced).
  2. Open `templates/layout/base.html` — this is the master layout. Verify the header markup uses `<header role="banner">`, the main nav uses `<nav aria-label="Main navigation">`, and the page body region uses `<main id="content" role="main">`.
  3. Open `templates/layout/footer.html` (or the footer partial) and confirm it uses `<footer role="contentinfo">`.
  4. Check partial templates in `templates/components/` for promotional or utility blocks (e.g. banners, breadcrumbs). Ensure they render inside the relevant landmark in `base.html`, not in a raw `<div>` outside it.
  5. If a component must stay as a `<div>`, add `role="region"` and `aria-label="[Description]"` to its outermost element in the component's Handlebars file.
  6. Save, then preview the theme and run axe DevTools to confirm the fix.
How to fix region on Wix
  1. Wix generates HTML automatically and does not let you edit raw HTML directly in standard Wix Editor. Your best path is: in the Wix Editor, ensure every page has a recognizable Header section (the built-in Wix Header component) and Footer section — Wix maps these to `<header>` and `<footer>` landmarks automatically.
  2. Make sure all body content is placed inside Wix 'Section' containers on the page canvas, not floating above the header or below the footer — Wix sections render inside the main content area.
  3. For any 'Strip' or 'Box' elements outside the main body area, move them onto the canvas between header and footer using the Editor's drag-and-drop.
  4. If you use Wix Studio (the developer-facing editor), open the page's Velo code panel and use `$w.onReady()` to verify the DOM structure, or add custom HTML components with `<section role="region" aria-label="...">` via the HTML iframe embed widget for content that needs explicit landmark roles.
  5. Install the 'Accessibility Wizard' from the Wix App Market (free) to surface remaining landmark issues, then re-test with axe DevTools.
How to fix region on Squarespace
  1. Squarespace controls its HTML output through its built-in templates; you cannot change core landmark tags directly. First, verify you are using a modern Squarespace template (Fluid Engine / 7.1) — these output better semantic HTML than legacy 7.0 templates.
  2. In the Pages panel, ensure every page has a Header and Footer enabled (Pages → [Page] → Page Settings → check that header/footer are not hidden), as Squarespace maps these to `<header>` and `<footer>` landmark roles.
  3. Go to Design → Custom CSS to add CSS only — you cannot inject landmark tags via CSS, so for missing `<main>` or `role` attributes you must use Code Injection: go to Settings → Advanced → Code Injection and add a `<script>` that sets `document.querySelector('#page')?.setAttribute('role', 'main')` as a stopgap until Squarespace fixes its template output.
  4. For individual pages, use the Page Header / Page Content blocks and keep all content sections within the page canvas (not injected via footer code injection) so they fall inside Squarespace's main content wrapper.
  5. Re-run axe DevTools after each change to verify improvement; note that some landmark issues on Squarespace require a template update from Squarespace itself.
How to fix region on Webflow
  1. Open your project in the Webflow Designer. In the Navigator panel (left sidebar), locate the outermost structure of your page.
  2. Select the site header/navbar element, open its Settings panel (right sidebar), and change its HTML tag from `Div` to `Header` using the Tag dropdown — Webflow will output `<header>` which browsers map to `role="banner"` automatically.
  3. Select the main content wrapper `Div`, change its tag to `Main` — this outputs `<main>` with the implicit `role="main"`.
  4. Select the footer element and change its tag to `Footer` (outputs `<footer>` with implicit `role="contentinfo"`).
  5. For any standalone content sections (e.g. a promo banner `Div` outside the main wrapper), select it, change its tag to `Section`, then open the Element Settings panel and add a custom attribute: Name = `aria-label`, Value = `[Section purpose, e.g. Promotional Banner]`. This gives it an explicit landmark.
  6. Publish the site, then run axe DevTools on the live or staging URL to confirm all content is inside landmarks.
How to fix region on Adobe Commerce (Magento)
  1. Landmark structure lives in your active theme's layout XML and PHTML templates. Navigate to `app/design/frontend/[Vendor]/[Theme]/Magento_Theme/templates/` (or the equivalent in `vendor/magento/` if you haven't overridden it).
  2. Open `html/header.phtml` and ensure the outermost element is `<header role="banner">` (or add the `role` attribute if the tag is a `<div>`).
  3. Open `html/footer.phtml` and ensure it uses `<footer role="contentinfo">`.
  4. In your theme's `default.xml` layout file (`Magento_Theme/layout/default.xml`), confirm the main content container block renders inside a `<main>` tag. If not, override the `1column.phtml` / `2columns-left.phtml` templates under `Magento_Theme/templates/html/` and wrap the main column in `<main id="maincontent" role="main">`.
  5. For CMS blocks or widgets that render outside these landmarks (e.g. a full-width promo strip injected above the header block), edit the CMS block HTML in Content → Blocks → [Block Name] and wrap the content in `<section role="region" aria-label="[Description]">...</section>`.
  6. Run `bin/magento cache:clean`, then use axe DevTools on the frontend to verify all violations are resolved.

Does your site have this issue?

Run a free SEOLZ audit to find region — and every other issue — across your whole site in minutes.

Scan my site free

Frequently asked questions

What is Region?

Landmarks are special HTML tags or ARIA attributes that divide a web page into named regions — like the main content area, navigation menu, page header, and footer. Screen readers and other assistive technologies use these regions as a table of contents, letting users jump directly to the part of the page they need. When content sits outside any landmark, assistive technology users cannot locate or skip to it. This is what the "region" accessibility rule checks: it flags any significant block of content that is not wrapped in one of these landmark containers.

Why does region matter?

Approximately 7 million Americans use screen readers, and landmarks are one of the most fundamental navigation tools they rely on. Without them, a screen-reader user must listen to your entire page linearly just to find the product listing or checkout button — a frustrating experience that causes them to leave. Beyond lost sales, WCAG 2.1 Success Criterion 1.3.6 (and the broader WCAG framework) requires content to be programmatically determinable; failure exposes your store to ADA/Section 508 accessibility complaints and litigation, which are rising year-on-year in the US and EU (EAA 2025). Search engines also use landmark structure to understand page hierarchy, so fixing this can modestly reinforce your on-page SEO signals as well.

How do I fix region?

Wrap all visible page content inside HTML landmark elements (such as `<main>`, `<nav>`, `<header>`, `<footer>`, or ARIA `role` attributes) so screen-reader users can navigate your store efficiently.

Authoritative references

Related Accessibility (WCAG) issues