| is-on-https |
binary |
Uses HTTPS |
| service-worker |
binary |
Does not register a service worker that controls page and start_url |
| viewport |
binary |
Has a <meta name="viewport"> tag with width or initial-scale |
| first-contentful-paint |
numeric |
First Contentful Paint |
| largest-contentful-paint |
numeric |
Largest Contentful Paint |
| first-meaningful-paint |
numeric |
First Meaningful Paint |
| speed-index |
numeric |
Speed Index |
| total-blocking-time |
numeric |
Total Blocking Time |
| max-potential-fid |
numeric |
Max Potential First Input Delay |
| cumulative-layout-shift |
numeric |
Cumulative Layout Shift |
| errors-in-console |
binary |
No browser errors logged to the console |
| server-response-time |
binary |
Initial server response time was short |
| interactive |
numeric |
Time to Interactive |
| redirects |
numeric |
Avoid multiple page redirects |
| installable-manifest |
binary |
Web app manifest or service worker do not meet the installability requirements |
| splash-screen |
binary |
Is not configured for a custom splash screen |
| themed-omnibox |
binary |
Does not set a theme color for the address bar. |
| maskable-icon |
binary |
Manifest doesn't have a maskable icon |
| content-width |
binary |
Content is sized correctly for the viewport |
| image-aspect-ratio |
binary |
Displays images with correct aspect ratio |
| image-size-responsive |
binary |
Serves images with appropriate resolution |
| deprecations |
binary |
Avoids deprecated APIs |
| mainthread-work-breakdown |
numeric |
Minimizes main-thread work |
| bootup-time |
numeric |
JavaScript execution time |
| uses-rel-preconnect |
numeric |
Preconnect to required origins |
| font-display |
binary |
All text remains visible during webfont loads |
| third-party-summary |
binary |
Minimize third-party usage |
| no-unload-listeners |
binary |
Avoids unload event listeners |
| unsized-images |
binary |
Image elements have explicit width and height |
| valid-source-maps |
binary |
Page has valid source maps |
| aria-allowed-attr |
binary |
[aria-*] attributes match their roles |
| aria-hidden-body |
binary |
[aria-hidden="true"] is not present on the document <body> |
| aria-hidden-focus |
binary |
[aria-hidden="true"] elements contain focusable descendents |
| aria-valid-attr-value |
binary |
[aria-*] attributes have valid values |
| aria-valid-attr |
binary |
[aria-*] attributes are valid and not misspelled |
| button-name |
binary |
Buttons have an accessible name |
| color-contrast |
binary |
Background and foreground colors have a sufficient contrast ratio |
| document-title |
binary |
Document has a <title> element |
| duplicate-id-active |
binary |
[id] attributes on active, focusable elements are unique |
| duplicate-id-aria |
binary |
ARIA IDs are unique |
| heading-order |
binary |
Heading elements appear in a sequentially-descending order |
| html-has-lang |
binary |
<html> element has a [lang] attribute |
| html-lang-valid |
binary |
<html> element has a valid value for its [lang] attribute |
| image-alt |
binary |
Image elements have [alt] attributes |
| link-name |
binary |
Links have a discernible name |
| list |
binary |
Lists contain only <li> elements and script supporting elements (<script> and <template>). |
| listitem |
binary |
List items (<li>) are contained within <ul>, <ol> or <menu> parent elements |
| meta-viewport |
binary |
[user-scalable="no"] is not used in the <meta name="viewport"> element and the [maximum-scale] attribute is not less than 5. |
| uses-long-cache-ttl |
numeric |
Uses efficient cache policy on static assets |
| total-byte-weight |
numeric |
Avoids enormous network payloads |
| offscreen-images |
numeric |
Defer offscreen images |
| render-blocking-resources |
numeric |
Eliminate render-blocking resources |
| unminified-css |
numeric |
Minify CSS |
| unminified-javascript |
numeric |
Minify JavaScript |
| unused-css-rules |
numeric |
Reduce unused CSS |
| unused-javascript |
numeric |
Reduce unused JavaScript |
| modern-image-formats |
numeric |
Serve images in next-gen formats |
| uses-optimized-images |
numeric |
Efficiently encode images |
| uses-text-compression |
numeric |
Enable text compression |
| uses-responsive-images |
numeric |
Properly size images |
| efficient-animated-content |
numeric |
Use video formats for animated content |
| duplicated-javascript |
numeric |
Remove duplicate modules in JavaScript bundles |
| legacy-javascript |
numeric |
Avoid serving legacy JavaScript to modern browsers |
| doctype |
binary |
Page has the HTML doctype |
| charset |
binary |
Properly defines charset |
| dom-size |
numeric |
Avoids an excessive DOM size |
| geolocation-on-start |
binary |
Avoids requesting the geolocation permission on page load |
| inspector-issues |
binary |
No issues in the Issues panel in Chrome Devtools |
| no-document-write |
binary |
Avoids document.write() |
| notification-on-start |
binary |
Avoids requesting the notification permission on page load |
| paste-preventing-inputs |
binary |
Allows users to paste into input fields |
| uses-http2 |
numeric |
Use HTTP/2 |
| uses-passive-event-listeners |
binary |
Uses passive listeners to improve scrolling performance |
| meta-description |
binary |
Document has a meta description |
| http-status-code |
binary |
Page has successful HTTP status code |
| font-size |
binary |
Document uses legible font sizes |
| link-text |
binary |
Links have descriptive text |
| crawlable-anchors |
binary |
Links are crawlable |
| is-crawlable |
binary |
Page isn’t blocked from indexing |
| robots-txt |
binary |
robots.txt is valid |
| tap-targets |
binary |
Tap targets are sized appropriately |
| hreflang |
binary |
Document has a valid hreflang |
| plugins |
binary |
Document avoids plugins |
| canonical |
binary |
Document has a valid rel=canonical |
| bf-cache |
binary |
Page prevented back/forward cache restoration |