Benchmark report

Docker Hub thumbnail

Is Docker Hub slow?

API response times from 6 cities

Slow from some locations

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

Fastest
72 ms
Montreal
Slowest
302 ms
Singapore
Successful requests
100%
6 locations

Response time around the world

Amsterdam 153ms typicalSan Francisco 128ms typicalMontreal 72ms typicalSingapore 302ms typicalTokyo 223ms typicalMumbai 256ms typical
  • CanadaMontreal
    72 ms
  • United StatesSan Francisco
    128 ms
  • NetherlandsAmsterdam
    153 ms
  • JapanTokyo
    223 ms
  • IndiaMumbai
    256 ms
  • SingaporeSingapore
    302 ms

Why is Singapore slower?

In the controlled run of 4 October connecting and the TLS handshake took 10 to 26 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 61 ms in Montreal, 108 ms in San Francisco, 127 ms in Amsterdam, 209 ms in Tokyo, 243 ms in Mumbai and 280 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, Tokyo and Mumbai), 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
299 ms
Finding the server
4 ms
Reaching the server
3 ms
Setting up security
16 ms
Waiting for the server: most of the time
280 ms
Receiving the response
0 ms
Total
299 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
154 ms
Finding the server
3 ms
Reaching the server
10 ms
Setting up security
16 ms
Waiting for the server: most of the time
127 ms
Receiving the response
1 ms
Total
154 ms
United StatesSan Francisco
124 ms
Finding the server
16 ms
Reaching the server
4 ms
Setting up security
11 ms
Waiting for the server: most of the time
108 ms
Receiving the response
1 ms
Total
124 ms
CanadaMontreal
71 ms
Finding the server
3 ms
Reaching the server
2 ms
Setting up security
8 ms
Waiting for the server: most of the time
61 ms
Receiving the response
0 ms
Total
71 ms
SingaporeSingapore
299 ms
Finding the server
4 ms
Reaching the server
3 ms
Setting up security
16 ms
Waiting for the server: most of the time
280 ms
Receiving the response
0 ms
Total
299 ms
JapanTokyo
220 ms
Finding the server
32 ms
Reaching the server
2 ms
Setting up security
9 ms
Waiting for the server: most of the time
209 ms
Receiving the response
0 ms
Total
220 ms
IndiaMumbai
257 ms
Finding the server
3 ms
Reaching the server
3 ms
Setting up security
11 ms
Waiting for the server: most of the time
243 ms
Receiving the response
0 ms
Total
257 ms

The phases come from the controlled run of 4 October 2026. Typical and slower times pool the daily requests. 6 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo, Mumbai.

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 six 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 29 days

Daily median of 5 requests per location, 11 September 2026 to 10 October 2026.
0250500 ms11 Sept10 Oct30726322415112473
Show the numbers
DayAmsterdamSan FranciscoMontrealSingaporeTokyoMumbai
11 September 2026161 ms132 ms75 ms324 ms229 ms261 ms
12 September 2026156 ms130 ms75 ms309 ms229 ms262 ms
13 September 2026154 ms127 ms80 ms294 ms234 ms252 ms
14 September 2026153 ms130 ms76 ms309 ms219 ms258 ms
15 September 2026160 ms135 ms79 ms304 ms223 ms254 ms
16 September 2026159 ms125 ms71 ms306 ms224 ms261 ms
17 September 2026158 ms139 ms81 ms306 ms224 ms252 ms
18 September 2026159 ms136 ms74 ms311 ms231 ms259 ms
19 September 2026155 ms133 ms74 ms305 ms229 ms255 ms
20 September 2026153 ms134 ms74 ms300 ms220 ms257 ms
21 September 2026153 ms135 ms74 ms312 ms223 ms261 ms
22 September 2026157 ms135 ms81 ms297 ms223 ms263 ms
23 September 2026153 ms130 ms71 ms307 ms224 ms257 ms
24 September 2026153 ms135 ms71 ms310 ms219 ms246 ms
25 September 2026155 ms135 ms74 ms311 ms229 ms252 ms
26 September 2026152 ms126 ms68 ms303 ms217 ms253 ms
27 September 2026153 ms131 ms68 ms312 ms223 ms245 ms
28 September 2026150 ms127 ms69 ms304 ms228 ms254 ms
29 September 2026151 ms127 ms72 ms301 ms232 ms256 ms
30 September 2026153 ms128 ms76 ms302 ms225 ms249 ms
1 October 2026158 ms132 ms71 ms309 ms218 ms250 ms
2 October 2026156 ms127 ms73 ms310 ms217 ms266 ms
3 October 2026153 ms124 ms71 ms320 ms227 ms250 ms
4 October 2026151 ms124 ms72 ms299 ms218 ms257 ms
5 October 2026154 ms133 ms74 ms296 ms224 ms256 ms
6 October 2026157 ms132 ms71 ms297 ms217 ms256 ms
7 October 2026153 ms118 ms76 ms316 ms225 ms259 ms
9 October 2026155 ms132 ms73 ms296 ms216 ms257 ms
10 October 2026151 ms124 ms73 ms307 ms224 ms263 ms

About this measurement

GET hub.docker.com/v2/repositories/library/alpine/ · 65 requests per location over 13 daily runs · 27 September 2026 to 10 October 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. 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 27 September and 10 October 2026 the typical time ranged from 72 ms in Montreal to 302 ms in Singapore, with San Francisco at 128 ms, Amsterdam at 153 ms, Tokyo at 223 ms and Mumbai at 256 ms. Every city was steady: no city's daily median moved by more than 25 ms across the 13 runs (Montreal 68 to 76 ms, Singapore 296 to 320 ms). The order follows distance from eastern North America, Montreal closest and Singapore furthest, with Mumbai between Tokyo and Singapore. The Shopify and GitLab pages sit behind Cloudflare too and are measured on the same days; the GitLab API has the same shape with about 100 to 200 ms more wait in every city.

Test locationTypical response timeSlower response timeRequests
Amsterdam153 ms164 ms65
San Francisco128 ms138 ms65
Montreal72 ms82 ms65
Singapore302 ms327 ms65
Tokyo223 ms237 ms65
Mumbai256 ms268 ms65

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 · Mumbai
Requests
Daily measurements from 27 September 2026 to 10 October 2026. 6 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo, Mumbai. · 27 September 2026 to 10 October 2026
Timings taken
DNS, connect, TLS, waiting for the server, download
Report coverage
6 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo, Mumbai.
Coverage changes
Mumbai (measured since 7 September 2026) joined this report on 21 September 2026. Earlier daily bands keep their previous location set.
Daily requests in each location
Amsterdam: 65 · San Francisco: 65 · Montreal: 65 · Singapore: 65 · Tokyo: 65 · Mumbai: 65
Typical response time
Median of the eligible daily requests in each included location.
Slower response time
The 95th percentile of the same eligible daily requests 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.3)

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 →