Download
The useful payload received by the browser per second. It is a single-flow result for this route, not a promise that every download will run at the same rate.
This page runs M-Lab's NDT7 client in your browser. It measures one encrypted TCP connection in each direction to an available M-Lab server. The result describes this test path at this moment; it is not a guarantee of your broadband plan's maximum rate.
Test payload travels between your browser and M-Lab. TinySpeedTest's server only delivers this page.
Download
— MbpsUpload
— MbpsTCP RTT
— msAccept the M-Lab data notice to load available servers.
The test has four stages. Download and upload use separate secure WebSocket connections and run one after the other.
The browser asks M-Lab Locate for available NDT7 servers. Automatic mode uses M-Lab's first recommendation; manual mode lets you choose another server from that response. This is not a directory of every M-Lab server, and the available choices can change between tests.
The NDT7 client connects to the selected server with WebSocket over TLS using the net.measurementlab.ndt.v7 subprotocol. The access token returned by Locate stays in the connection URL; TinySpeedTest does not print or store it.
The M-Lab server sends test-only binary data. The browser counts how many bytes arrive and how much time has elapsed. NDT7 normally runs this direction for up to ten seconds after the WebSocket handshake, and the server may finish earlier if the result has stabilized.
The browser sends test-only binary data to the same selected M-Lab server over a new connection. Message sizes grow during the test so that both slower and faster links can be exercised without starting with a very large buffer.
Technical references: NDT7 protocol specification · M-Lab developer documentation
Download and upload are reported in megabits per second (Mbps). The browser measures the useful test payload delivered during the connection. WebSocket, TLS, TCP/IP, and link-layer headers are not counted in the result.
This is called application-level goodput. It answers a practical question: how quickly can this browser move data over one TCP connection to this M-Lab server right now?
It does not isolate the last mile. The result also reflects Wi-Fi quality, the device and browser, the route through the ISP, congestion between networks, latency, packet loss, and the selected server.
Mbps = bytes × 8 ÷ elapsed seconds ÷ 1,000,000
The live dial uses a smoothed running value so it is easier to read. The number kept at the end comes from the latest client measurement, not from the animation.
If the browser receives 100,000,000 bytes in 8 seconds:
100,000,000 × 8 ÷ 8 ÷ 1,000,000 = 100 Mbps
100 Mbps is about 12.5 MB/s before other limits and overhead, because one byte contains eight bits. Internet plans are normally advertised in Mbps; file downloads are often displayed in MB/s.
Our web server delivers the HTML, CSS, JavaScript, and logo that make up this page. Once you start a test, the NDT7 client in the page contacts M-Lab Locate and then exchanges the large download and upload payloads directly with an M-Lab server.
That separation matters: our hosting bandwidth is not part of the speed measurement. It does not mean the test is anonymous. M-Lab sees the public IP address used to connect to its server.
Learn about NDT7The useful payload received by the browser per second. It is a single-flow result for this route, not a promise that every download will run at the same rate.
The useful payload sent by the browser per second. Cloud backups, video calls, VPNs, and other active uploads can lower it while the test runs.
The smoothed round-trip time reported by the server's TCP connection, when available. It is measured under test load and is not an ICMP ping or an idle-latency test.
The M-Lab location used for this run. A different server or route can produce a different result even when your local connection has not changed.
NDT7 uses one TCP connection in each direction. Some commercial speed tests open several connections at once to fill a high-capacity link more aggressively. On gigabit service or a high-latency route, a single connection can report a lower rate. Neither result should be presented as a universal measurement of every internet service.
One result is a snapshot. If you are diagnosing a problem, compare several tests taken under known conditions rather than treating the largest number as the only valid one.
Pause other traffic. Stop downloads, cloud sync, streaming, and software updates on this device and, when possible, on other devices sharing the connection.
Separate Wi-Fi from ISP performance. Test once over Ethernet if available. A large gap between Ethernet and Wi-Fi usually points to the local wireless link, not necessarily the internet service.
Know whether a VPN is active. A VPN changes the route and adds its own server and encryption overhead. Keep it on if you want to measure everyday VPN performance; turn it off if you want to examine the direct ISP path.
Repeat at different times. Similar slow results during busy evening hours can indicate congestion. A single fast or slow run is not enough to establish a pattern.
M-Lab is an open internet measurement platform. Its NDT results are made available for research, and the published data includes the public-facing IP address used for the test along with network and performance measurements. M-Lab states that its tests use synthetic traffic and do not inspect your emails, searches, visited pages, or other private internet traffic.
TinySpeedTest does not save a test history and does not receive the large measurement payload. Normal website hosting logs are separate from the M-Lab result and may include standard request information such as IP address, browser type, requested page, and time.
You must accept the notice beside the Start button before each page session can initiate a test. M-Lab's current Acceptable Use Policy says an interactive user must not run more than 40 tests per day.
The short answer is often “it depends on the path.” These are the details that matter most.
Yes. The interactive speed test is free and does not require an account. M-Lab currently limits interactive users to 40 tests per day.
An advertised plan rate is usually the maximum access rate under stated conditions. This result also includes the effects of Wi-Fi, your device, a single TCP connection, current congestion, and the route to M-Lab. Compare with Ethernet and stop other traffic before drawing a conclusion.
M-Lab collects measurement data including the public-facing IP address and publishes test data for internet research. Consent is required before every test begins.
A firewall, VPN, proxy, browser extension, temporary node issue, or network interruption can block the secure WebSocket connection. Check the connection and try again.