lightningcdn.ccStart free
lightningcdn.cc

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.

PLATE 09
NYC/CC
CONFIRMED
New York
United States
Grid
FN30
RST
599
RTT
4 ms
Also confirmed
  • FRAFrankfurt5 ms
  • GRUSão Paulo12 ms
  • SYDSydney11 ms
1.04 TB

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.

Propagation chart comparing an edge answer with an origin round tripA visitor's request skips off the edge layer overhead, where your worker runs, and returns in 12 milliseconds. The same request travelling all the way to your origin and back takes 340 milliseconds.EDGE LAYER — YOUR CODEorigin — 340 ms12 msyour workerVISITORYOUR ORIGIN

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.

Where edge code can run in the request path
PointAllocation
REQUESTRewrite, redirect, rejectRuns before the cache is consulted. Sign URLs, gate by country, strip tracking parameters, send a bot somewhere else.
CACHECompose 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.
ORIGINFetch, retry, fail overPick an origin per request, retry a slow one against another, and serve the last good copy when every origin is down.
RESPONSETransform 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 01
    AMS/CC
    CONFIRMED
    Amsterdam
    Netherlands
    Grid
    JO22
    RST
    599
    RTT
    4 ms
  • PLATE 02
    LON/CC
    CONFIRMED
    London
    United Kingdom
    Grid
    IO91
    RST
    599
    RTT
    5 ms
  • PLATE 03
    FRA/CC
    CONFIRMED
    Frankfurt
    Germany
    Grid
    JO40
    RST
    599
    RTT
    5 ms
  • PLATE 04
    PAR/CC
    CONFIRMED
    Paris
    France
    Grid
    JN18
    RST
    599
    RTT
    6 ms
  • PLATE 05
    STO/CC
    CONFIRMED
    Stockholm
    Sweden
    Grid
    JO99
    RST
    589
    RTT
    8 ms
  • PLATE 06
    MAD/CC
    CONFIRMED
    Madrid
    Spain
    Grid
    IN80
    RST
    589
    RTT
    9 ms
  • PLATE 07
    MIL/CC
    CONFIRMED
    Milan
    Italy
    Grid
    JN45
    RST
    599
    RTT
    7 ms
  • PLATE 08
    WAW/CC
    CONFIRMED
    Warsaw
    Poland
    Grid
    KO02
    RST
    589
    RTT
    10 ms
  • PLATE 09
    NYC/CC
    CONFIRMED
    New York
    United States
    Grid
    FN30
    RST
    599
    RTT
    4 ms
  • PLATE 10
    IAD/CC
    CONFIRMED
    Ashburn
    United States
    Grid
    FM19
    RST
    599
    RTT
    3 ms
  • PLATE 11
    ORD/CC
    CONFIRMED
    Chicago
    United States
    Grid
    EN61
    RST
    599
    RTT
    6 ms
  • PLATE 12
    DFW/CC
    CONFIRMED
    Dallas
    United States
    Grid
    EM12
    RST
    589
    RTT
    7 ms
  • PLATE 13
    LAX/CC
    CONFIRMED
    Los Angeles
    United States
    Grid
    DM04
    RST
    599
    RTT
    6 ms
  • PLATE 14
    SEA/CC
    CONFIRMED
    Seattle
    United States
    Grid
    CN87
    RST
    589
    RTT
    8 ms
  • PLATE 15
    YYZ/CC
    CONFIRMED
    Toronto
    Canada
    Grid
    FN03
    RST
    589
    RTT
    7 ms
  • PLATE 16
    MIA/CC
    CONFIRMED
    Miami
    United States
    Grid
    EL96
    RST
    589
    RTT
    9 ms
  • PLATE 17
    GRU/CC
    CONFIRMED
    São Paulo
    Brazil
    Grid
    GG66
    RST
    579
    RTT
    12 ms
  • PLATE 18
    SCL/CC
    CONFIRMED
    Santiago
    Chile
    Grid
    FF46
    RST
    579
    RTT
    18 ms
  • PLATE 19
    NRT/CC
    CONFIRMED
    Tokyo
    Japan
    Grid
    PM95
    RST
    599
    RTT
    6 ms
  • PLATE 20
    SIN/CC
    CONFIRMED
    Singapore
    Singapore
    Grid
    OJ11
    RST
    589
    RTT
    8 ms
  • PLATE 21
    SYD/CC
    CONFIRMED
    Sydney
    Australia
    Grid
    QF56
    RST
    589
    RTT
    11 ms
  • PLATE 22
    BOM/CC
    CONFIRMED
    Mumbai
    India
    Grid
    MK68
    RST
    589
    RTT
    10 ms
  • PLATE 23
    ICN/CC
    CONFIRMED
    Seoul
    South Korea
    Grid
    PM37
    RST
    599
    RTT
    7 ms
  • PLATE 24
    JNB/CC
    CONFIRMED
    Johannesburg
    South 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.

1.04 TB
Traffic / month
1.04 TB
Requests / month
9.26 M
All-in per GB
$0.0086/GB
You pay / month
$9.13

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.

Recent contacts
TimeStnPathCodeRTTState
18:42:07AMS/assets/app.b41f9c.js2004 msHIT
18:42:07NRT/img/hero.avif?w=160020011 msEDGE
18:42:08IAD/api/session2043 msPASS
18:42:08LON/assets/type/archivo.woff22005 msHIT
18:42:09GRU/img/plate-07.avif?w=80020014 msEDGE
18:42:09SIN/index.html2008 msSWR
18:42:10FRA/assets/app.b41f9c.js2005 msHIT
18:42:10SYD/feed.xml3049 msHIT
18:42:11LAX/img/og.png2006 msMISS
18:42:11ICN/api/search?q=qsl2007 msPASS
18:42:12MAD/assets/app.b41f9c.js2009 msHIT
18:42:12JNB/img/hero.avif?w=80020016 msEDGE

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.