M-LAB NDT7 SPEED TEST

Test your download and upload speed.

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.

YOUR BROWSER M-LAB

Test payload travels between your browser and M-Lab. TinySpeedTest's server only delivers this page.

M-LAB NDT7 Ready to test
NETWORK SPEED 0.00 Mbps
  1. 1Locate
  2. 2Download
  3. 3Upload
  4. 4Result

Download

Mbps

Upload

Mbps

TCP RTT

ms

Accept the M-Lab data notice to load available servers.

Accept the M-Lab data notice to begin.

ProtocolM-Lab NDT7
TransportWebSocket over TLS
ConnectionsOne TCP flow per direction
Test trafficBrowser ↔ M-Lab
HOW THE TEST RUNS

What happens after you press Start

The test has four stages. Download and upload use separate secure WebSocket connections and run one after the other.

  1. 01

    Locate returns available servers

    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.

  2. 02

    The browser opens an encrypted connection

    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.

  3. 03

    Download runs first

    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.

  4. 04

    Upload runs next

    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.

WHAT THE NUMBER MEANS

NDT7 measures application goodput

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.

RATE CALCULATION 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.

Example

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.

8
bits in one byte
1,000,000
bits in one megabit
Latest sample
used for the final result
THE NETWORK PATH

TinySpeedTest does not relay the test traffic

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 NDT7
01Your browserRuns the NDT7 client
02M-Lab nodeReceives test traffic
× TinySpeedTest serves the page but does not carry the measurement payload
READING THE RESULT

What each field does and does not tell you

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.

Upload

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.

TCP RTT

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.

Server

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.

Why this may differ from another speed test

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.

What TinySpeedTest does not test

  • No separate ICMP ping test
  • No UDP latency or jitter test
  • No direct measurement of the Wi-Fi link rate
  • No guarantee of your ISP plan's advertised maximum
FOR A USEFUL COMPARISON

Keep the test conditions consistent

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.

  1. 1

    Pause other traffic. Stop downloads, cloud sync, streaming, and software updates on this device and, when possible, on other devices sharing the connection.

  2. 2

    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.

  3. 3

    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.

  4. 4

    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.

DATA AND PRIVACY

M-Lab publishes measurement data

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.

M-Lab Privacy Policy · M-Lab Acceptable Use Policy

COMMON QUESTIONS

About the result

The short answer is often “it depends on the path.” These are the details that matter most.

Is TinySpeedTest free?+

Yes. The interactive speed test is free and does not require an account. M-Lab currently limits interactive users to 40 tests per day.

Why is the result below my internet plan speed?+

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.

What data does M-Lab collect?+

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.

Why can a test fail?+

A firewall, VPN, proxy, browser extension, temporary node issue, or network interruption can block the secure WebSocket connection. Check the connection and try again.