Stats as of 2026-11-09 21:18 UTC โ€” last scan: 2026-11-09

1,583 scan batches run

87,690 of 87,696 available pages audited (100.0% coverage) 74,968 successful audits (85.5% of audited)

Overall average Lighthouse scores (0โ€“100 scale):

Performance Accessibility Best Practices SEO
88 89 90 88

Lighthouse Scores by Country

Country Audited Available Perf A11y Best Practices SEO Last Scan
Austria 822 822 88 90 92 89 2026-11-03
Belgium 1,329 1,329 87 91 92 90 2026-11-09
Bulgaria 353 353 86 81 88 88 2026-11-06
Canada 4,469 4,469 93 89 89 88 2026-11-09
Croatia 257 257 91 72 92 90 2026-10-25
Czechia 866 866 90 87 92 88 2026-11-08
Denmark 1,536 1,536 87 95 96 90 2026-11-08
Estonia 401 401 91 87 86 86 2026-11-09
Finland 199 199 87 94 96 87 2026-10-24
France 10,009 10,009 90 90 92 91 2026-11-09
Germany 6,599 6,599 86 90 95 88 2026-11-09
Greece 1,752 1,752 86 86 90 88 2026-11-09
Hungary 392 392 89 77 83 86 2026-10-30
Iceland 145 145 91 92 91 91 2026-10-25
Ireland 536 536 91 92 90 87 2026-11-06
Italy 5,351 5,351 88 88 92 88 2026-11-09
Latvia 803 803 87 86 91 85 2026-11-04
Lithuania 122 122 86 82 87 84 2026-10-25
Luxembourg 573 573 91 93 94 91 2026-11-07
Malta 610 610 89 86 80 79 2026-11-02
Netherlands 945 945 91 94 94 88 2026-11-09
Norway 249 249 91 93 92 89 2026-10-23
Poland 14,951 14,951 87 86 87 90 2026-11-09
Portugal 3,508 3,508 84 84 86 86 2026-11-09
Cyprus 29 29 81 86 83 86 2026-10-23
Romania 807 807 88 77 89 84 2026-11-09
Slovakia 442 442 90 88 90 88 2026-11-03
Slovenia 214 214 87 80 89 85 2026-10-24
Spain 6,091 6,091 83 81 81 84 2026-11-09
Sweden 1,702 1,702 90 93 93 87 2026-11-08
Switzerland 2,123 2,123 84 91 96 87 2026-11-09
United Kingdom 19,511 19,511 90 94 92 87 2026-11-09

Scores are averages across all successfully audited URLs, displayed as 0โ€“100 (Lighthouse stores scores as 0.0โ€“1.0 internally).


๐Ÿ“ฅ Machine-readable results: Download machine-readable Lighthouse data (JSON) ยท Download per-URL Lighthouse data (CSV)


Overview

The Lighthouse scanner runs the Google Lighthouse CLI against each government page URL and extracts four headline category scores:

Category What it measures
Performance Page speed and Core Web Vitals (LCP, FID, CLS, etc.)
Accessibility WCAG-aligned accessibility checks (colour contrast, ARIA labels, keyboard navigation, โ€ฆ)
Best Practices Security headers, HTTPS, modern web APIs, console errors
SEO Search-engine crawlability, meta tags, structured data

All scores are on a 0โ€“100 scale (stored internally as 0.0โ€“1.0).

Note: PWA (Progressive Web App) audits are skipped for government sites because they are not relevant to the EU Web Accessibility Directive requirements and omitting them reduces per-URL scan time.


How to Interpret the Scores

Lighthouse scores are based on a single page load at the time of the audit. Scores can vary between runs due to network conditions and server load, so the values shown here are averages across all successfully audited URLs for each country.

  • 90โ€“100: Good
  • 50โ€“89: Needs improvement
  • 0โ€“49: Poor

For a detailed breakdown of individual audit failures, download the machine-readable Lighthouse data (JSON) or the per-URL Lighthouse data (CSV).


Running a Scan

  1. Go to Actions โ†’ Scan Lighthouse
  2. Click Run workflow
  3. Optionally enter a country code (e.g. ICELAND) or leave blank to scan all
  4. Optionally adjust the rate limit, concurrency, and skip-recently-scanned-days parameters

The scan runs automatically every day at 03:00 UTC. With --concurrency 3 and skipping URLs audited within the last 30 days, each daily run covers roughly 750โ€“1,000 URLs while ensuring every URL is refreshed at least monthly.

Via the command line

# Scan a single country
python3 -m src.cli.scan_lighthouse --country ICELAND

# Scan all countries (with a 110-minute runtime cap and 3 concurrent processes)
python3 -m src.cli.scan_lighthouse \
  --all \
  --max-runtime 110 \
  --concurrency 3 \
  --skip-recently-scanned-days 30 \
  --only-categories performance,accessibility,best-practices,seo \
  --throttling-method provided

Architecture

flowchart TD
    A["scan-lighthouse.yml\n(GitHub Actions โ€” daily at 03:00 UTC)"]
    A --> B["scan_lighthouse.py (CLI)"]
    B --> C["LighthouseScannerJob.scan_country()"]
    C --> D["Filter out recently-scanned URLs\n(_get_recently_scanned_urls)"]
    D --> E["LighthouseScanner.scan_urls_batch()\n(asyncio.Semaphore โ€” up to 3 concurrent)"]
    E --> F["For each URL (parallel)"]
    F --> G["subprocess: lighthouse URL --output=json\n--only-categories=performance,accessibility,\nbest-practices,seo --throttling-method=provided"]
    G --> H["_parse_lighthouse_output() โ†’ 4 category scores"]
    H --> I["Save to url_lighthouse_results table\n(incremental, per URL)"]
    I --> J["Write *_lighthouse.toon output file"]