Accessibility
· 13 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.DLink & Button QualityAction12 issue(s) across 170 links and 7 buttonsFIX
| Element | Text | Issue | Suggested Fix |
|---|---|---|---|
| https://web.dev/explore/ai | (empty) | empty | Add link text or aria-label |
| https://web.dev/explore/ai | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Ai | |||
| https://web.dev/explore/how-to-optimize-… | (empty) | empty | Add link text or aria-label |
| https://web.dev/explore/how-to-optimize-… | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: How To Optimize Inp?Utm Source=Web.Dev&Utm Medium=Cards&Utm Campaign=Inp Cwv | |||
| https://web.dev/identity | (empty) | empty | Add link text or aria-label |
| https://web.dev/identity | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Identity | |||
| https://web.dev/html | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Html | |||
| https://web.dev/css | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Css | |||
| https://web.dev/javascript | Learn more | generic text | Replace with descriptive text |
Before: Learn more Suggested: Javascript | |||
| https://web.dev/learn/html | (empty) | empty | Add link text or aria-label |
| https://web.dev/learn/css | (empty) | empty | Add link text or aria-label |
| https://web.dev/learn/javascript | (empty) | empty | Add link text or aria-label |
Links without text are announced as raw URLs by screen readers.
https://web.dev/explore/ai; https://web.dev/explore/how-to-optimize-inp?utm_source=web.dev&utm_medium=cards&utm_campaign=inp-cwv; https://web.dev/identity; https://web.dev/learn/html; https://web.dev/learn/css; https://web.dev/learn/javascript
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
Generic link text like 'click here' doesn't describe the destination.
https://web.dev/explore/ai ("Learn more"); https://web.dev/explore/how-to-optimize-inp?utm_source=web.dev&utm_medium=cards&utm_campaign=inp-cwv ("Learn more"); https://web.dev/identity ("Learn more"); https://web.dev/html ("Learn more"); https://web.dev/css ("Learn more"); https://web.dev/javascript ("Learn more")
Generic anchor text ('click here', 'read more', 'learn more') tells screen readers and search engines nothing about the destination.
Learn more ▾ ▴
Out-of-context lists of links read by AT (one navigation pattern) become useless when every link says 'click here'. Use the destination's title or topic as anchor text. Doubles as SEO win — Google passes anchor-text relevance to the destination.
Source: WCAG 2.4.4 / Google Search Central
DPrint StylesheetActionNo print stylesFIX
BHeading Hierarchy50 headingsREVIEW
- H3 Building a better web, together
- H3 Navigation API is now Baseline Newly available
- H3 AI and the web
- H3 Optimize INP
- H3 Payments & Identity
- H2 Explore the web platform
- H3 HTML
- H3 CSS
- H3 JavaScript
- H2 Learn the web platform
- H3 Learn HTML
- H3 Learn CSS
- H3 Learn JavaScript
- H3 Keep up on web development news
- H2 Baseline
- H3 February 2026 Baseline monthly digest
- H3 January 2026 Baseline monthly digest
- H3 December 2025 Baseline monthly digest
- H3 November 2025 Baseline monthly digest
- H2 CSS and UI design
- H3 Adapting typography to user preference using CSS
- H3 New CSS color spaces and functions in all major engines
- H3 What are source maps?
- H3 CSS subgrid
- H2 Core Web Vitals
- H3 The most effective ways to improve Core Web Vitals
- H3 How to optimize INP
- H3 Common misconceptions about how to optimize LCP
- H3 Best practices for measuring Web Vitals in the field
- H2 Progressive Web Apps
- H3 Learn PWA
- H3 TransformStream is now supported cross browser.
- H3 New patterns for amazing apps
- H3 Project Fugu API showcase
- H2 Accessible for all
- H3 Learn Accessibility
- H3 Testing web design color contrast
- H3 Building the main navigation for a website
- H3 Community highlight: Melanie Sumner
- H2 Payments and identity
- H3 Create a passkey for passwordless logins
- H3 Sign in with a passkey
- H3 Web payments overview
- H3 Payment and address form best practices
- H2 Developer Newsletter
- H3 web.dev
- H3 web.dev
- H3 Contribute
- H3 Related Content
- H3 Follow
Every page should have one H1 that describes the page content.
No H1 means screen-reader users can't identify the page's primary topic, and Google's content-extraction degrades.
Learn more ▾ ▴
The H1 is the document title for assistive tech and a strong signal to search engines about page topic. Pages without one force screen readers to fall back to the <title> attribute or page chrome. Add a single H1 that names the page's primary subject.
Source: WCAG 2.4.6 / Google Search Central
B404 Error PageHTTP 404, custom pageREVIEW
CFavicon & BrandingAction10 icon(s) detectedREVIEW
BDark Mode SupportDark mode detectedREVIEW
Detection limited to meta tags and inline styles.
BColor Contrast (Screenshot)20 text elements analyzed, 0 fail WCAG AAREVIEW
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 |
|---|---|---|---|---|---|
| h2 Explore the web plat… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Learn the web platfo… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Baseline | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 CSS and UI design | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Core Web Vitals | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Progressive Web Apps | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Accessible for all | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Payments and identit… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h2 Developer Newsletter | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 Building a better we… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 Keep up on web devel… | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 web.dev | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 web.dev | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 Contribute | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 Related Content | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| h3 Follow | 21.00:1 | 3.0:1 | #000000 | #FFFFFF | Pass |
| title web.dev | 21.00:1 | 4.5:1 | #000000 | #FFFFFF | Pass |
| a Skip to main content | 12.06:1 | 4.5:1 | #000000 | #A3C7F6 | Pass |
| button Resources | 4.66:1 | 4.5:1 | #000000 | #1A73E8 | Pass |
| li Web Platform | 4.66:1 | 4.5:1 | #000000 | #1A73E8 | 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.
ALandmark Structure17 landmarksPASS
Multiple navigations need aria-label to distinguish them for screen readers.
Some <nav> elements lack aria-label — screen-reader users hear 'navigation' multiple times with no way to distinguish them.
Learn more ▾ ▴
When a page has multiple <nav> regions (primary, footer, breadcrumb), each needs aria-label or aria-labelledby. AT users navigate by landmark; identical 'navigation' announcements force them to enter each one to discover purpose.
Source: WAI-ARIA Authoring Practices
A+Alt Text QualityAll 10 images OKPASS
A+Form AccessibilityAll 2 controls labeledPASS
| Control | Type | Label | Method |
|---|---|---|---|
| q | text | Search | aria-label |
| input | text | Type to filter | aria-label |
A+Web ManifestPWA-readyPASS
ALighthouse Accessibility AuditsScore 90/100 — 3 failing, 26 passedPASS
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.
Contrast
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Start course div.devsite-landing-row-item-description > div.devsite-landing-row-item-body > div.devsite-landing-row-item-buttons > a.button |
Start course div.devsite-landing-row-item-description > div.devsite-landing-row-item-body > div.devsite-landing-row-item-buttons > a.button |
Start course div.devsite-landing-row-item-description > div.devsite-landing-row-item-body > div.devsite-landing-row-item-buttons > a.button |
Read the blog div.devsite-landing-row-item-description > div.devsite-landing-row-item-body > div.devsite-landing-row-item-buttons > a.button |
These are opportunities to improve the legibility of your content.
Names and labels
Screen reader users rely on frame titles to describe the contents of frames. Learn more about frame titles.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
div.devsite-landing-row-group > div.devsite-landing-row-item > devsite-iframe > iframe div.devsite-landing-row-group > div.devsite-landing-row-item > devsite-iframe > iframe |
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.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a |
div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a |
div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a |
image div.devsite-landing-row-group > div.devsite-landing-row-item > div.devsite-landing-row-item-description > a |
web div.devsite-landing-row-group > div.devsite-landing-row-item > div.devsite-landing-row-item-description > a |
timer div.devsite-landing-row-group > div.devsite-landing-row-item > div.devsite-landing-row-item-description > a |
div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a |
div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a |
div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a div.devsite-landing-row-item > div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > a |
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.