Shoal
Open-source CDN · 24 edge sites

Ship once. Every browser gets it from a shoal nearby.

Shoal delivers your JavaScript, CSS, fonts and WASM from versioned, immutable URLs, checked by subresource integrity and cached at the edge closest to your users.

Link a release
<!-- pinned, immutable, verified -->
<script
  src="https://cdnshoal.com/v/lumen-ui/2.8.1/lumen.min.js"
  integrity="sha384-q3Zr1uX9…Hk7w"
  crossorigin="anonymous"></script>

Built for files that never change

A release gets its own path, and that path is frozen. Caches love it, and so do the people who debug production at 2 a.m.

Immutable version paths

Every file lives under /v/<pkg>/<semver>/. Once published, the bytes at that URL never change, so links you shipped last year still resolve.

Integrity by default

Each asset is published with a sha384 digest. Copy the integrity value from the push output and the browser refuses anything that was tampered with.

Anycast, 24 sites

Requests land on the nearest healthy site. If one drains for maintenance, traffic slides to its neighbour with no DNS change and no failed fetch.

Brotli and HTTP/3

Text assets are compressed with Brotli at level 11 ahead of time. Connections negotiate HTTP/3 where the client supports it, and fall back to HTTP/2 cleanly.

Automatic npm mirror

Not ready to publish? Reach any public npm package through /npm/<pkg>@<version>/. We resolve once, store forever, and serve from cache.

Open status, no tracking

We log aggregate hit counts per file, not people. Latency and availability are published for every site on the network page.

A quiet network that mostly stays out of the way

24edge sites on six continents
11 msmedian time to first byte
98.7%cache hit ratio at the edge
99.99%availability over the last 90 days