OpenSpeedTest is a browser-based network throughput test that you host yourself: a set of static HTML, CSS and JavaScript files that measure download speed, upload speed, ping and jitter between any browser and your own server. Nothing is installed on the client device and no third-party service sits in the middle of the measurement, so the numbers describe your own link rather than a vendor’s edge network.
The page moves bulk data with XMLHttpRequest against the very web server that served it. The same files answer the download and the upload side of the test, so a single static vhost is the whole backend.
There is no PHP, no database and no framework to patch. The test script is vanilla JavaScript under 8 kB gzipped, the interface is drawn in SVG so it scales to any display size, and the client only needs a browser of IE10 vintage or newer. That makes it practical on an isolated management network where you cannot install agents.
Any web server that understands HTTP/1.1 will do — Nginx, Apache, IIS or Express. It needs to answer GET, POST, HEAD and OPTIONS with 200, accept POSTs to static files, allow a request body of about 35 MB (client_max_body_size), keep a timeout longer than 60 seconds, and ideally have access logging disabled so disk I/O does not distort the result. Behind a reverse proxy the same body limit has to be raised there too. Prebuilt server applications are published for Windows, macOS, Linux, Android and iOS, alongside a Docker image, a Helm chart, a Snap and a Microsoft Store build.
URL keywords cover unattended runs: ?Run starts a test on load, ?Run=10 waits ten seconds first, and ?Stress=Low — or Medium, High, VeryHigh, Extreme, Day, Year, or a plain number of seconds — keeps the test running continuously. A list of servers can be declared in the page so the client automatically picks the one with the least latency, and setting saveData posts each result set to an endpoint of your own for record keeping.
It measures throughput between one browser and one server, not the shape of the wider internet path, and it does not measure packet loss — the same project publishes a separate OpenPacketLoss tool for that. A test against a host on the same LAN reports the LAN’s ceiling rather than your ISP’s, and the result is only as good as the server’s uplink and the client’s Wi-Fi.