A self-hosted web page performance analyser that gives you Lighthouse-style metrics without sending your URLs to a third-party service. Useful for internal tools, staging environments, or anything you don’t want leaving your network.

What it measures

  • Time to first byte (TTFB)
  • DOM content loaded
  • Total page load time
  • Total transfer size (HTML + assets)
  • Number of requests
  • Render-blocking resources

It doesn’t run a full headless browser — it uses Go’s HTTP client to fetch the page and parses asset references from the HTML. Not a Lighthouse replacement for complex SPAs, but very fast and accurate for server-rendered pages.

Running it

# Single URL check
speedcheck https://example.com

# JSON output for scripting
speedcheck --json https://example.com

# Watch mode — check every 60s and log results
speedcheck --watch --interval 60 https://example.com

Self-hosted web UI

There’s an optional web UI that accepts URLs via a form and returns results as a simple report page:

speedcheck serve --port 8090

Then http://localhost:8090 gives you a form. Results are not stored — each check is stateless.

Current limitations

JavaScript-rendered content isn’t analysed. If your page’s critical content loads via JS, the numbers will be incomplete. This is a known limitation and not something I’m planning to fix — for that use case, just use Lighthouse.