Skip to content

Behind the scenes

How getReport stays free

One server, Google's free speed data and caching: why a full website report costs so little that we can give it away.

getReport team3 min read

getReport has no paid plan and no ads, so it has to be cheap to run. This is how it stays that way, and the limits that keep a busy day from turning into a big bill.

  • 1server runs the site, the database and every check
  • 0paid APIs for speed data, within Google's daily quota
  • 12 ha report is reused for the same address

One server does all of it

A virtual server in Germany with 4 cores, 8 GB of memory and 75 GB of disk runs the website, the API, the queue, the database and the workers that fetch and render pages. Screenshots and PDFs go to Cloudflare R2, which charges for storage but not for downloads, and Cloudflare sits in front of the site.

Why a report costs so little

The expensive part of a website report is measuring speed: loading the page in a real browser, several times, on a throttled phone profile. Google runs exactly that measurement for anyone through the PageSpeed Insights API, and the Chrome UX Report API adds real visitors' speed data. Both are free within a daily quota, so we use them first and only render the page ourselves for what they don't cover (accessibility, screenshots, the WordPress plugin cost breakdown).

Everything else is small: one HTTP request for the page, a few for robots.txt, the sitemap and headers, a TLS handshake, some HTML parsing. That is milliseconds of work per check.

The more reports, the cheaper each one

The server is a fixed cost, so what one report costs depends on how many we run:

Server cost per fresh report, relative to 100 reports a day (= 100)
  • 100 a day100
  • 300 a day33
  • 1,000 a day10

Source: our hosting invoices, September 2026: the fixed monthly cost divided by 30 days of reports at each volume. Cached reports add nothing.

At some volume the server will be full. The plan then is a second worker machine, which roughly doubles capacity, so the cost per report stays in the same range.

The limits that keep the bill flat

A free tool with a pay-per-use bill is one viral post away from trouble. So nothing in getReport's cost grows without a cap:

  • Cache. A report for the same normalised address within 12 hours is the same report. A cache hit costs nothing.
  • Rate limits. Up to 10 fresh reports per visitor every 10 minutes and 50 a day, and 5 fresh reports per target site per hour.
  • A daily cap tied to Google's quota. If it runs out, the speed test runs Lighthouse on our own server and labels the result a lab estimate, rather than calling a paid service.
  • One job at a time per page. Two people checking the same site at the same moment share one run.

When there is a spike, reports queue for longer. They don't get more expensive.

What donations add

Donations keep the core running, and they pay for the features that need their own infrastructure or a data supplier: a crawl of hundreds of pages, daily monitoring and alerts, test locations in the US and Singapore. Each is a funded unlock on the funding page, and each switches on for everyone once donations cover it.

How does your site compare?

Free report, no account, ready in under a minute.

Check my site

More posts

All posts →