Benchmark report

Docker Hub thumbnail

Is Docker Hub slow?

API response times from 5 cities

Slow from some locations

Singapore waited 304 ms, about 3.9× Montreal. The gap suggests some test locations reach a distant server.

Fastest
77 ms
Montreal
Slowest
304 ms
Singapore
Successful requests
100%
5 of 6 locations

Response time around the world

Amsterdam 149ms typicalSan Francisco 129ms typicalMontreal 77ms typicalSingapore 304ms typicalTokyo 220ms typicalMumbai —
  • CanadaMontreal
    77 ms
  • United StatesSan Francisco
    129 ms
  • NetherlandsAmsterdam
    149 ms
  • JapanTokyo
    220 ms
  • SingaporeSingapore
    304 ms
  • IndiaMumbai
    Collecting since 7 Sept 2026

Why is Singapore slower?

In the controlled run of 7 September connecting and the TLS handshake took 5 to 21 ms in every city and the download under 2 ms; the 5.8 KB body is not the cost. The wait for the first byte was 54 ms in Montreal, 100 ms in San Francisco, 121 ms in Amsterdam, 195 ms in Tokyo and 268 ms in Singapore. Every city connected to the same Cloudflare address and the cache header named a nearby point of presence (London for Amsterdam, then San Jose, Montreal, Singapore and Tokyo), so the edge was close in every case and the wait is the round trip from that edge to Docker's origin. Montreal's short wait suggests the origin is in eastern North America.

Click the location to see each stage.

ConnectTLSServer waitDownload
SingaporeSingapore
283 ms
Finding the server
4 ms
Reaching the server
3 ms
Setting up security
11 ms
Waiting for the server: most of the time
268 ms
Receiving the response
1 ms
Total
283 ms

Finding the server is measured once per location, so it sits outside these bars. Open a city to see it.

Bars show the typical request, so the parts add up to its total. Why

Compare all locations

Click a city to see its stage-by-stage breakdown.

ConnectTLSServer waitDownload
NetherlandsAmsterdam
143 ms
Finding the server
7 ms
Reaching the server
9 ms
Setting up security
12 ms
Waiting for the server: most of the time
121 ms
Receiving the response
1 ms
Total
143 ms
United StatesSan Francisco
117 ms
Finding the server
15 ms
Reaching the server
3 ms
Setting up security
14 ms
Waiting for the server: most of the time
100 ms
Receiving the response
0 ms
Total
117 ms
CanadaMontreal
69 ms
Finding the server
3 ms
Reaching the server
3 ms
Setting up security
11 ms
Waiting for the server: most of the time
54 ms
Receiving the response
1 ms
Total
69 ms
SingaporeSingapore
283 ms
Finding the server
4 ms
Reaching the server
3 ms
Setting up security
11 ms
Waiting for the server: most of the time
268 ms
Receiving the response
1 ms
Total
283 ms
JapanTokyo
205 ms
Finding the server
3 ms
Reaching the server
2 ms
Setting up security
8 ms
Waiting for the server: most of the time
195 ms
Receiving the response
0 ms
Total
205 ms

The phases come from the controlled run of 7 September 2026. Typical times pool daily requests; slower times use controlled full runs. 5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo.

Finding the server is measured once per location, so it sits outside these bars. Open a city to see it.

Bars show the typical request, so the parts add up to its total. Why

Docker still feels slow?

Check Docker’s status page
Hub and registry incidents are posted there before they show up in a benchmark.
This is not a docker pull benchmark
Pulls talk to registry-1.docker.io and auth.docker.io, which we catalogue separately and do not yet measure. Layer downloads, the token exchange, Docker Desktop and the signed-in Hub are not measured here.
Every request waits for Docker’s origin
One Cloudflare address for all five cities, each answered from a nearby point of presence (Amsterdam's was London). Nothing is cached, so the wait grows with your distance from the origin, and Montreal's short wait suggests eastern North America.

Response time over the last 30 days

Daily median of 5 requests per location, 13 August 2026 to 12 September 2026.
0250500 ms13 Aug12 Sept5 locations joinedMumbai joined30926222915613075
Show the numbers
DayAmsterdamSan FranciscoMontrealSingaporeTokyoMumbai
27 August 2026160 ms146 ms80 ms366 ms235 ms
28 August 2026157 ms134 ms73 ms297 ms223 ms
29 August 2026160 ms146 ms76 ms301 ms225 ms
30 August 2026153 ms140 ms104 ms294 ms233 ms
31 August 2026165 ms139 ms105 ms311 ms237 ms
1 September 2026157 ms144 ms137 ms318 ms221 ms
2 September 2026142 ms129 ms65 ms293 ms216 ms
3 September 2026146 ms117 ms67 ms304 ms212 ms
4 September 2026147 ms125 ms64 ms311 ms230 ms
5 September 2026142 ms127 ms124 ms332 ms212 ms
6 September 2026142 ms119 ms127 ms287 ms212 ms
7 September 2026144 ms126 ms133 ms287 ms208 ms235 ms
8 September 2026150 ms120 ms60 ms285 ms216 ms254 ms
9 September 2026149 ms132 ms69 ms289 ms230 ms249 ms
10 September 2026143 ms124 ms65 ms309 ms226 ms244 ms
11 September 2026161 ms132 ms75 ms324 ms229 ms261 ms
12 September 2026156 ms130 ms75 ms309 ms229 ms262 ms

About this measurement

GET hub.docker.com/v2/repositories/library/alpine/ · 70 requests per location over 14 daily runs · 30 August 2026 to 12 September 2026

What we tested · API response. GET hub.docker.com/v2/repositories/library/alpine/: 5.8 KB of JSON from the Hub website's API, served uncached behind Cloudflare.

How LatencyRadar measures response time →

Technical details

Doesn’t measure: docker pull: the registry token and manifest requests (planned surfaces), or image layer downloads.

One Docker surface: the Hub website API's record for the official alpine repository, 5.8 KB of JSON that Cloudflare fronts but does not cache. It is the request the Docker Hub website and tools such as image scanners make to read tags, pull counts and descriptions. It does not stand for docker pull: pulls talk to registry-1.docker.io and auth.docker.io, which we have catalogued as separate surfaces but do not yet measure. This page stands in for Docker until they are.

Not measured: docker pull and docker push, image layer downloads, the registry token exchange, Docker Desktop, Docker Scout or the signed-in Hub website. From outside we cannot see where Docker's origin runs or what it does during the wait. We see the time from Cloudflare's edge to the first byte, and that the edge itself was close in every city.

Between 30 August and 12 September 2026 the typical time ranged from 77 ms in Montreal to 304 ms in Singapore, with San Francisco at 129 ms, Amsterdam at 149 ms and Tokyo at 220 ms. Singapore and Tokyo were the steadiest cities, with daily medians of 285 to 332 ms and 208 to 237 ms. Montreal's typical is 77 ms, but its daily median rose to 104 to 137 ms from 30 August to 1 September and again from 5 to 7 September. The same days show up on the Shopify and GitLab pages, both also fronted by Cloudflare, which suggests the cause was between our Montreal worker and Cloudflare rather than at Docker. The GitLab API, measured the same way on the same days, has the same shape with 100 to 170 ms more wait in every city.

Test locationTypical response timeSlower response timeRequests
Amsterdam149 ms174 ms20
San Francisco129 ms140 ms20
Montreal77 ms106 ms20
Singapore304 ms329 ms20
Tokyo220 ms234 ms20
MumbaiCollecting since 7 Sept 2026

Typical: half of the requests finished within this time (technical: p50). Slower: 95% of requests finished within this time (technical: p95). Statistics

Request
GET hub.docker.com/v2/repositories/library/alpine/
Measured from
Amsterdam · San Francisco · Montreal · Singapore · Tokyo
Requests
Daily measurements from 30 August 2026 to 12 September 2026. 5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo. · 30 August 2026 to 12 September 2026
Timings taken
DNS, connect, TLS, waiting for the server, download
Report coverage
5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo.
Daily requests in each location
Amsterdam: 70 · San Francisco: 70 · Montreal: 70 · Singapore: 70 · Tokyo: 70
Typical response time
Median of the eligible daily requests in each included location.
Slower response time
Median of recent controlled full-run p95 values in each included location.

Docker Hub API

https://hub.docker.com/v2/repositories/library/alpine/

Independent measurement by LatencyRadar. Not affiliated with Docker Hub. · How we measure (v1.1)

How fast is your API around the world?

Run a free speed test from multiple cities and find out where your users are waiting. No setup, no account required.

Test my API

No account required · Takes about 30 seconds.

More benchmarks

All benchmarks →