Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.FHeading HierarchyAction38 headings, 14 skip(s)FIX
- H1 AMP is a web component framework to easily create user-first experiences for the web.
- H1 AMP Websites duplicate H1
- H5 Easily create websites with a great page experience out-of-the-box using AMP’s ready-to-go web components. skipped
- H1 Web Stories duplicate H1
- H5 Immerse readers in visual and tappable stories they can share anywhere on the open web. skipped
- H1 AMP Emails duplicate H1
- H5 Send emails of the future with personalized dynamic content and interactive elements that engage readers. skipped
- H1 AMP Ads duplicate H1
- H5 Serve lightning fast and secure eye-catching creatives. skipped
- H1 The latest news duplicate H1
- H6 Stories skipped
- H4 Web Story Forms unlock more ways to engage your audience
- H6 Bento skipped
- H4 Introducing Bento
- H6 Stories skipped
- H4 Web Stories call to action buttons get an upgrade
- H6 Websites skipped
- H4 Easy TikTok embedding with the new amp-tiktok
- H6 Stories skipped
- H4 Richer interactions in Web Stories
- H6 Stories skipped
- H4 Better video performance in Web Stories
- H1 Explore AMP success stories duplicate H1
- H6 websites skipped
- H4 AMP helps the Washington Post increase returning users from mobile search by 23%
- H6 websites skipped
- H4 Teads brings AMP'd mobile video inventory to nearly 100 publishers
- H6 websites skipped
- H4 Carved increases conversion rate by 75% with AMP and PWA
- H6 websites skipped
- H4 WompMobile consistently improves e-commerce clients’ conversion rates with AMP sites
- H5 Follow us
- H5 Overview
- H5 Docs
- H5 Community
- H5 OpenJS Foundation
- H5 Events
- H5 AMP Brand Materials
A page should have only one H1. Multiple H1s dilute the document outline.
Multiple H1s blur the page's primary topic — screen-reader users and Google both prefer one H1.
Learn more ▾ ▴
HTML5's outline algorithm technically allows multiple H1s within sectioning content, but no browser implements it. In practice: one H1 per page. Use H2-H6 for subsections.
Source: WCAG 2.4.6 / Google Search Central
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
Skipping heading levels breaks the document outline. Screen readers may interpret missing levels as structural errors.
Skipping heading levels breaks the document outline — screen-reader users lose track of section nesting.
Learn more ▾ ▴
Screen reader users navigate by jumping between headings (H1 → H2 → H3). Skipping (H1 → H3) breaks the sense of hierarchy. Use sequential levels even if you don't like the default styling — restyle with CSS instead. WCAG 1.3.1 (Info and Relationships) treats this as an A failure.
Source: WCAG 2.1 SC 1.3.1 / W3C WAI
DFavicon & BrandingAction9 icon(s) detectedFIX
DDark Mode SupportActionTheme color onlyFIX
Detection limited to meta tags and inline styles.
DPrint StylesheetActionNo print stylesFIX
BLink & Button Quality9 issue(s) across 82 links and 20 buttonsREVIEW
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| https://blog.amp.dev/ | (empty) | empty | Add link text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
| <button> | (empty) | empty | Add button text or aria-label |
Links without text are announced as raw URLs by screen readers.
https://blog.amp.dev/
Links with no accessible text (empty <a></a>, image-only no alt, icon-only no aria-label) are unidentifiable to screen readers.
Source: WCAG 2.1 SC 2.4.4
Icon-only buttons need an aria-label so screen readers can announce them.
button.ap-formats-navigation-icon-wrapper (#346 on page); button.ap-formats-navigation-icon-wrapper (#355 on page); button.ap-formats-navigation-icon-wrapper (#364 on page); button.ap-formats-navigation-icon-wrapper (#373 on page); button (#502 on page); button (#504 on page); button (#585 on page); button (#587 on page)
Buttons with no accessible text (icon-only, no aria-label) can't be activated by voice control or understood by screen readers.
Source: WCAG 2.1 SC 4.1.2
B404 Error PageHTTP 404, custom pageREVIEW
BLighthouse Accessibility AuditsScore 81/100 — 7 failing, 23 passedREVIEW
Accessibility
These checks highlight opportunities to improve the accessibility of your web app. Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so manual testing is also encouraged.
ARIA
Focusable descendents within an `[aria-hidden="true"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. Learn how `aria-hidden` affects focusable elements.
Informational: a Permissions-Policy directive showing feature -> allowed origins.
Source: MDN Permissions-Policy
| Failing Elements |
|---|
Bento
Introducing Bento
December 8, 2021 amp-base-carousel#teaser-carousel-news > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
Stories
Web Stories call to action buttons get an upgrade
September 15, 2021 amp-base-carousel#teaser-carousel-news > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
Websites
Easy TikTok embedding with the new amp-tiktok
September 13, 2021 amp-base-carousel#teaser-carousel-news > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
Stories
Richer interactions in Web Stories
August 26, 2021 amp-base-carousel#teaser-carousel-news > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
Stories
Better video performance in Web Stories
August 24, 2021 amp-base-carousel#teaser-carousel-news > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
websites
Teads brings AMP'd mobile video inventory to nearly 100 publishers
Adv… amp-base-carousel#success-stories > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
websites
Carved increases conversion rate by 75% with AMP and PWA
E-Commerce amp-base-carousel#success-stories > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
websites
WompMobile consistently improves e-commerce clients’ conversion rates … amp-base-carousel#success-stories > div.i-amphtml-carousel-content > div.i-amphtml-carousel-scroll > a.-nr |
When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. Learn more about input field labels.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
body.ap--websites > main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news |
body.ap--websites > main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories |
When a toggle field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. Learn more about toggle fields.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-news > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na |
main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na main.ap--main > section.-nn > amp-selector#teaser-carousel-pagination-success-stories > div.-na |
These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader.
Names and labels
When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for users who rely on screen readers. Learn how to make buttons more accessible.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper |
section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper |
section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper |
section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper section.ap-formats > aside.ap-formats-navigation > div.ap-formats-navigation-wrapper > button.ap-formats-navigation-icon-wrapper |
div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-prev-slot > button div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-prev-slot > button |
div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-next-slot > button div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-next-slot > button |
div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-prev-slot > button div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-prev-slot > button |
div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-next-slot > button div.i-amphtml-carousel-content > div.i-amphtml-base-carousel-arrows > div.i-amphtml-base-carousel-arrow-next-slot > button |
Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. Learn how to make links accessible.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
div.-l > ul.-h > li.-p > a.ap-a-ico div.-l > ul.-h > li.-p > a.ap-a-ico |
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Navigation
Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. Learn more about heading order.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Easily create websites with a great page experience out-of-the-box using AMP’s … section.ap-formats > div#ap-formats-format-websites > div.ap-formats-format-content > h5.ap-h5 |
Immerse readers in visual and tappable stories they can share anywhere on the o… section.ap-formats > div#ap-formats-format-stories > div.ap-formats-format-content > h5.ap-h5 |
Send emails of the future with personalized dynamic content and interactive ele… section.ap-formats > div#ap-formats-format-email > div.ap-formats-format-content > h5.ap-h5 |
Serve lightning fast and secure eye-catching creatives. section.ap-formats > div#ap-formats-format-ads > div.ap-formats-format-content > h5.ap-h5 |
Stories a.-nr > div.-ni > div.-nf > h6 |
websites a.-nr > div.-ni > div.-nf > h6 |
These are opportunities to improve keyboard navigation in your application.
Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. Learn more about accessible names.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Got it! body.ap--websites > amp-consent#consent > div#consent-popup > button.ap-a-btn |
ALandmark Structure7 landmarksPASS
Add a skip link as the first focusable element so keyboard users can bypass repeated navigation.
Without a skip-nav link, keyboard users tab through every nav item before reaching content — every page, every visit.
Learn more ▾ ▴
WCAG 2.4.1 (Bypass Blocks) requires a mechanism to skip past repeated content. The standard implementation is a 'Skip to main content' link that's the first focusable element, visually hidden until focused. Three lines of HTML + four of CSS.
Source: WCAG 2.1 SC 2.4.1
A+Alt Text QualityAll 1 images OKPASS
AForm Accessibility1 of 1 controls have issuesPASS
| Control | Type | Label | Method |
|---|---|---|---|
| select | select | (none) | none |
Form controls need a <label>, aria-label, or aria-labelledby for screen readers.
<select>
Form controls without labels — assistive tech announces 'edit text' with no context; users can't complete forms.
Source: WCAG 2.1 SC 3.3.2
A+Web ManifestPWA-readyPASS
A+Color Contrast (Screenshot)20 text elements analyzed, 0 fail WCAG AAPASS
Analyzes text contrast against the actual rendered page, including background images, gradients, and overlays that CSS-based tools cannot detect.
Show all checked elements (20)
| Element | Ratio | Required | FG | BG | Result |
|---|---|---|---|---|---|
| h1 AMP is a web compone… | 8.73:1 | 3.0:1 | #000000 | #00B8CC | Pass |
| h1 AMP Websites | 8.73:1 | 3.0:1 | #000000 | #00B8CC | Pass |
| h1 Web Stories | 8.73:1 | 3.0:1 | #000000 | #00B8CC | Pass |
| h1 AMP Emails | 8.73:1 | 3.0:1 | #000000 | #00B8CC | Pass |
| h1 AMP Ads | 8.73:1 | 3.0:1 | #000000 | #00B8CC | Pass |
| h1 The latest news | 8.73:1 | 3.0:1 | #000000 | #00B8CC | Pass |
| h1 Explore AMP success … | 8.73:1 | 3.0:1 | #000000 | #00B8CC | Pass |
| title AMP - a web componen… | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| span AMP | 19.95:1 | 4.5:1 | #000000 | #F9F9F9 | Pass |
| button About | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div AMP Websites | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div Create flawless web … | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div Web Stories | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div Snackable Stories fo… | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div AMP Ads | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div Super fast ads on th… | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div AMP Email | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| div Next gen email | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a How AMP works | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a Vision & Mission | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
Methodology: The top 20 text elements by font size were checked. Background color was sampled from the desktop screenshot using a 5-point pattern. WCAG 2.1 AA requires 4.5:1 for normal text and 3:1 for large text.