Benchmark report
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
Montreal
72 msSan Francisco
128 msAmsterdam
153 msTokyo
223 msMumbai
256 msSingapore
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.
Singapore299 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 locationsHide the comparison
Click a city to see its stage-by-stage breakdown.
Amsterdam154 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
San Francisco124 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
Montreal71 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
Singapore299 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
Tokyo220 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
Mumbai257 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
Show the numbers
| Day | Amsterdam | San Francisco | Montreal | Singapore | Tokyo | Mumbai |
|---|---|---|---|---|---|---|
| 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 |
| 13 September 2026 | 154 ms | 127 ms | 80 ms | 294 ms | 234 ms | 252 ms |
| 14 September 2026 | 153 ms | 130 ms | 76 ms | 309 ms | 219 ms | 258 ms |
| 15 September 2026 | 160 ms | 135 ms | 79 ms | 304 ms | 223 ms | 254 ms |
| 16 September 2026 | 159 ms | 125 ms | 71 ms | 306 ms | 224 ms | 261 ms |
| 17 September 2026 | 158 ms | 139 ms | 81 ms | 306 ms | 224 ms | 252 ms |
| 18 September 2026 | 159 ms | 136 ms | 74 ms | 311 ms | 231 ms | 259 ms |
| 19 September 2026 | 155 ms | 133 ms | 74 ms | 305 ms | 229 ms | 255 ms |
| 20 September 2026 | 153 ms | 134 ms | 74 ms | 300 ms | 220 ms | 257 ms |
| 21 September 2026 | 153 ms | 135 ms | 74 ms | 312 ms | 223 ms | 261 ms |
| 22 September 2026 | 157 ms | 135 ms | 81 ms | 297 ms | 223 ms | 263 ms |
| 23 September 2026 | 153 ms | 130 ms | 71 ms | 307 ms | 224 ms | 257 ms |
| 24 September 2026 | 153 ms | 135 ms | 71 ms | 310 ms | 219 ms | 246 ms |
| 25 September 2026 | 155 ms | 135 ms | 74 ms | 311 ms | 229 ms | 252 ms |
| 26 September 2026 | 152 ms | 126 ms | 68 ms | 303 ms | 217 ms | 253 ms |
| 27 September 2026 | 153 ms | 131 ms | 68 ms | 312 ms | 223 ms | 245 ms |
| 28 September 2026 | 150 ms | 127 ms | 69 ms | 304 ms | 228 ms | 254 ms |
| 29 September 2026 | 151 ms | 127 ms | 72 ms | 301 ms | 232 ms | 256 ms |
| 30 September 2026 | 153 ms | 128 ms | 76 ms | 302 ms | 225 ms | 249 ms |
| 1 October 2026 | 158 ms | 132 ms | 71 ms | 309 ms | 218 ms | 250 ms |
| 2 October 2026 | 156 ms | 127 ms | 73 ms | 310 ms | 217 ms | 266 ms |
| 3 October 2026 | 153 ms | 124 ms | 71 ms | 320 ms | 227 ms | 250 ms |
| 4 October 2026 | 151 ms | 124 ms | 72 ms | 299 ms | 218 ms | 257 ms |
| 5 October 2026 | 154 ms | 133 ms | 74 ms | 296 ms | 224 ms | 256 ms |
| 6 October 2026 | 157 ms | 132 ms | 71 ms | 297 ms | 217 ms | 256 ms |
| 7 October 2026 | 153 ms | 118 ms | 76 ms | 316 ms | 225 ms | 259 ms |
| 9 October 2026 | 155 ms | 132 ms | 73 ms | 296 ms | 216 ms | 257 ms |
| 10 October 2026 | 151 ms | 124 ms | 73 ms | 307 ms | 224 ms | 263 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 location | Typical response time | Slower response time | Requests |
|---|---|---|---|
| Amsterdam | 153 ms | 164 ms | 65 |
| San Francisco | 128 ms | 138 ms | 65 |
| Montreal | 72 ms | 82 ms | 65 |
| Singapore | 302 ms | 327 ms | 65 |
| Tokyo | 223 ms | 237 ms | 65 |
| Mumbai | 256 ms | 268 ms | 65 |
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.
No account required · Takes about 30 seconds.