Back to Lighthouse

Lighthouse Scores

docs/scoring.md

13.2.02.7 KB
Original Source

Lighthouse Scores

How is the Performance score calculated?

➡️ Please read Lighthouse Performance Scoring at developer.chrome.com.

How is the Best Practices score calculated?

All audits in the Best Practices category are equally weighted. Therefore, implementing each audit correctly will increase your overall score by ~6 points.

How is the SEO score calculated?

All audits in the SEO category are equally weighted, with the exception of Structured Data, which is an unscored manual audit. Therefore, implementing each audit correctly will increase your overall score by ~8 points.

How is the accessibility score calculated?

<!-- To regnerate score weights, run `node core/scripts/print-a11y-scoring.js`-->

The accessibility score is a weighted average. The specific weights for v7 are as follows:

(See the v6 scoring explanation)

audit idweight
aria-allowed-attr4.1%
aria-hidden-body4.1%
aria-required-attr4.1%
aria-required-children4.1%
aria-required-parent4.1%
aria-roles4.1%
aria-valid-attr-value4.1%
aria-valid-attr4.1%
button-name4.1%
duplicate-id-aria4.1%
image-alt4.1%
input-image-alt4.1%
label4.1%
meta-refresh4.1%
meta-viewport4.1%
video-caption4.1%
accesskeys1.2%
aria-command-name1.2%
aria-hidden-focus1.2%
aria-input-field-name1.2%
aria-meter-name1.2%
aria-progressbar-name1.2%
aria-toggle-field-name1.2%
aria-tooltip-name1.2%
aria-treeitem-name1.2%
bypass1.2%
color-contrast1.2%
definition-list1.2%
dlitem1.2%
document-title1.2%
duplicate-id-active1.2%
frame-title1.2%
html-has-lang1.2%
html-lang-valid1.2%
link-name1.2%
list1.2%
listitem1.2%
object-alt1.2%
tabindex1.2%
td-headers-attr1.2%
th-has-data-cells1.2%
valid-lang1.2%
form-field-multiple-labels0.8%
heading-order0.8%

Each audit is a pass/fail, meaning there is no room for partial points for getting an audit half-right. For example, that means if half your buttons have screenreader friendly names, and half do not, you don't get "half" of the weighted average - you get a 0 because it needs to be implemented correctly throughout the page.