The countdown to Chrome Dev Summit 2021 is on! Visit goo.gle/cds2021 and request an invite to participate in workshops, learning lounges and office hours.
Measure
See how well your website performs. Then, get tips to improve your user experience. Sign in to track your progress over time.
Sorry, the measure tool does not work with legacy browsers or with JavaScript disabled. Please try again using an up-to-date version of Edge, Firefox, Safari, or Chrome.
Run tests on your site
Enter your site's URL to see how well it performs across all audits.
Look at what matters
See your site's performance across the areas you care about.
Get tips for improving
Each test comes with helpful steps to improve your site's results.
How your site is measured
When you measure your site, web.dev uses Lighthouse, an open-source, automated tool for improving the quality of web pages. Lighthouse will audit your site in the following categories:
Performance
Audits for metrics like first paint and time to interactive to determine lag.
Best Practices
Looks for everything from HTTPS usage to correct image aspect ratios.
SEO
Checks for best practices to ensure your site is discoverable.
Accessibility
Checks for common issues that may prevent users from accessing your content.
All tests are run using a simulated mobile device, throttled to a fast 3G network & 4x CPU slowdown.
{"guides":[{"path":"","topic":"","id":"accesskeys","lighthouse":["accesskeys"],"title":"`[accesskey]` values are not unique","url":"/accesskeys/"},{"path":"","topic":"","id":"aria-allowed-attr","lighthouse":["aria-allowed-attr"],"title":"`[aria-*]` attributes do not match their roles","url":"/aria-allowed-attr/"},{"path":"","topic":"","id":"aria-required-attr","lighthouse":["aria-required-attr"],"title":"`[role]`s do not have all required `[aria-*]` attributes","url":"/aria-required-attr/"},{"path":"","topic":"","id":"aria-required-children","lighthouse":["aria-required-children"],"title":"Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children","url":"/aria-required-children/"},{"path":"","topic":"","id":"aria-required-parent","lighthouse":["aria-required-parent"],"title":"`[role]`s are not contained by their required parent element","url":"/aria-required-parent/"},{"path":"","topic":"","id":"aria-roles","lighthouse":["aria-roles"],"title":"`[role]` values are not valid","url":"/aria-roles/"},{"path":"","topic":"","id":"aria-valid-attr-value","lighthouse":["aria-valid-attr-value"],"title":"`[aria-*]` attributes do not have valid values","url":"/aria-valid-attr-value/"},{"path":"","topic":"","id":"aria-valid-attr","lighthouse":["aria-valid-attr"],"title":"`[aria-*]` attributes are not valid or misspelled","url":"/aria-valid-attr/"},{"path":"","topic":"","id":"audio-caption","lighthouse":["audio-caption"],"title":"`<audio>` elements are missing a `<track>` element with `[kind=\"captions\"]`","url":"/audio-caption/"},{"path":"","topic":"","id":"button-name","lighthouse":["button-name"],"title":"Buttons do not have an accessible name","url":"/button-name/"},{"path":"","topic":"","id":"bypass","lighthouse":["bypass"],"title":"The page does not contain a heading, skip link, or landmark region","url":"/bypass/"},{"path":"","topic":"","id":"color-contrast","lighthouse":["color-contrast"],"title":"Background and foreground colors do not have a sufficient contrast ratio","url":"/color-contrast/"},{"path":"","topic":"","id":"custom-control-roles","lighthouse":["custom-control-roles"],"title":"Custom controls have ARIA roles","url":"/custom-control-roles/"},{"path":"","topic":"","id":"custom-controls-labels","lighthouse":["custom-controls-labels"],"title":"Custom controls have associated labels","url":"/custom-controls-labels/"},{"path":"","topic":"","id":"definition-list","lighthouse":["definition-list"],"title":"`<dl>`s do not contain only properly ordered `<dt>` and `<dd>` groups, `<script>`, or `<template>` elements","url":"/definition-list/"},{"path":"","topic":"","id":"dlitem","lighthouse":["dlitem"],"title":"Definition list items are not wrapped in `<dl>` elements","url":"/dlitem/"},{"path":"","topic":"","id":"document-title","lighthouse":["document-title"],"title":"Document doesn't have a `<title>` element","url":"/document-title/"},{"path":"","topic":"","id":"duplicate-id","lighthouse":["duplicate-id"],"title":"`[id]` attributes on the page are not unique","url":"/duplicate-id/"},{"path":"","topic":"","id":"focus-traps","lighthouse":["focus-traps"],"title":"User focus is not accidentally trapped in a region","url":"/focus-traps/"},{"path":"","topic":"","id":"focusable-controls","lighthouse":["focusable-controls"],"title":"Interactive controls are keyboard focusable","url":"/focusable-controls/"},{"path":"","topic":"","id":"frame-title","lighthouse":["frame-title"],"title":"`<frame>` or `<iframe>` elements do not have a title","url":"/frame-title/"},{"path":"","topic":"","id":"heading-levels","lighthouse":["heading-levels"],"title":"Headings don't skip levels","url":"/heading-levels/"},{"path":"","topic":"","id":"html-has-lang","lighthouse":["html-has-lang"],"title":"`<html>` element does not have a `[lang]` attribute","url":"/html-has-lang/"},{"path":"","topic":"","id":"html-lang-valid","lighthouse":["html-lang-valid"],"title":"`<html>` element does not have a valid value for its `[lang]` attribute","url":"/html-lang-valid/"},{"path":"","topic":"","id":"image-alt","lighthouse":["image-alt"],"title":"Image elements do not have `[alt]` attributes","url":"/image-alt/"},{"path":"","topic":"","id":"input-image-alt","lighthouse":["input-image-alt"],"title":"`<input type=\"image\">` elements do not have `[alt]` text","url":"/input-image-alt/"},{"path":"","topic":"","id":"interactive-element-affordance","lighthouse":["interactive-element-affordance"],"title":"Interactive elements indicate their purpose and state","url":"/interactive-element-affordance/"},{"path":"","topic":"","id":"label","lighthouse":["label"],"title":"Form elements do not have associated labels","url":"/label/"},{"path":"","topic":"","id":"layout-table","lighthouse":["layout-table"],"title":"Presentational `<table>` elements do not avoid using `<th>`, `<caption>`, or the `[summary]` attribute","url":"/layout-table/"},{"path":"","topic":"","id":"link-name","lighthouse":["link-name"],"title":"Links do not have a discernible name","url":"/link-name/"},{"path":"","topic":"","id":"list","lighthouse":["list"],"title":"Lists do not contain only `<li>` elements and script supporting elements (`<script>` and `<template>`)","url":"/list/"},{"path":"","topic":"","id":"listitem","lighthouse":["listitem"],"title":"List items (`<li>`) are not contained within `<ul>` or `<ol>` parent elements","url":"/listitem/"},{"path":"","topic":"","id":"logical-tab-order","lighthouse":["logical-tab-order"],"title":"The page has a logical tab order","url":"/logical-tab-order/"},{"path":"","topic":"","id":"managed-focus","lighthouse":["managed-focus"],"title":"The user's focus is directed to new content added to the page","url":"/managed-focus/"},{"path":"","topic":"","id":"meta-refresh","lighthouse":["meta-refresh"],"title":"The document uses `<meta http-equiv=\"refresh\">`","url":"/meta-refresh/"},{"path":"","topic":"","id":"meta-viewport","lighthouse":["meta-viewport"],"title":"`[user-scalable=\"no\"]` is used in the `<meta name=\"viewport\">` element or the `[maximum-scale]` attribute is less than `5`","url":"/meta-viewport/"},{"path":"","topic":"","id":"object-alt","lighthouse":["object-alt"],"title":"`<object>` elements do not have `[alt]` text","url":"/object-alt/"},{"path":"","topic":"","id":"offscreen-content-hidden","lighthouse":["offscreen-content-hidden"],"title":"Offscreen content is hidden from assistive technology","url":"/offscreen-content-hidden/"},{"path":"","topic":"","id":"tabindex","lighthouse":["tabindex"],"title":"Some elements have a `[tabindex]` value greater than `0`","url":"/tabindex/"},{"path":"","topic":"","id":"td-headers-attr","lighthouse":["td-headers-attr"],"title":"Cells in a `<table>` element that use the `[headers]` attribute refer to an element ID not found within the same table","url":"/td-headers-attr/"},{"path":"","topic":"","id":"th-has-data-cells","lighthouse":["th-has-data-cells"],"title":"`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` do not have data cells they describe","url":"/th-has-data-cells/"},{"path":"","topic":"","id":"use-landmarks","lighthouse":["use-landmarks","managed-focus"],"title":"HTML5 landmark elements are used to improve navigation","url":"/use-landmarks/"},{"path":"","topic":"","id":"valid-lang","lighthouse":["valid-lange"],"title":"`[lang]` attributes do not have a valid value","url":"/valid-lang/"},{"path":"","topic":"","id":"video-caption","lighthouse":["video-caption"],"title":"`<video>` elements do not contain a `<track>` element with `[kind=\"captions\"]`","url":"/video-caption/"},{"path":"","topic":"","id":"video-description","lighthouse":["video-description"],"title":"`<video>` elements do not contain a `<track>` element with `[kind=\"description\"]`","url":"/video-description/"},{"path":"","topic":"","id":"visual-order-follows-dom","lighthouse":["visual-order-follows-dom"],"title":"Visual order on the page follows DOM order","url":"/visual-order-follows-dom/"},{"path":"","topic":"","id":"appcache-manifest","lighthouse":["appcache-manifest"],"title":"Uses Application Cache","url":"/appcache-manifest/"},{"path":"","topic":"","id":"deprecations","lighthouse":["deprecations"],"title":"Uses deprecated APIs","url":"/deprecations/"},{"path":"","topic":"","id":"doctype","lighthouse":["doctype"],"title":"Page lacks the HTML doctype, thus triggering quirks mode","url":"/doctype/"},{"path":"","topic":"","id":"errors-in-console","lighthouse":["errors-in-console"],"title":"Browser errors were logged to the console","url":"/errors-in-console/"},{"path":"","topic":"","id":"external-anchors-use-rel-noopener","lighthouse":["external-anchors-use-rel-noopener"],"title":"Links to cross-origin destinations are unsafe","url":"/external-anchors-use-rel-noopener/"},{"path":"","topic":"","id":"geolocation-on-start","lighthouse":["geolocation-on-start"],"title":"Requests the geolocation permission on page load","url":"/geolocation-on-start/"},{"path":"","topic":"","id":"image-aspect-ratio","lighthouse":["image-aspect-ratio"],"title":"Displays images with incorrect aspect ratio","url":"/image-aspect-ratio/"},{"path":"","topic":"","id":"js-libraries","lighthouse":["js-libraries"],"title":"Detected JavaScript libraries","url":"/js-libraries/"},{"path":"","topic":"","id":"no-document-write","lighthouse":["no-document-write"],"title":"Uses document.write()","url":"/no-document-write/"},{"path":"","topic":"","id":"no-vulnerable-libraries","lighthouse":["no-vulnerable-libraries"],"title":"Includes front-end JavaScript libraries with known security vulnerabilities","url":"/no-vulnerable-libraries/"},{"path":"","topic":"","id":"notification-on-start","lighthouse":["notification-on-start"],"title":"Requests the notification permission on page load","url":"/notification-on-start/"},{"path":"","topic":"","id":"password-inputs-can-be-pasted-into","lighthouse":["password-inputs-can-be-pasted-into"],"title":"Prevents users from pasting into password fields","url":"/password-inputs-can-be-pasted-into/"},{"path":"","topic":"","id":"uses-http2","lighthouse":["uses-http2"],"title":"Does not use HTTP/2 for all of its resources","url":"/uses-http2/"},{"path":"","topic":"","id":"uses-passive-event-listeners","lighthouse":["uses-passive-event-listeners"],"title":"Use passive listeners to improve scrolling performance","url":"/uses-passive-event-listeners/"},{"path":"","topic":"","id":"bootup-time","lighthouse":["bootup-time"],"title":"Reduce JavaScript execution time","url":"/bootup-time/"},{"path":"","topic":"","id":"critical-request-chains","lighthouse":["critical-request-chains"],"title":"Avoid chaining critical requests","url":"/critical-request-chains/"},{"path":"","topic":"","id":"dom-size","lighthouse":["dom-size"],"title":"Avoid an excessive DOM size","url":"/dom-size/"},{"path":"","topic":"","id":"efficient-animated-content","lighthouse":["efficient-animated-content"],"title":"Use video formats for animated content","url":"/efficient-animated-content/"},{"path":"","topic":"","id":"estimated-input-latency","lighthouse":["estimated-input-latency"],"title":"Estimated Input Latency","url":"/estimated-input-latency/"},{"path":"","topic":"","id":"first-contentful-paint","lighthouse":["first-contentful-paint"],"title":"First Contentful Paint","url":"/first-contentful-paint/"},{"path":"","topic":"","id":"first-cpu-idle","lighthouse":["first-cpu-idle"],"title":"First CPU Idle","url":"/first-cpu-idle/"},{"path":"","topic":"","id":"first-meaningful-paint","lighthouse":["first-meaningful-paint"],"title":"First Meaningful Paint","url":"/first-meaningful-paint/"},{"path":"","topic":"","id":"font-display","lighthouse":["font-display"],"title":"Ensure text remains visible during webfont load","url":"/font-display/"},{"path":"","topic":"","id":"interactive","lighthouse":["interactive"],"title":"Time to Interactive","url":"/interactive/"},{"path":"","topic":"","id":"lighthouse-max-potential-fid","lighthouse":["max-potential-fid"],"title":"Max Potential First Input Delay","url":"/lighthouse-max-potential-fid/"},{"path":"","topic":"","id":"mainthread-work-breakdown","lighthouse":["mainthread-work-breakdown"],"title":"Minimize main thread work","url":"/mainthread-work-breakdown/"},{"path":"","topic":"","id":"offscreen-images","lighthouse":["offscreen-images"],"title":"Defer offscreen images","url":"/offscreen-images/"},{"path":"","topic":"","id":"render-blocking-resources","lighthouse":["render-blocking-resources"],"title":"Eliminate render-blocking resources","url":"/render-blocking-resources/"},{"path":"","topic":"","id":"resource-summary","lighthouse":["resource-summary"],"title":"Keep request counts low and transfer sizes small","url":"/resource-summary/"},{"path":"","topic":"","id":"speed-index","lighthouse":["speed-index"],"title":"Speed Index","url":"/speed-index/"},{"path":"","topic":"","id":"third-party-summary","lighthouse":["third-party-summary"],"title":"Reduce the impact of third-party code","url":"/third-party-summary/"},{"path":"","topic":"","id":"time-to-first-byte","lighthouse":["time-to-first-byte"],"title":"Reduce server response times (TTFB)","url":"/time-to-first-byte/"},{"path":"","topic":"","id":"total-byte-weight","lighthouse":["total-byte-weight"],"title":"Avoid enormous network payloads","url":"/total-byte-weight/"},{"path":"","topic":"","id":"unminified-css","lighthouse":["unminified-css"],"title":"Minify CSS","url":"/unminified-css/"},{"path":"","topic":"","id":"unminified-javascript","lighthouse":["unminified-javascript"],"title":"Minify JavaScript","url":"/unminified-javascript/"},{"path":"","topic":"","id":"unused-css-rules","lighthouse":["unused-css-rules"],"title":"Remove unused CSS","url":"/unused-css-rules/"},{"path":"","topic":"","id":"user-timings","lighthouse":["user-timings"],"title":"User Timing marks and measures","url":"/user-timings/"},{"path":"","topic":"","id":"uses-long-cache-ttl","lighthouse":["uses-long-cache-ttl"],"title":"Serve static assets with an efficient cache policy","url":"/uses-long-cache-ttl/"},{"path":"","topic":"","id":"uses-optimized-images","lighthouse":["uses-optimized-images"],"title":"Efficiently encode images","url":"/uses-optimized-images/"},{"path":"","topic":"","id":"uses-rel-preconnect","lighthouse":["uses-rel-preconnect"],"title":"Preconnect to required origins","url":"/uses-rel-preconnect/"},{"path":"","topic":"","id":"uses-rel-preload","lighthouse":["uses-rel-preload"],"title":"Preload key requests","url":"/uses-rel-preload/"},{"path":"","topic":"","id":"uses-responsive-images","lighthouse":["uses-responsive-images"],"title":"Properly size images","url":"/uses-responsive-images/"},{"path":"","topic":"","id":"uses-text-compression","lighthouse":["uses-text-compression"],"title":"Enable text compression","url":"/uses-text-compression/"},{"path":"","topic":"","id":"uses-webp-images","lighthouse":["uses-webp-images"],"title":"Serve images in modern formats","url":"/uses-webp-images/"},{"path":"","topic":"","id":"viewport","lighthouse":["viewport"],"title":"Does not have a `<meta name=\"viewport\">` tag with `width` or `initial-scale`","url":"/viewport/"},{"path":"","topic":"","id":"canonical","lighthouse":["canonical"],"title":"Document does not have a valid `rel=canonical`","url":"/canonical/"},{"path":"","topic":"","id":"font-size","lighthouse":["font-size"],"title":"Document doesn't use legible font sizes","url":"/font-size/"},{"path":"","topic":"","id":"hreflang","lighthouse":["hreflang"],"title":"Document doesn't have a valid `hreflang`","url":"/hreflang/"},{"path":"","topic":"","id":"http-status-code","lighthouse":["http-status-code"],"title":"Page has unsuccessful HTTP status code","url":"/http-status-code/"},{"path":"","topic":"","id":"is-crawlable","lighthouse":["is-crawlable"],"title":"Page is blocked from indexing","url":"/is-crawlable/"},{"path":"","topic":"","id":"link-text","lighthouse":["link-text"],"title":"Links do not have descriptive text","url":"/link-text/"},{"path":"","topic":"","id":"meta-description","lighthouse":["meta-description"],"title":"Document does not have a meta description","url":"/meta-description/"},{"path":"","topic":"","id":"plugins","lighthouse":["plugins"],"title":"Document uses plugins","url":"/plugins/"},{"path":"","topic":"","id":"robots-txt","lighthouse":["robots-txt"],"title":"`robots.txt` is not valid","url":"/robots-txt/"},{"path":"","topic":"","id":"structured-data","lighthouse":["structured-data"],"title":"Structured data is valid","url":"/structured-data/"},{"path":"","topic":"","id":"tap-targets","lighthouse":["tap-targets"],"title":"Tap targets are not sized appropriately","url":"/tap-targets/"},{"path":"","topic":"","id":"redirects","lighthouse":["redirects"],"title":"Avoid multiple page redirects","url":"/redirects/"},{"path":"","topic":"","id":"content-width","lighthouse":["content-width"],"title":"Content is not sized correctly for the viewport","url":"/content-width/"},{"path":"","topic":"","id":"installable-manifest","lighthouse":["installable-manifest"],"title":"Web app manifest does not meet the installability requirements","url":"/installable-manifest/"},{"path":"","topic":"","id":"is-on-https","lighthouse":["is-on-https"],"title":"Does not use HTTPS","url":"/is-on-https/"},{"path":"","topic":"","id":"load-fast-enough-for-pwa","lighthouse":["load-fast-enough-for-pwa"],"title":"Page load is not fast enough on mobile networks","url":"/load-fast-enough-for-pwa/"},{"path":"","topic":"","id":"offline-start-url","lighthouse":["offline-start-url"],"title":"`start_url` does not respond with a 200 when offline","url":"/offline-start-url/"},{"path":"","topic":"","id":"pwa-cross-browser","lighthouse":["pwa-cross-browser"],"title":"Site works cross-browser","url":"/pwa-cross-browser/"},{"path":"","topic":"","id":"pwa-each-page-has-url","lighthouse":["pwa-each-page-has-url"],"title":"Each page has a URL","url":"/pwa-each-page-has-url/"},{"path":"","topic":"","id":"pwa-page-transitions","lighthouse":["pwa-page-transitions"],"title":"Page transitions don't feel like they block on the network","url":"/pwa-page-transitions/"},{"path":"","topic":"","id":"redirects-http","lighthouse":["redirects-http"],"title":"Does not redirect HTTP traffic to HTTPS","url":"/redirects-http/"},{"path":"","topic":"","id":"service-worker","lighthouse":["service-worker"],"title":"Does not register a service worker that controls page and `start_url`","url":"/service-worker/"},{"path":"","topic":"","id":"splash-screen","lighthouse":["splash-screen"],"title":"Is not configured for a custom splash screen","url":"/splash-screen/"},{"path":"","topic":"","id":"themed-omnibox","lighthouse":["themed-omnibox"],"title":"Does not set a theme color for the address bar","url":"/themed-omnibox/"},{"path":"","topic":"","id":"without-javascript","lighthouse":["without-javascript"],"title":"Does not provide fallback content when JavaScript is not available","url":"/without-javascript/"},{"path":"","topic":"","id":"works-offline","lighthouse":["works-offline"],"title":"Current page does not respond with a 200 when offline","url":"/works-offline/"},{"path":"","topic":"","id":"apple-touch-icon","lighthouse":["apple-touch-icon"],"title":"Does not provide a valid apple-touch-icon","url":"/apple-touch-icon/"},{"path":"","topic":"","id":"lighthouse-total-blocking-time","lighthouse":["total-blocking-time"],"title":"Total Blocking Time","url":"/lighthouse-total-blocking-time/"},{"path":"","topic":"","id":"aria-hidden-body","lighthouse":["aria-hidden-body"],"title":"`[aria-hidden=\"true\"]` is present on the document `<body>`","url":"/aria-hidden-body/"},{"path":"","topic":"","id":"aria-hidden-focus","lighthouse":["aria-hidden-focus"],"title":"`[aria-hidden=\"true\"]` elements contain focusable descendants","url":"/aria-hidden-focus/"},{"path":"","topic":"","id":"duplicate-id-active","lighthouse":["duplicate-id-aria"],"title":"`[id]` attributes on active, focusable elements are not unique","url":"/duplicate-id-active/"},{"path":"","topic":"","id":"duplicate-id-aria","lighthouse":["duplicate-id-aria"],"title":"ARIA IDs are not unique","url":"/duplicate-id-aria/"},{"path":"","topic":"","id":"form-field-multiple-labels","lighthouse":["form-field-multiple-labels"],"title":"Form fields have multiple labels","url":"/form-field-multiple-labels/"},{"path":"","topic":"","id":"heading-order","lighthouse":["heading-order"],"title":"Heading elements are not in a sequentially-descending order","url":"/heading-order/"},{"path":"","topic":"","id":"lighthouse-largest-contentful-paint","lighthouse":["largest-contentful-paint"],"title":"Largest Contentful Paint","url":"/lighthouse-largest-contentful-paint/"},{"path":"","topic":"","id":"charset","lighthouse":["charset"],"title":"Charset declaration is missing or occurs too late in the HTML","url":"/charset/"},{"path":"","topic":"","id":"maskable-icon-audit","lighthouse":["maskable-icon"],"title":"Manifest doesn't have a maskable icon","url":"/maskable-icon-audit/"},{"path":"","topic":"","id":"unused-javascript","lighthouse":["unused-javascript"],"title":"Remove unused JavaScript","url":"/unused-javascript/"},{"path":"","topic":"","id":"non-composited-animations","lighthouse":["non-composited-animations"],"title":"Avoid non-composited animations","url":"/non-composited-animations/"},{"path":"","topic":"","id":"third-party-facades","lighthouse":["third-party-facades"],"title":"Lazy load third-party resources with facades","url":"/third-party-facades/"},{"path":"","topic":"","id":"aria-name","lighthouse":["aria-command-name","aria-input-field-name","aria-meter-name","aria-progressbar-name","aria-toggle-field-name","aria-tooltip-name","aria-treeitem-name"],"title":"ARIA items do not have accessible names","url":"/aria-name/"},{"path":"","topic":"","id":"csp-xss","lighthouse":["csp-xss"],"title":"Ensure CSP is effective against XSS attacks","url":"/csp-xss/"}]}