Pick a test node: HTTP estimates up/down in-browser, plus copy/paste iPerf3 CLI hints (browsers cannot speak native iPerf3). Free online tool, no login, no sign-up.
LocalPersonal data security
Loading Tool Engine
Usage Guide & Tech FAQ
Step-by-step help & technical notesUsage Guide
- Defaults: 50 MB download/upload payloads. The node preset auto-selects from your public IP (Cloudflare cdn-cgi/trace + 1.1.1.1, then geojs.io, then ipapi.co). Changing the node dropdown disables further auto-override.
- Use grouped presets: China ISP & regions (Telecom/Unicom/Mobile, mainland, Hong Kong, Taiwan (China)); International (NA/EU/APAC + Singapore/Japan); General (default Cloudflare, US/EU httpbin, EU OVH-only, etc.).
- Set download and upload sizes independently (1–200 MB). Larger payloads stabilize averages but take longer; monolithic Blob fallbacks can use ~similar RAM—prefer Chrome/Edge for streaming upload at large sizes.
- Download test: tries node-specific HTTP GET candidates in order: exact-byte Cloudflare __down?bytes=N, npm mirror tarballs / CacheFly .test / OVH .dat with early stop after enough bytes, httpbin /bytes/n, then fallbacks. Uses streaming reads and validates minimum bytes received vs target.
- Upload test: prefers fetch + ReadableStream body to speed.cloudflare.com/__up (Chromium duplex half); then fetch + Blob, then XHR with upload.onprogress. httpbin nodes POST to /post up to ~12 MB, otherwise or on failure fallback to Cloudflare.
- Download then upload runs sequentially and resets the live gauge peak between phases. Controls lock while a run is active.
- Live UI: headline Mbps ≈ (bytes × 8) / seconds / 1e6; arc + bar show progress vs target; gauge full-scale ramps with observed peak (up to ~2000 Mbps) to keep the needle meaningful.
- For native iPerf3, copy iperf3 -c <host> -p <port> from the panel; append -R for download (server → client). Public hosts may rotate ports (5201–5210) or rate-limit.
- Methodology tip: same node + payload, repeat 2–3× (wired vs Wi‑Fi, proxy on/off, different browsers); avoid running while other heavy downloads saturate the link.
- If download fails (CORS, short read): corporate filters often block `cloudflare.com`, `httpbin.org`, `cachefly.net`, `proof.ovh.net`, `npmmirror.com`—try another network, allowlist domains, or a Cloudflare-only preset.
- If upload fails: try Chrome/Edge; check middleboxes blocking large POSTs; httpbin errors trigger Cloudflare fallback—check the result card label for hints.
- Read the title and description first to confirm this utility matches your task (avoid using the wrong tool and misinterpreting output).
Related Tech Knowledge
- Architecture: client-only speed tests; traffic is browser to third-party HTTPS endpoints, not proxied through this site’s app API. The site ships static UI + node tables (bandwidthIperfNodes.ts).
- Download path: Fetch + ReadableStream reader loop; Mbps = (total_bytes × 8) / elapsed_s / 1e6, MB/s = total_bytes / elapsed_s / 1024². earlyStop calls reader.cancel() once ~98% of the target bytes are read from larger static files.
- Upload path: POST application/octet-stream to Cloudflare __up. Order: streaming fetch → fetch(Blob) → XHR(Blob) for compatibility/progress. httpbin /post is capped/heuristically bypassed with Cloudflare fallback on failure or large payloads.
- Node model: each node lists ordered downloads[] (resolve(bytes) URL + optional earlyStop) and an upload strategy (cloudflare vs httpbin). Domestic stacks bias npm mirror + Cloudflare + httpbin; overseas stacks add CacheFly and OVH proofs to vary CDN/geography.
- vs iPerf3: iPerf3 opens TCP/UDP sessions (typical port 5201) and measures at a different layer. This tool measures HTTPS/HTTP throughput including TLS, HTTP/2 multiplexing, browser scheduling, and remote HTTP policies—not interchangeable with ISP lab tests or raw iPerf numbers.
- HTTP/2 note: browsers may multiplex streams on one connection; behavior differs from multi-connection download managers.
- Geo default: bandwidthGeoDefaultNode.ts maps country/continent → node id (e.g. CN→mainland preset, JP→Japan preset); failures fall back to cf-anycast. Used only for the initial dropdown value, with minimization safeguards for personal data.
- Accuracy: TTFB is included in elapsed time, so small payloads under-estimate steady-state throughput—use ≥10 MB, commonly 50 MB. Background throttling and CPU can skew results low.
- Privacy: results stay in-page; geo lookup calls public endpoints (Cloudflare trace / geojs / ipapi)—see their policies.
- Safety: only hard-coded HTTPS targets; do not inject untrusted endpoints into local builds.
- Ops debugging: log node id, payload size, UA, proxy flag, timestamps; pair with traceroute/MTR and CLI iperf3 to separate L3 vs L7 bottlenecks.
- Core parsing and computation run in your browser; by default your raw business payload is not persisted to this site’s servers (see on-page privacy notes).