Skip to content

Webperf documentation

Webperf measures website quality: how fast a site is, whether it works for everyone, whether it protects visitors' privacy, and whether it follows web standards.

Where do you want to start?

The three parts

Part What it is Cost
Webperf Core The test engine. Open source, run it anywhere. Free
Webperf.se Public comparison of Swedish websites. Free to be listed
Webperf Cloud Monitoring, history, reports, an API and support for your own sites. From €49 a month

All three use the same test engine. A score from your own laptop is calculated exactly like a score on Webperf.se.

Who is behind what?

Webperf Core is a community project. It started in 2019 and is built by volunteers under the MIT licence. The code belongs to no company. Anyone can read it, run it, change it and contribute to it.

Webperf.se and Webperf Cloud are run by Webperf AB. The company uses Webperf Core as its test engine on the same terms as everyone else, and contributes back to the project.

Behind both the company and, before it existed, the Swedish webperf community stands Marcus Österberg, who has worked with web performance, accessibility and web standards since the late 1990s.

What "we" means in this documentation

Where the text says "we", it means Webperf AB, and it only appears on the pages about Webperf.se and Webperf Cloud. The Webperf Core pages say "the project" or "the community" instead, because no single party speaks for it.

Webperf Cloud is called Premium in Swedish

The paid service is marketed as Webperf Cloud internationally and as Premium in Swedish. Same service, different name.

Test it in five minutes

You need Python 3.13 or later, Node.js 24, and a browser.

git clone https://github.com/Webperf-se/webperf_core.git
cd webperf_core

pip install -r requirements.txt
npm install --omit=dev

python default.py -u https://example.com -t 22 -r
docker run -it --rm \
  --shm-size=4g \
  -e MAX_OLD_SPACE_SIZE=3000 \
  webperfse/webperf-core:latest \
  python default.py -u https://example.com -t 22 -r
# .github/workflows/webperf.yml
name: Webperf test
on: [push]
jobs:
  webperf:
    runs-on: ubuntu-latest
    steps:
      - run: |
          docker run --rm --shm-size=4g -e MAX_OLD_SPACE_SIZE=3000 \
            webperfse/webperf-core:latest \
            python default.py -u https://example.com -t 22 -r

If you'd rather not write YAML, fork webperf_core and use its built-in workflow instead. Here's how.

The -r flag prints a review in the terminal listing what should be fixed. Without it you only get the score.

The tests

Sixteen tests are in service. The number is what you pass to -t.

No Test Measures
2 404 (Page not Found) That the error page responds correctly and says something useful
9 Standard files robots.txt, sitemap, security.txt, feeds
15 Performance (Sitespeed.io) Load time and number of requests
18 Accessibility (Pa11y) WCAG errors, with Axe as a second opinion
21 HTTP & Network HTTPS, TLS, HTTP/2 and /3, IPv6, security headers
22 Energy Efficiency Data transferred and carbon per page view
23 Tracking and Privacy Trackers, fingerprinting, ad servers, cookies
24 Email (Beta) SPF, DKIM, DMARC, MTA-STS
25 Software Which software runs the site, and known vulnerabilities
26 Accessibility Statement (Alfa) The legal requirement under the Swedish DOS Act
27 CSS Lint (Stylelint) Stylelint
28 HTML Lint (html-validate) html-validate
29 JS Lint (ESLint) ESLint
30 Lighthouse Performance, accessibility, SEO and best practice
31 Privacy (Webbkoll) What the page leaks about its visitors (self-hosted Webbkoll)
32 DNS (Zonemaster) Delegation and DNSSEC via Zonemaster

Read about each test

Contribute

Webperf Core is open source under the MIT licence.