Benchmark report

crates.io thumbnail

Is crates.io slow?

API response times from 5 cities

Slow from some locations

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

Fastest
163 ms
Montreal
Slowest
1408 ms
Singapore
Successful requests
100%
5 of 6 locations

Response time around the world

Amsterdam 529ms typicalSan Francisco 453ms typicalMontreal 163ms typicalSingapore 1408ms typicalTokyo 1052ms typicalMumbai —
  • CanadaMontreal
    163 ms
  • United StatesSan Francisco
    453 ms
  • NetherlandsAmsterdam
    529 ms
  • JapanTokyo
    1052 ms
  • SingaporeSingapore
    1408 ms
  • IndiaMumbai
    Collecting since 7 Sept 2026

Why is Singapore slower?

In the controlled run of 7 September every city connected to a nearby Fastly edge in 2 to 11 ms and finished the TLS handshake in 4 to 12 ms; the cache header named the local point of presence in each city. The time went into the two phases after that. Montreal waited 94 ms for the first byte and downloaded for 68 ms, 169 ms in all. Amsterdam waited 120 ms and downloaded for 320 ms; Tokyo waited 213 ms and downloaded for 798 ms; Singapore waited 498 ms and downloaded for 881 ms, 1,386 ms in all. A download that takes 68 ms in one city and 881 ms in another for the same 440 KB is what a body streamed from one distant origin through the edge looks like. A body served from the edge's cache would not vary like that.

Click the location to see each stage.

ConnectTLSServer waitDownload
SingaporeSingapore
1386 ms
Finding the server
6 ms
Reaching the server
3 ms
Setting up security
4 ms
Waiting for the server
498 ms
Receiving the response: most of the time
881 ms
Total
1386 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
446 ms
Finding the server
3 ms
Reaching the server
2 ms
Setting up security
4 ms
Waiting for the server
120 ms
Receiving the response: most of the time
320 ms
Total
446 ms
United StatesSan Francisco
305 ms
Finding the server
20 ms
Reaching the server
11 ms
Setting up security
12 ms
Waiting for the server
122 ms
Receiving the response: most of the time
160 ms
Total
305 ms
CanadaMontreal
169 ms
Finding the server
3 ms
Reaching the server
2 ms
Setting up security
5 ms
Waiting for the server: most of the time
94 ms
Receiving the response
68 ms
Total
169 ms
SingaporeSingapore
1386 ms
Finding the server
6 ms
Reaching the server
3 ms
Setting up security
4 ms
Waiting for the server
498 ms
Receiving the response: most of the time
881 ms
Total
1386 ms
JapanTokyo
1018 ms
Finding the server
9 ms
Reaching the server
2 ms
Setting up security
5 ms
Waiting for the server
213 ms
Receiving the response: most of the time
798 ms
Total
1018 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

crates.io still feels slow?

Check crates.io’s status page
Registry incidents are posted there. A slow cargo build during one is not your network.
This is not a cargo build benchmark
Cargo reads the sparse index and downloads .crate files from static.crates.io, both served differently from this API document. Publishing, login and the website are not measured either.
The edge is close, the body is far
Two Fastly addresses across our five cities, and each city's cache header named its own local point of presence. Every response came from the origin rather than the cache, and Montreal was fastest on every run, which suggests the origin is in eastern North America.

Response time over the last 30 days

Daily median of 5 requests per location, 13 August 2026 to 12 September 2026.
010002000 ms13 Aug12 Sept5 locations joinedMumbai joined
Show the numbers
DayAmsterdamSan FranciscoMontrealSingaporeTokyoMumbai
27 August 2026538 ms460 ms173 ms1434 ms1361 ms
28 August 2026697 ms477 ms161 ms1387 ms1430 ms
29 August 2026531 ms454 ms161 ms1381 ms1333 ms
30 August 2026217 ms185 ms167 ms1398 ms1063 ms
31 August 2026532 ms547 ms161 ms1401 ms1009 ms
1 September 2026530 ms298 ms170 ms1408 ms1034 ms
3 September 2026531 ms441 ms161 ms1478 ms1050 ms
4 September 2026535 ms567 ms168 ms1452 ms1454 ms
5 September 2026529 ms420 ms160 ms1412 ms1050 ms
6 September 2026134 ms246 ms160 ms1532 ms1021 ms
7 September 2026539 ms573 ms162 ms1435 ms1296 ms1642 ms
8 September 2026505 ms453 ms149 ms1390 ms1333 ms1221 ms
9 September 2026511 ms551 ms168 ms1405 ms1300 ms1618 ms
10 September 2026696 ms558 ms162 ms1415 ms1341 ms1613 ms
11 September 2026282 ms557 ms163 ms1393 ms1013 ms1623 ms
12 September 2026447 ms420 ms163 ms1362 ms1004 ms1628 ms

About this measurement

GET crates.io/api/v1/crates/serde · 65 requests per location over 13 daily runs · 30 August 2026 to 12 September 2026

What we tested · Package registry. GET crates.io/api/v1/crates/serde: the serde crate's metadata, about 440 KB of JSON from a Heroku origin behind Fastly, seen uncached.

How LatencyRadar measures response time →

Technical details

Doesn’t measure: cargo build: index lookups and .crate downloads from static.crates.io, or the website.

One crates.io surface: the API metadata document for the serde crate, about 440 KB of JSON listing every published version. This is the request the crates.io website and API clients make to learn about a crate. It sits behind Fastly, but every response we saw came from the origin rather than from the cache. It does not stand for cargo build: Cargo reads the sparse index and downloads .crate files from static.crates.io, and both are served differently.

Not measured: the sparse index, .crate downloads, publishing, login or the crates.io website itself. From outside we cannot see where the origin runs or why the document is served uncached. We see only that the Fastly edge nearest each city answered, and that the body arrived at a speed set by the distance behind that edge.

Between 30 August and 12 September 2026 the typical time ranged from 163 ms in Montreal to 1,408 ms in Singapore, with Tokyo at 1,052 ms, San Francisco at 453 ms and Amsterdam at 529 ms. Montreal was steady at 149 to 170 ms on every daily run, and so was Singapore at 1,362 to 1,532 ms. Amsterdam and San Francisco were not. Amsterdam's daily median was 505 to 697 ms on nine runs, 134 to 282 ms on three (30 August, 6 and 11 September) and 447 ms on 12 September; San Francisco swung between 185 and 573 ms. The pooled typical times for those two cities sit between the two regimes, and the history chart shows both. The controlled runs point the same way: Amsterdam's p95 was 1,202 ms on 30 August and 696 ms on 7 September. PyPI, measured the same way on the same days from a cached document, took 12 to 59 ms.

Test locationTypical response timeSlower response timeRequests
Amsterdam529 ms949 ms20
San Francisco453 ms566 ms20
Montreal163 ms191 ms20
Singapore1408 ms1447 ms20
Tokyo1052 ms1380 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 crates.io/api/v1/crates/serde
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: 65 · San Francisco: 65 · Montreal: 65 · Singapore: 65 · Tokyo: 65
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.

crates.io API

https://crates.io/api/v1/crates/serde

Independent measurement by LatencyRadar. Not affiliated with crates.io. · 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 →