Results object is available as speedTest.results at any point during a test run, and is passed directly to the onFinish callback when all measurements are complete. Every method returns undefined (or an empty array) if the relevant measurement has not yet started or has been excluded from the measurement sequence.
Attribute
true when every measurement in the configured sequence has completed. Equivalent to checking SpeedTestEngine.isFinished. Use this to gate calls to getScores(), which requires all measurements to be done.Bandwidth
getDownloadBandwidth()
Returns the computed download bandwidth in bits per second (bps). The value is the configured percentile (default: 90th) of all individual request measurements whose duration exceeded bandwidthMinRequestDuration (default: 10 ms).
Returns number | undefined. undefined is returned if no qualifying download measurements have completed yet.
getDownloadBandwidthPoints()
Returns all individual download measurements as an array of BandwidthPoint objects. Useful for drawing a live chart of throughput over time.
Returns BandwidthPoint[].
getUploadBandwidth()
Returns the computed upload bandwidth in bps. Same calculation and semantics as getDownloadBandwidth().
Returns number | undefined.
getUploadBandwidthPoints()
Returns all individual upload measurements. Same shape as getDownloadBandwidthPoints().
Returns BandwidthPoint[].
Latency
All latency values are in milliseconds. The reported latency is the configured percentile of all measurements (default: median / 50th percentile, set bylatencyPercentile).
Unloaded latency
Measured by dedicatedlatency-type requests against the download API with bytes=0 while no other activity is taking place.
The median (or configured percentile) round-trip latency at idle, in ms.
Average absolute difference between consecutive latency measurements, in ms. Requires at least two latency measurements.
All raw latency values in measurement order. Each entry is a single ping value in ms.
Loaded latency (download direction)
Measured simultaneously with download requests. RequiresmeasureDownloadLoadedLatency: true (default).
Latency observed while the connection is saturated with download traffic, in ms. Only includes samples from requests that lasted longer than
loadedRequestMinDuration (default: 250 ms).Jitter during download load, in ms.
All raw loaded-latency samples from the download phase, capped at
loadedLatencyMaxPoints (default: 20). Latest samples are kept, as they are considered most accurate.Loaded latency (upload direction)
Measured simultaneously with upload requests. RequiresmeasureUploadLoadedLatency: true (default).
Latency observed while the connection is saturated with upload traffic, in ms.
Jitter during upload load, in ms.
All raw loaded-latency samples from the upload phase.
Loaded latency is typically higher than unloaded latency. The difference between the two is used when calculating AIM scores — a large increase under load indicates a connection more prone to bufferbloat.
Packet loss
Packet loss requires a WebRTC TURN server. You must provide your own TURN credentials — the public Cloudflare TURN server is deprecated. See Packet Loss for setup instructions.getPacketLoss()
Returns the packet loss ratio as a number between 0 and 1. Multiply by 100 for a percentage.
Returns number | undefined. Returns undefined if no packetLoss measurement was configured or has not yet started.
