Routebench
CDN benchmark across Cloudflare, Fastly, and CloudFront. Same bytes from each, every provider on its own apex with co-located DNS, real-user measurement from browsers.
cold = fresh TLS handshake. warm = reused connection, so DNS/TCP/TLS are 0 by definition. Successful fetches without browser Resource Timing are excluded from latency p50/p95/p99 and sample counts. TTFB = DNS + TCP + TLS + WAIT · TOTAL = TTFB + DL. Each row is a (provider, protocol) pair; bars end at that row's real p50 of total_ms, stripes show proportionally where the time goes. Bars scale to the slowest row in the ranking. "fastest" marks the lowest p50. p95 / p99 live in the detail table behind the toggles.
1p.gif 43 B 2,986,460 probes · 96.5% ok · 96h
Cloudflare
Fastly
CloudFront
close race <5%
insufficient data
82 countries colored · floor: ≥500 warm probes per provider (totalled across both files) · p50 shown per file · 15 close race <5%
cold
fresh TLS handshake
1,720,070 cold probes · 58% of file · h3 1,320,718 · h2 384,617 · 14,735 on h1/unknown (not ranked)
| DNS | TCP | TLS | WAIT | DL | TTFB | TOTAL | ||
|---|---|---|---|---|---|---|---|---|
| Fastly h3 | p50 | 22.9 | 0.7 | 30 | 22.9 | 0.8 | 94.6 | 96 |
| p95 | 190.6 | 3.2 | 135.1 | 115 | 4.8 | 470.9 | 474.2 | |
| p99 | 524.6 | 6.6 | 358.1 | 297.1 | 16.6 | 1228.7 | 1252.3 | |
| Cloudflare h3 | p50 | 18 | 1 | 32.9 | 48.9 | 0.6 | 124 | 125 |
| p95 | 172.5 | 3 | 156 | 216.4 | 5.2 | 523.3 | 525 | |
| p99 | 484.1 | 6.3 | 343.2 | 585.1 | 15 | 1446.4 | 1467 | |
| CloudFront h3 | p50 | 37.5 | 1 | 44.1 | 43 | 0.6 | 159.4 | 161 |
| p95 | 241.8 | 3 | 210 | 292.1 | 4.8 | 708.4 | 713.9 | |
| p99 | 639.1 | 6.3 | 395 | 513.5 | 16.7 | 1344.8 | 1353.3 | |
| Cloudflare h2 | p50 | 25.3 | 24 | 50.6 | 48 | 0.9 | 231.2 | 232.9 |
| p95 | 241.1 | 389.8 | 380.3 | 248.6 | 7.1 | 1232.4 | 1250.2 | |
| p99 | 812.1 | 832.1 | 1041 | 835.5 | 144.9 | 3422.8 | 3496.3 | |
| Fastly h2 | p50 | 2 | 23 | 42 | 27 | 0 | 246.9 | 247 |
| p95 | 138 | 155 | 248.3 | 159.5 | 4 | 1012.3 | 1012.9 | |
| p99 | 433.5 | 437 | 730 | 467.4 | 14 | 2723.1 | 2777.2 | |
| CloudFront h2 | p50 | 39 | 27.6 | 71 | 43 | 0.6 | 291 | 293.1 |
| p95 | 292.1 | 378.9 | 557.4 | 300.6 | 4.9 | 1449.5 | 1466.3 | |
| p99 | 1137.6 | 732.9 | 1206.8 | 794.6 | 92.6 | 3804.3 | 4051.1 |
warm
reused connection
1,072,147 warm probes · 36% of file · h3 700,353 · h2 345,074 · 26,720 on h1/unknown (not ranked)
| WAIT | DL | TTFB | TOTAL | ||
|---|---|---|---|---|---|
| Fastly h3 | p50 | 20.8 | 0.6 | 23.2 | 24.2 |
| p95 | 104.9 | 3.4 | 121.9 | 124.5 | |
| p99 | 244.3 | 11.2 | 381.4 | 401.1 | |
| Fastly h2 | p50 | 24 | 0 | 26.9 | 27.3 |
| p95 | 143 | 2.1 | 175 | 177.9 | |
| p99 | 351.1 | 8.7 | 461 | 492.2 | |
| CloudFront h3 | p50 | 33 | 0.3 | 35 | 36 |
| p95 | 194 | 2.4 | 203.9 | 205.4 | |
| p99 | 382.1 | 7 | 427.2 | 427.3 | |
| Cloudflare h3 | p50 | 35 | 0.6 | 37 | 37.8 |
| p95 | 151.9 | 3.2 | 158 | 160.4 | |
| p99 | 376.6 | 8.9 | 387.3 | 387.4 | |
| Cloudflare h2 | p50 | 36 | 0.7 | 40.9 | 42.2 |
| p95 | 173.3 | 4 | 203.9 | 215.7 | |
| p99 | 406.2 | 39.7 | 620.5 | 674.3 | |
| CloudFront h2 | p50 | 38.1 | 0.5 | 52 | 53 |
| p95 | 241.9 | 2.8 | 306.4 | 310 | |
| p99 | 482.1 | 7.6 | 744.1 | 766 |
100.bin 100 KB 2,967,529 probes · 96.7% ok · 96h
Cloudflare
Fastly
CloudFront
close race <5%
insufficient data
82 countries colored · floor: ≥500 warm probes per provider (totalled across both files) · p50 shown per file · 15 close race <5%
cold
fresh TLS handshake
1,713,230 cold probes · 58% of file · h3 1,309,415 · h2 389,825 · 13,990 on h1/unknown (not ranked)
| DNS | TCP | TLS | WAIT | DL | TTFB | TOTAL | ||
|---|---|---|---|---|---|---|---|---|
| Fastly h3 | p50 | 22.2 | 0.7 | 29.2 | 23.3 | 27 | 94.6 | 128.9 |
| p95 | 193.1 | 3.3 | 135 | 113.8 | 160.3 | 462.2 | 624.1 | |
| p99 | 600.9 | 6.1 | 329.7 | 279 | 435.6 | 1208 | 1621.6 | |
| Cloudflare h3 | p50 | 18.2 | 1 | 33.5 | 51 | 62 | 128 | 200.6 |
| p95 | 170.2 | 3 | 149 | 217 | 386.4 | 511.6 | 862.5 | |
| p99 | 484.7 | 6.9 | 313.7 | 453 | 910.1 | 1241.1 | 1910.9 | |
| CloudFront h3 | p50 | 37.6 | 1 | 45 | 44.3 | 48.1 | 163.8 | 218.1 |
| p95 | 232 | 3 | 210.3 | 283.6 | 298.4 | 676.3 | 965.7 | |
| p99 | 571.8 | 6.1 | 367.4 | 465 | 574 | 1240.1 | 1729.3 | |
| Cloudflare h2 | p50 | 24.4 | 22 | 47.4 | 47.6 | 30 | 224.6 | 269.6 |
| p95 | 232.2 | 388.5 | 350 | 241.4 | 329.4 | 1180.7 | 1526.2 | |
| p99 | 714.7 | 850.1 | 927.2 | 657.9 | 1208.6 | 3290.9 | 4345.7 | |
| Fastly h2 | p50 | 2 | 21.8 | 40 | 27 | 37 | 239 | 285.9 |
| p95 | 133.5 | 147.9 | 268 | 170 | 256.8 | 1054.2 | 1320.4 | |
| p99 | 427.7 | 416.9 | 801.7 | 544.8 | 735 | 2946.1 | 3526.5 | |
| CloudFront h2 | p50 | 38.2 | 26.2 | 65 | 50 | 44.5 | 288.6 | 347 |
| p95 | 296.4 | 362.4 | 561.6 | 394.5 | 390.3 | 1576.9 | 1940.3 | |
| p99 | 1189.1 | 707.8 | 1453.5 | 848.7 | 1031.6 | 3771.4 | 4678.8 |
warm
reused connection
1,065,547 warm probes · 36% of file · h3 694,046 · h2 343,384 · 28,117 on h1/unknown (not ranked)
| WAIT | DL | TTFB | TOTAL | ||
|---|---|---|---|---|---|
| Fastly h3 | p50 | 22 | 15.7 | 24.6 | 44.2 |
| p95 | 106.9 | 116 | 120 | 239.1 | |
| p99 | 271.2 | 418.7 | 399.1 | 739 | |
| Fastly h2 | p50 | 26.7 | 16 | 29.2 | 52 |
| p95 | 148.1 | 183.6 | 175 | 360.4 | |
| p99 | 377.1 | 758.8 | 478.8 | 1196.9 | |
| Cloudflare h2 | p50 | 38 | 17 | 43 | 66.9 |
| p95 | 196 | 248 | 233.2 | 465.8 | |
| p99 | 440 | 722.1 | 692.2 | 1220.4 | |
| CloudFront h3 | p50 | 33.5 | 28.3 | 35.6 | 67 |
| p95 | 194.2 | 229.7 | 202 | 422 | |
| p99 | 366.5 | 442.4 | 397.3 | 801.4 | |
| Cloudflare h3 | p50 | 34.8 | 32.9 | 36.7 | 76 |
| p95 | 152 | 272 | 156.8 | 413.1 | |
| p99 | 357.6 | 786.3 | 379.3 | 1089.8 | |
| CloudFront h2 | p50 | 46.8 | 24.1 | 59.6 | 93.7 |
| p95 | 302.5 | 273.2 | 371.9 | 598.8 | |
| p99 | 592.1 | 683 | 791.9 | 1335.7 |
By device p50 total_ms · last 96h
| device | variant | file | probes | Cloudflare | Fastly | CloudFront |
|---|---|---|---|---|---|---|
| mobile | cold | 1p.gif | 926,945 | 159.5 ms | 195 ms | 186.1 ms |
| cold | 100.bin | 918,484 | 238.7 ms | 243.3 ms | 248 ms | |
| warm | 1p.gif | 597,950 | 41.9 ms | 30 ms | 37.5 ms | |
| warm | 100.bin | 593,465 | 82 ms | 55 ms | 70.8 ms | |
| desktop | cold | 1p.gif | 793,125 | 117.7 ms | 90 ms | 154.4 ms |
| cold | 100.bin | 794,746 | 175.2 ms | 117.4 ms | 199.6 ms | |
| warm | 1p.gif | 474,197 | 35 ms | 23.5 ms | 43 ms | |
| warm | 100.bin | 472,082 | 63.5 ms | 43.5 ms | 78 ms |
By country top 15 by volume · p50 total_ms · last 96h
1p.gif 43 B
cold
| country | probes | Cloudflare | Fastly | CloudFront |
|---|---|---|---|---|
| US | 204,766 | 149 ms | 167 ms | 148 ms |
| GB | 220,962 | 98 ms | 111.2 ms | 87 ms |
| DE | 121,553 | 153.3 ms | 128 ms | 105.5 ms |
| BR | 116,663 | 124.1 ms | 110.9 ms | 375.4 ms |
| FR | 100,629 | 92 ms | 108 ms | 86.4 ms |
| TR | 78,898 | 215 ms | 191.2 ms | 181.3 ms |
| ES | 60,586 | 102.7 ms | 93.8 ms | 102.2 ms |
| MX | 57,728 | 199 ms | 173.4 ms | 174.6 ms |
| IT | 45,676 | 133.6 ms | 134.1 ms | 119.1 ms |
| NL | 43,658 | 111 ms | 114.4 ms | 105.5 ms |
| CA | 35,389 | 119 ms | 128.8 ms | 117 ms |
| HK | 19,604 | 147.4 ms | 250.2 ms | 520.5 ms |
| AU | 32,133 | 103 ms | 114.1 ms | 519 ms |
| PL | 30,636 | 118.2 ms | 146.3 ms | 161.6 ms |
| AR | 31,377 | 133.7 ms | 116 ms | 472.4 ms |
warm
| country | probes | Cloudflare | Fastly | CloudFront |
|---|---|---|---|---|
| US | 133,939 | 36.3 ms | 24 ms | 26 ms |
| GB | 124,775 | 30 ms | 20.9 ms | 20 ms |
| DE | 76,374 | 45.4 ms | 22.8 ms | 21.8 ms |
| BR | 55,411 | 34 ms | 20.3 ms | 130.3 ms |
| FR | 59,126 | 28.5 ms | 18 ms | 18 ms |
| TR | 52,170 | 74.6 ms | 56.5 ms | 41 ms |
| ES | 31,740 | 30.8 ms | 20 ms | 21 ms |
| MX | 29,504 | 63 ms | 42 ms | 36 ms |
| IT | 33,619 | 36.1 ms | 23 ms | 25 ms |
| NL | 25,158 | 34 ms | 21 ms | 23 ms |
| CA | 23,405 | 34 ms | 19.8 ms | 21 ms |
| HK | 36,381 | 20.2 ms | 40.1 ms | 158.2 ms |
| AU | 19,650 | 27.8 ms | 15 ms | 175 ms |
| PL | 17,039 | 32.5 ms | 38 ms | 41 ms |
| AR | 16,392 | 34.5 ms | 21 ms | 151.1 ms |
100.bin 100 KB
cold
| country | probes | Cloudflare | Fastly | CloudFront |
|---|---|---|---|---|
| US | 211,417 | 210 ms | 193 ms | 188 ms |
| GB | 219,017 | 156.1 ms | 143.6 ms | 118 ms |
| DE | 121,762 | 242 ms | 170.6 ms | 139.3 ms |
| BR | 115,783 | 182.1 ms | 144 ms | 571.6 ms |
| FR | 100,602 | 140.9 ms | 142.7 ms | 111.3 ms |
| TR | 78,537 | 317.9 ms | 264 ms | 247.6 ms |
| ES | 59,968 | 157 ms | 122.1 ms | 131 ms |
| MX | 56,577 | 302.6 ms | 224.9 ms | 232.2 ms |
| IT | 46,132 | 209.1 ms | 171.3 ms | 159.4 ms |
| NL | 43,671 | 175.8 ms | 149.9 ms | 135 ms |
| CA | 35,036 | 176 ms | 157.9 ms | 148.4 ms |
| HK | 19,224 | 201 ms | 325 ms | 769.2 ms |
| AU | 31,925 | 153.8 ms | 147 ms | 788 ms |
| PL | 30,382 | 175 ms | 195.8 ms | 215.4 ms |
| AR | 30,512 | 208.4 ms | 156.2 ms | 711 ms |
warm
| country | probes | Cloudflare | Fastly | CloudFront |
|---|---|---|---|---|
| US | 139,439 | 68.9 ms | 44 ms | 47 ms |
| GB | 123,675 | 57 ms | 39 ms | 38 ms |
| DE | 75,312 | 91 ms | 46 ms | 43 ms |
| BR | 54,593 | 61.4 ms | 38 ms | 251.3 ms |
| FR | 59,095 | 51 ms | 33 ms | 33 ms |
| TR | 51,780 | 119 ms | 91.8 ms | 73 ms |
| ES | 31,791 | 57 ms | 36 ms | 40.4 ms |
| MX | 29,678 | 110.5 ms | 70.1 ms | 66.5 ms |
| IT | 33,462 | 62 ms | 40.1 ms | 43 ms |
| NL | 25,234 | 67 ms | 41 ms | 45.9 ms |
| CA | 22,981 | 57.8 ms | 35.9 ms | 39 ms |
| HK | 36,752 | 25.5 ms | 56.7 ms | 291.1 ms |
| AU | 19,673 | 55 ms | 31 ms | 346 ms |
| PL | 16,768 | 62 ms | 71.4 ms | 75 ms |
| AR | 16,236 | 62 ms | 37 ms | 290.6 ms |