Benchmark report
Is npm slow?
Registry response times from 5 cities
Fast globally
npm responds quickly from all 5 test locations. Montreal was fastest at 21 ms; Amsterdam took 58 ms.
- Fastest
- 21 ms
- Montreal
- Slowest
- 58 ms
- Amsterdam
- Successful requests
- 100%
- 5 locations
Response time around the world
Montreal
21 msTokyo
27 msSan Francisco
30 msSingapore
31 msAmsterdam
58 ms
Why is Amsterdam slower?
Amsterdam took 58 ms in the controlled run, against 21 to 31 ms in the other four cities. The extra time is in the plumbing: 13 ms to reach the server and 28 ms for the secure handshake before the registry starts answering. That points at the route to the nearest Cloudflare location, not at a slow server.
Click the location to see each stage.
Amsterdam58 ms
- Finding the server
- 12 ms
- Reaching the server
- 13 ms
- Setting up security: most of the time
- 28 ms
- Waiting for the server
- 17 ms
- Receiving the response
- 0 ms
- Total
- 58 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.
Amsterdam58 ms
- Finding the server
- 12 ms
- Reaching the server
- 13 ms
- Setting up security: most of the time
- 28 ms
- Waiting for the server
- 17 ms
- Receiving the response
- 0 ms
- Total
- 58 ms
San Francisco30 ms
- Finding the server
- 13 ms
- Reaching the server
- 3 ms
- Setting up security
- 12 ms
- Waiting for the server: most of the time
- 15 ms
- Receiving the response
- 0 ms
- Total
- 30 ms
Montreal21 ms
- Finding the server
- 4 ms
- Reaching the server: most of the time
- 7 ms
- Setting up security
- 7 ms
- Waiting for the server
- 7 ms
- Receiving the response
- 0 ms
- Total
- 21 ms
Singapore31 ms
- Finding the server
- 4 ms
- Reaching the server
- 6 ms
- Setting up security
- 11 ms
- Waiting for the server: most of the time
- 14 ms
- Receiving the response
- 0 ms
- Total
- 31 ms
Tokyo27 ms
- Finding the server
- 4 ms
- Reaching the server
- 2 ms
- Setting up security
- 9 ms
- Waiting for the server: most of the time
- 16 ms
- Receiving the response
- 0 ms
- Total
- 27 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
npm still feels slow?
- Check npm’s status page
- Registry incidents show up there first. A slow install during one is not a problem with your network.
- This is not an install benchmark
- Install time is mostly tarball count and size. A fast registry root does not rule out a slow install, and a slow root does not explain one.
- Your route to Cloudflare matters
- The registry root is served from Cloudflare’s edge. Each of our cities reached a nearby location; if yours does not, the handshake alone can add tens of milliseconds, as it did in Amsterdam.
Response time over the last 16 days
A dot marks a day well above that location’s usual level.
Show the numbers
| Day | Amsterdam | San Francisco | Montreal | Singapore | Tokyo | Mumbai |
|---|---|---|---|---|---|---|
| 27 August 2026 | 48 ms | 33 ms | 22 ms | 56 ms | 23 ms | — |
| 28 August 2026 | 45 ms | 27 ms | 20 ms | 29 ms | 16 ms | — |
| 29 August 2026 | 39 ms | 31 ms | 21 ms | 27 ms | 18 ms | — |
| 30 August 2026 | 46 ms | 31 ms | 54 ms ▲ | 30 ms | 16 ms | — |
| 31 August 2026 | 46 ms | 30 ms | 52 ms | 27 ms | 17 ms | — |
| 1 September 2026 | 42 ms | 30 ms | 99 ms ▲ | 25 ms | 27 ms | — |
| 2 September 2026 | 47 ms | 33 ms | 94 ms ▲ | 27 ms | 18 ms | — |
| 3 September 2026 | 45 ms | 26 ms | 23 ms | 27 ms | 18 ms | — |
| 4 September 2026 | 45 ms | 30 ms | 17 ms | 26 ms | 18 ms | — |
| 5 September 2026 | 44 ms | 27 ms | 94 ms ▲ | 43 ms | 19 ms | — |
| 6 September 2026 | 48 ms | 25 ms | 113 ms ▲ | 27 ms | 20 ms | — |
| 7 September 2026 | 47 ms | 25 ms | 94 ms ▲ | 70 ms ▲ | 21 ms | 27 ms |
| 8 September 2026 | 40 ms | 30 ms | 15 ms | 28 ms | 22 ms | 26 ms |
| 9 September 2026 | 43 ms | 24 ms | 17 ms | 25 ms | 16 ms | 25 ms |
| 10 September 2026 | 42 ms | 30 ms | 24 ms | 28 ms | 16 ms | 27 ms |
| 11 September 2026 | 42 ms | 25 ms | 19 ms | 24 ms | 17 ms | 22 ms |
| 12 September 2026 | 40 ms | 29 ms | 17 ms | 25 ms | 18 ms | 19 ms |
About this measurement
GET registry.npmjs.org · 20 requests per location · 20 August 2026
What we tested · Package registry. GET registry.npmjs.org/: the two-byte registry root, cached as immutable at Cloudflare's edge. A round trip to Cloudflare more than a registry lookup.
How LatencyRadar measures response time →
Technical details
Doesn’t measure: npm install: package metadata documents and tarball downloads, or the npmjs.com website.
One npm surface is measured: GET registry.npmjs.org/, the registry root. The response is two bytes of JSON, cached at Cloudflare's edge and marked immutable, so what we time is a TLS round trip to the nearest Cloudflare location, not a registry lookup. It stands for the network path to the registry and little else. A package metadata document, the first thing npm install fetches, would be a better primary surface and is a candidate for the next batch.
Not measurable here: npm install itself, which fetches metadata documents and tarballs and is dominated by download size; publishing; and the npmjs.com website.
In the displayed 20 August run, Montreal received the registry root in 21 ms typical and Amsterdam in 58 ms. All five cities received a response to every request. A successful, fast root request is useful network evidence, but package metadata and tarballs still need their own measurements when an install is slow.
| Test location | Typical response time | Slower response time | Requests |
|---|---|---|---|
| Amsterdam | 58 ms | 67 ms | 20 |
| San Francisco | 30 ms | 40 ms | 20 |
| Montreal | 21 ms | 41 ms | 20 |
| Singapore | 31 ms | 40 ms | 20 |
| Tokyo | 27 ms | 37 ms | 20 |
Typical: half of the requests finished within this time (technical: p50). Slower: 95% of requests finished within this time (technical: p95). Statistics
- Request
- GET registry.npmjs.org
- Measured from
- Amsterdam · San Francisco · Montreal · Singapore · Tokyo
- Requests
- 100 requests · 20 from each of 5 cities · 20 August 2026
- Timings taken
- DNS, connect, TLS, waiting for the server, download
npm
https://registry.npmjs.org
Independent measurement by LatencyRadar. Not affiliated with npm. · 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.