Speed Test

Personal Project — Summer 2026

A self-hosted alternative to third-party speed test services, this single-page app measures download speed, upload speed, and ping directly against the server hosting this site — with live-updating results and connection details (visitor IP and server identity) so you know exactly what you're testing against.

Ping is measured via five sequential requests, discarding the warm-up request and reporting the median round-trip time. Download throughput streams a generated payload via the Streams API, reading it incrementally for live progress; upload throughput sends a generated payload via XMLHttpRequest, using upload.onprogress for live readings. An Express server serves the page and API from the same origin.

Highlights

  • Download, upload, and ping measurements (Mbps / ms) against this site's own server
  • Live progress updates at least once per second during transfer phases
  • Connection details: visitor public IP and server location/identity
  • Responsive layout from 320px and up, with clear error/retry handling

Technologies Applied

Node.jsExpressJavaScriptStreams API