IPFS Foundation
ipfs.tech · Storage · 2 records · JSON
- IPFS Foundation public gateways (ipfs.io / dweb.link / trustless-gateway.link) Storagefails: egressemail?card?R
- Self-hosted Kubo/Rainbow gateway (own VPS) Storagefails: egressemail?card?Rper-ip-shaping
IPFS Foundation public gateways (ipfs.io / dweb.link / trustless-gateway.link) Storage
fails: egressemail?card?R
| Free tier | No storage at all — gateway only. And the gateway itself is being retired: ipfs.io/dweb.link return HTTP 429 with 'Retry-After: 900' and 'Sunset: Mon, 21 Sep 2026', and redirect browsers to inbrowser.link. unit mixed; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | Rate-limited to the point of unusability from a datacenter IP: 10/10 requests returned 429 on a cold burst, and a single request after a 5 s pause also returned 429. Published posture: 'Rate limiting has begun on ipfs.io and dweb.link for hotlinked and backend traffic, and will be increasing.' Docs: 'no SLA, no support, and shared rate limits that can throttle or block your traffic at any time, without notice.' |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | rest rest |
| Tooling | curl/any HTTP client; path gateway at ipfs.io, subdomain at dweb.link; trustless subset at trustless-gateway.link. |
| Composes with | none. The three hostnames are one backend: 'They are not three separate services... sharing the same cache, the same connections to the IPFS network, and the same rate limits.' Rotating hostnames burns the same budget. |
| Reliability | This is the single most important measurement in the slot: the 'free IPFS CDN' that every tutorial assumes is (a) gone as of 2026-09-21 and (b) already 429-ing datacenter IPs before that date. Any architecture that depends on ipfs.io/dweb.link for serving is dead on arrival. |
| Notes | No storage at all — gateway only. And the gateway itself is being retired: ipfs.io/dweb.link return HTTP 429 with 'Retry-After: 900' and 'Sunset: Mon, 21 Sep 2026', and redirect browsers to inbrowser.link. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (4)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | ipfs.io/ipfs/bafybei...5u4 | probe: GET -> HTTP/1.1 429, Retry-After: 900, Link: rel="sunset", Sunset: Mon, 21 Sep 2026; 10/10 subsequent requests 429 |
| 2026-10-21 | dweb.link/ipfs/bafybei...5u4 | probe: GET -> 429, Retry-After: 900 (identical body, 188 bytes) |
| 2026-10-21 | blog.ipfs.tech/2026-08-beyond-sponsored-gateways/ | (2026-08-25) — 'Rate limiting has begun on ipfs.io and dweb.link for hotlinked and backend traffic, and will be increasing.' |
| 2026-10-21 | gatewaychanges.ipfs.io/ | 'these pauses keep growing until it retires for good on September 21 (UTC)' |
More fields (1)
{
"dead_end": {
"failure_class": "dead-service",
"why": "No storage at all — gateway only. And the gateway itself is being retired: ipfs.io/dweb.link return HTTP 429 with 'Retry-After: 900' and 'Sunset: Mon, 21 Sep 2026', and redirect browsers to inbrowser.link.",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (8)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted
Self-hosted Kubo/Rainbow gateway (own VPS) Storage
fails: egressemail?card?Rper-ip-shaping
| Free tier | Storage and egress are whatever your VPS/host allows. No provider quota exists — the cost moves to the host's bandwidth allowance. unit mixed; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | You pay the host. IPFS docs recommend putting a CDN like Cloudflare in front of the gateway and setting Cache-Control/ETag/X-Ipfs-Roots for cacheability — which is the one genuinely correct architectural move in this slot, but it is Cloudflare's free egress you are relying on, not IPFS's. |
| Identity | email (placeholder) not published |
| Limits |
Bandwidth of the VPS; DHT lookup latency on cold CIDs; no excess-use protection by default ('Unlike ipfs.io, a self-hosted gateway has no abuse protection by default'). |
| Binding | per-ip-shaping one stream is shaped, and a user's throughput is the shaped rate times the number of streams |
| Interface | rest, webdav, rclone rest |
| Tooling | Kubo (go-ipfs), Rainbow (github.com/ipfs/rainbow), Someguy for delegated routing, Helia in-browser; rclone can talk to the Kubo RPC API via a webdav/MFS shim but there is no first-class rclone backend. |
| Composes with | Does not multiply free storage — it only re-serves content you already paid to pin. Combined with a free pinning service it can turn 5 GB of free pinning into unmetered-looking reads, but only for 5 GB of content. |
| Reliability | This is the honest answer to 'does self-hosting change the economics?': it changes *who* meters you, not *whether* you are metered. It cannot manufacture 500 GB–1 TiB/day of free transit; it just moves the bill to the VPS or CDN. |
| Notes | Storage and egress are whatever your VPS/host allows. No provider quota exists — the cost moves to the host's bandwidth allowance. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | docs.ipfs.tech/how-to/replace-public-gateways-with-self-host | 'Put a CDN like Cloudflare in front of the IPFS gateway'; 'a self-hosted gateway has no abuse protection by default' (the vendor means it applies no excess-use protection) |
| 2026-10-21 | docs.ipfs.tech/how-to/gateway-best-practices/ | 'Ensure that you are correctly returning HTTP cache headers... Consider leveraging the list of CIDs in X-Ipfs-Roots' |
More fields (1)
{
"dead_end": {
"failure_class": "egress",
"why": "Storage and egress are whatever your VPS/host allows. No provider quota exists — the cost moves to the host's bandwidth allowance.",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (8)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted