- Grid
- FN30
- RST
- 599
- RTT
- 4 ms
A CDN you can write code on.
Static delivery from 24 stations, and a runtime at every single one of them. Deploy a worker the same way you deploy a file — it lands everywhere at once. No regions to pick, no per-region pricing, and nobody to talk to first.
100 GB and 2M edge invocations free every month, then $0.008/GB at every station.
- FRAFrankfurt5 ms
- GRUSão Paulo12 ms
- SYDSydney11 ms
At 1.04 TB a month that is roughly 9.26 M requests, and your bill is $9.13. The dial moves every figure on this page.
Your code runs in the layer, not behind it.
A shortwave signal reaches the other side of the world by bouncing off a layer overhead instead of crawling across the ground. A CDN is the same trick. What makes this one different is that the layer is programmable: your worker runs at the point of reflection, before the cache is consulted and before anything is sent back.
One file. Every station.
This is a complete worker. Push it and it is running in all 24 stations before the deploy command returns — image transforms cached at the edge on first request, everything else answered from the shelf and refreshed behind the visitor.
export default {
async fetch(req, ctx) {
const url = new URL(req.url)
// Resize and re-encode on the way
// through, once per variant.
if (url.pathname.startsWith('/img/')) {
const hit = await ctx.cache.match(req)
if (hit) return hit
const width = Number(url.searchParams.get('w') ?? 1200)
const source = await ctx.origin.fetch(url.pathname)
return ctx.cache.put(req, ctx.image(source, {
width,
format: req.accepts('image/avif') ? 'avif' : 'webp',
}), { ttl: '30d' })
}
// Everything else: answer from the
// shelf, refresh behind the visitor.
return ctx.cache.fetch(req, { staleWhileRevalidate: '1d' })
},
}Band plan
Four points in the request's path are yours to occupy. Take one or take all of them.
| Point | Allocation |
|---|---|
| REQUEST | Rewrite, redirect, rejectRuns before the cache is consulted. Sign URLs, gate by country, strip tracking parameters, send a bot somewhere else. |
| CACHE | Compose the keyDecide what counts as the same object. Vary on a cookie, ignore a query string, hold a stale copy while you revalidate behind it. |
| ORIGIN | Fetch, retry, fail overPick an origin per request, retry a slow one against another, and serve the last good copy when every origin is down. |
| RESPONSE | Transform the bodyResize and re-encode images, inject a nonce, patch a header, stream an edit into HTML without waiting for the whole document. |
Twenty-four stations. Every one answers.
Median round trip measured from inside each metro. Grid references are Maidenhead locators, because that is how a station says where it is.
- PLATE 01AMS/CCCONFIRMEDAmsterdamNetherlands
- Grid
- JO22
- RST
- 599
- RTT
- 4 ms
- PLATE 02LON/CCCONFIRMEDLondonUnited Kingdom
- Grid
- IO91
- RST
- 599
- RTT
- 5 ms
- PLATE 03FRA/CCCONFIRMEDFrankfurtGermany
- Grid
- JO40
- RST
- 599
- RTT
- 5 ms
- PLATE 04PAR/CCCONFIRMEDParisFrance
- Grid
- JN18
- RST
- 599
- RTT
- 6 ms
- PLATE 05STO/CCCONFIRMEDStockholmSweden
- Grid
- JO99
- RST
- 589
- RTT
- 8 ms
- PLATE 06MAD/CCCONFIRMEDMadridSpain
- Grid
- IN80
- RST
- 589
- RTT
- 9 ms
- PLATE 07MIL/CCCONFIRMEDMilanItaly
- Grid
- JN45
- RST
- 599
- RTT
- 7 ms
- PLATE 08WAW/CCCONFIRMEDWarsawPoland
- Grid
- KO02
- RST
- 589
- RTT
- 10 ms
- PLATE 09NYC/CCCONFIRMEDNew YorkUnited States
- Grid
- FN30
- RST
- 599
- RTT
- 4 ms
- PLATE 10IAD/CCCONFIRMEDAshburnUnited States
- Grid
- FM19
- RST
- 599
- RTT
- 3 ms
- PLATE 11ORD/CCCONFIRMEDChicagoUnited States
- Grid
- EN61
- RST
- 599
- RTT
- 6 ms
- PLATE 12DFW/CCCONFIRMEDDallasUnited States
- Grid
- EM12
- RST
- 589
- RTT
- 7 ms
- PLATE 13LAX/CCCONFIRMEDLos AngelesUnited States
- Grid
- DM04
- RST
- 599
- RTT
- 6 ms
- PLATE 14SEA/CCCONFIRMEDSeattleUnited States
- Grid
- CN87
- RST
- 589
- RTT
- 8 ms
- PLATE 15YYZ/CCCONFIRMEDTorontoCanada
- Grid
- FN03
- RST
- 589
- RTT
- 7 ms
- PLATE 16MIA/CCCONFIRMEDMiamiUnited States
- Grid
- EL96
- RST
- 589
- RTT
- 9 ms
- PLATE 17GRU/CCCONFIRMEDSão PauloBrazil
- Grid
- GG66
- RST
- 579
- RTT
- 12 ms
- PLATE 18SCL/CCCONFIRMEDSantiagoChile
- Grid
- FF46
- RST
- 579
- RTT
- 18 ms
- PLATE 19NRT/CCCONFIRMEDTokyoJapan
- Grid
- PM95
- RST
- 599
- RTT
- 6 ms
- PLATE 20SIN/CCCONFIRMEDSingaporeSingapore
- Grid
- OJ11
- RST
- 589
- RTT
- 8 ms
- PLATE 21SYD/CCCONFIRMEDSydneyAustralia
- Grid
- QF56
- RST
- 589
- RTT
- 11 ms
- PLATE 22BOM/CCCONFIRMEDMumbaiIndia
- Grid
- MK68
- RST
- 589
- RTT
- 10 ms
- PLATE 23ICN/CCCONFIRMEDSeoulSouth Korea
- Grid
- PM37
- RST
- 599
- RTT
- 7 ms
- PLATE 24JNB/CCCONFIRMEDJohannesburgSouth Africa
- Grid
- KG44
- RST
- 579
- RTT
- 16 ms
One rate. Every station. Move the dial.
Traffic out of Johannesburg costs exactly what traffic out of Ashburn costs. There is no regional tier, no committed-use contract and no minimum. Set the dial to what your site actually does and read the bill off the panel.
All-in per GB is the whole bill divided by your traffic, so it counts edge invocations as well as bandwidth. It starts at nothing while the free allowance covers you and climbs toward $0.0097 as you outgrow it. Bandwidth on its own is always $0.008.
- Included every month
- 100 GB of traffic and 2 million edge invocations, on every account, permanently.
- Traffic past the allowance
- $0.008 per GB, identical at all 24 stations.
- Edge code past the allowance
- $0.20 per million invocations. CPU time is not metered separately.
- Origin pulls
- Not billed. Fetching from your own origin is part of the service, not a line item.
- TLS, HTTP/3 and custom domains
- Included, including wildcard certificates. Certificates renew without being asked.
- Leaving
- Export your configuration and workers as files at any time. There is no exit fee.
The log, as the station writes it.
Every contact is logged with the station that answered and what it did. EDGE means your own code produced the response.
| Time | Stn | Path | Code | RTT | State |
|---|---|---|---|---|---|
| 18:42:07 | AMS | /assets/app.b41f9c.js | 200 | 4 ms | HIT |
| 18:42:07 | NRT | /img/hero.avif?w=1600 | 200 | 11 ms | EDGE |
| 18:42:08 | IAD | /api/session | 204 | 3 ms | PASS |
| 18:42:08 | LON | /assets/type/archivo.woff2 | 200 | 5 ms | HIT |
| 18:42:09 | GRU | /img/plate-07.avif?w=800 | 200 | 14 ms | EDGE |
| 18:42:09 | SIN | /index.html | 200 | 8 ms | SWR |
| 18:42:10 | FRA | /assets/app.b41f9c.js | 200 | 5 ms | HIT |
| 18:42:10 | SYD | /feed.xml | 304 | 9 ms | HIT |
| 18:42:11 | LAX | /img/og.png | 200 | 6 ms | MISS |
| 18:42:11 | ICN | /api/search?q=qsl | 200 | 7 ms | PASS |
| 18:42:12 | MAD | /assets/app.b41f9c.js | 200 | 9 ms | HIT |
| 18:42:12 | JNB | /img/hero.avif?w=800 | 200 | 16 ms | EDGE |
73
Best regards — how one operator signs off to another
Every station is already listening.
Point a domain at us, push a worker, and watch the cards come back. The first 100 GB are free and you will not be asked for a card.