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.