Skip to content

How a getReport score is made

Every number in a report comes from 187 checks, a public formula and data sources named below. Nothing is weighed by hand, and sponsors cannot change a score.

How a page is measured

One report checks one page, as a person asked for it, on mobile or desktop. Our crawler, GetReportBot, fetches the page from the Frankfurt region, Germany, follows up to 10 redirects and reads the files around it (robots.txt, sitemaps, security.txt, llms.txt). The page is then opened in Chromium to measure what visitors get after JavaScript runs.

  • Speed: Google PageSpeed Insights (Lighthouse) for the lab numbers, and the Chrome UX Report for how real visitors experienced the page over the last 28 days, when Google has enough data.
  • Accessibility: axe-core in Chromium on the rendered page, plus checks of our own (zoom, tap targets, contrast summary). Automated tools find about a third of accessibility problems; the rest needs a person.
  • Security: the response headers, the TLS certificate and handshake, cookies, a fixed list of at most 15 well-known paths, and Google’s Safe Browsing list.
  • SEO, structured data, social previews and best practices: the HTML as served and as rendered, the links and images on the page, and the structured data against Google’s documented requirements.
  • Libraries and hosting: known vulnerabilities come from OSV.dev, the network that owns the server’s address from Team Cymru’s public lookup.

The same page is served from a 12-hour cache instead of being fetched again, so two people checking it an hour apart see the same report.

How the scores are calculated

Each check ends as passed, a problem, a warning or information. A module starts at 100 and loses the check’s weight for a problem and half of it for a warning; information costs nothing. The speed module is the exception: its score is Lighthouse’s performance score, so it matches PageSpeed Insights.

The overall score is the weighted mean of the modules that finished (weights below, out of 100); a module that could not run is left out rather than counted as zero. Grades: A from 90, B from 80, C from 70, D from 50, F below. A page that answers with an error (HTTP 4xx or 5xx) gets no overall grade, because the checks then describe the error page, not the site.

Module weights in the overall score
ModuleWeight in the overall scoreChecks
Speed30%30
SEO25%52
Security15%33
Accessibility10%14
Structured data5%10
Social5%11
Best practices10%37

Every check, with its weight

The weight is what a problem costs the module score; each name links to the page that explains the problem and the fix. The same list is available as JSON.

Speed: 30 checks
SEO: 52 checks
Security: 33 checks
Accessibility: 14 checks
Structured data: 10 checks
Social: 11 checks
Best practices: 37 checks

What a report does not do

  • It checks one page, not a whole site. Templates differ, so check a product page or an article too.
  • It measures from one place at one moment. A slow answer can be a busy minute; run it again before you act on a single number.
  • It sees only public pages: no logins, no forms, no guessing of paths. WordPress plugins count only when the page reveals them.
  • Lab speed numbers are a simulation of a mid-range phone on a slow network. The real-visitor numbers, where Google has them, are the ones that count for ranking.