Benchmark report
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
Montreal
77 msSan Francisco
129 msAmsterdam
149 msTokyo
220 msSingapore
304 msMumbai
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.
Singapore283 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 locationsHide the comparison
Click a city to see its stage-by-stage breakdown.
Amsterdam143 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
San Francisco117 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
Montreal69 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
Singapore283 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
Tokyo205 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
Show the numbers
| Day | Amsterdam | San Francisco | Montreal | Singapore | Tokyo | Mumbai |
|---|---|---|---|---|---|---|
| 27 August 2026 | 160 ms | 146 ms | 80 ms | 366 ms | 235 ms | — |
| 28 August 2026 | 157 ms | 134 ms | 73 ms | 297 ms | 223 ms | — |
| 29 August 2026 | 160 ms | 146 ms | 76 ms | 301 ms | 225 ms | — |
| 30 August 2026 | 153 ms | 140 ms | 104 ms | 294 ms | 233 ms | — |
| 31 August 2026 | 165 ms | 139 ms | 105 ms | 311 ms | 237 ms | — |
| 1 September 2026 | 157 ms | 144 ms | 137 ms | 318 ms | 221 ms | — |
| 2 September 2026 | 142 ms | 129 ms | 65 ms | 293 ms | 216 ms | — |
| 3 September 2026 | 146 ms | 117 ms | 67 ms | 304 ms | 212 ms | — |
| 4 September 2026 | 147 ms | 125 ms | 64 ms | 311 ms | 230 ms | — |
| 5 September 2026 | 142 ms | 127 ms | 124 ms | 332 ms | 212 ms | — |
| 6 September 2026 | 142 ms | 119 ms | 127 ms | 287 ms | 212 ms | — |
| 7 September 2026 | 144 ms | 126 ms | 133 ms | 287 ms | 208 ms | 235 ms |
| 8 September 2026 | 150 ms | 120 ms | 60 ms | 285 ms | 216 ms | 254 ms |
| 9 September 2026 | 149 ms | 132 ms | 69 ms | 289 ms | 230 ms | 249 ms |
| 10 September 2026 | 143 ms | 124 ms | 65 ms | 309 ms | 226 ms | 244 ms |
| 11 September 2026 | 161 ms | 132 ms | 75 ms | 324 ms | 229 ms | 261 ms |
| 12 September 2026 | 156 ms | 130 ms | 75 ms | 309 ms | 229 ms | 262 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 location | Typical response time | Slower response time | Requests |
|---|---|---|---|
| Amsterdam | 149 ms | 174 ms | 20 |
| San Francisco | 129 ms | 140 ms | 20 |
| Montreal | 77 ms | 106 ms | 20 |
| Singapore | 304 ms | 329 ms | 20 |
| Tokyo | 220 ms | 234 ms | 20 |
| Mumbai | Collecting 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.
No account required · Takes about 30 seconds.