Skip to content
Reading the Results

Reading the Results

OutputWhen
Live progressIn a terminal
Plain linesWith --unix or --debug, or when the output is not a terminal
JSONWith --json or --jsonl

Live progress

In a terminal, each test shows its progress as it runs:

  • Latency and packet loss show their measurements so far.
  • A download or upload shows its rate, a progress bar, and an estimate of the time left.
  • Each finished test becomes a line, and each server ends with a panel of its headline results.

Plain lines

$ speedtest-go --unix

    speedtest-go v1.8.0 (1559e47, 2026-05-02)

✓ ISP: 203.0.113.7 (Fujitsu) [34.9769, 138.3831]
✓ Found 20 Public Servers

✓ Test Server: [6691] 9.03km Shizuoka (Japan) by sudosan
✓ Latency: 4.452963ms Jitter: 41.271µs Min: 4.395179ms Max: 4.517576ms
✓ Packet Loss Analyzer: Running in background (<= 30 Secs)
✓ Download: 115.52 Mbps (Used: 135.75MB) (Latency: 4ms Jitter: 0ms Min: 4ms Max: 4ms)
✓ Upload: 4.02 Mbps (Used: 6.85MB) (Latency: 4ms Jitter: 1ms Min: 3ms Max: 8ms)
✓ Packet Loss: 8.82% (Sent: 217/Dup: 0/Max: 237)
LineShows
ISPYour IP address, ISP, and coordinates
FoundHow many servers were found
Test ServerThe server’s ID, distance, location, and sponsor
LatencyThe mean round trip, jitter, and the shortest and longest round trips
Download, UploadThe rate, the data moved, and the latency during the transfer
Packet LossThe loss, and the counts it comes from

How a Test Works explains each measurement, and Output and privacy covers the rate units and hiding your address.

JSON reports

--json writes one document for the run, and --jsonl writes one line per server, each with a server object in place of the servers list.

{
  "timestamp": "2026-10-13 08:30:15.123",
  "userInfo": {
    "ip": "203.0.113.7",
    "lat": "35.6812",
    "lon": "139.7671",
    "isp": "Example ISP",
    "country": "JP"
  },
  "servers": [
    {
      "url": "http://speed.example/speedtest/upload.php",
      "lat": "35.6895",
      "lon": "139.6917",
      "name": "Tokyo",
      "country": "Japan",
      "cc": "JP",
      "sponsor": "Example Networks",
      "id": "1001",
      "host": "speed.example:8080",
      "distance": 6.95,
      "latency": 4500000,
      "maxLatency": 5000000,
      "minLatency": 4000000,
      "jitter": 300000,
      "dlSpeed": 12500000,
      "ulSpeed": 2500000,
      "testDuration": {
        "ping": 2000000000,
        "download": 10000000000,
        "upload": 10000000000,
        "total": 22000000000
      },
      "packetLoss": {
        "sent": 300,
        "dup": 1,
        "max": 301
      }
    }
  ]
}
FieldUnit or format
timestampLocal time, as YYYY-MM-DD hh:mm:ss.mmm
userInfoYour IP address, coordinates, ISP, and country code. All but the country are masked with --mask-isp
lat, lonDegrees, as strings
distanceKilometres. Left out with --mask-isp
latency, minLatency, maxLatency, jitterNanoseconds
dlSpeed, ulSpeedBytes per second. 0 when the test did not run, which its testDuration shows as null, and -1 when it ran but counted no data and more than a tenth of its requests failed
testDurationNanoseconds for each test, or null when it did not run
packetLossThe counts the loss comes from. See Packet loss

In the example, dlSpeed of 12500000 bytes per second is 100 Mbps.