{"eid":"ipfs","name":"IPFS Foundation","domain":"ipfs.tech","resolved_by":"domain","topics":["storage"],"n_records":2,"best_vorder":5,"review":null,"aliases":["IPFS Foundation","IPFS Foundation public gateways (ipfs.io / dweb.link / trustless-gateway.link)","Self-hosted Kubo/Rainbow gateway (own VPS)","ipfs.tech"],"records":[{"rid":"storage/ipfs-foundation-public-gateways","card":{"rid":"storage/ipfs-foundation-public-gateways","eid":"ipfs","topic":"storage","slug":"ipfs-foundation-public-gateways","provider":"IPFS Foundation public gateways (ipfs.io / dweb.link / trustless-gateway.link)","url":"https://docs.ipfs.tech/concepts/public-utilities/","domain":"ipfs.tech","category":"p2p","tier":null,"verdict":"fails-egress","vorder":5,"grp":"rejected","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":"rest","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":4,"usd_month":null,"usd_per_tb_month":null,"summary":"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...","duplicate_of":null,"n_unknown":8},"record":{"topic":"storage","slug":"ipfs-foundation-public-gateways","provider":"IPFS Foundation public gateways (ipfs.io / dweb.link / trustless-gateway.link)","url":"https://docs.ipfs.tech/concepts/public-utilities/","category":"p2p","free_tier":{"stated":"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","source_url":"https://gatewaychanges.ipfs.io/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://gatewaychanges.ipfs.io/","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://gatewaychanges.ipfs.io/","notes":"not stated"},"egress":{"terms":"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.'","metered":false},"interface":["rest"],"interface_detail":"rest","tooling":"curl/any HTTP client; path gateway at ipfs.io, subdomain at dweb.link; trustless subset at trustless-gateway.link.","chaining":"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.","limits":[],"limits_note":"429 + Retry-After 900 observed on the first request; Range requests capped at 5 GiB (Cloudflare CDN limit); Sunset header 2026-09-21.","identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"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.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://ipfs.io/ipfs/bafybei...5u4","date":"2026-10-21","proved":"probe: GET -> HTTP/1.1 429, Retry-After: 900, Link: rel=\"sunset\", Sunset: Mon, 21 Sep 2026; 10/10 subsequent requests 429"},{"url":"https://dweb.link/ipfs/bafybei...5u4","date":"2026-10-21","proved":"probe: GET -> 429, Retry-After: 900 (identical body, 188 bytes)"},{"url":"https://blog.ipfs.tech/2026-08-beyond-sponsored-gateways/","date":"2026-10-21","proved":"(2026-08-25) — 'Rate limiting has begun on ipfs.io and dweb.link for hotlinked and backend traffic, and will be increasing.'"},{"url":"https://gatewaychanges.ipfs.io/","date":"2026-10-21","proved":"'these pauses keep growing until it retires for good on September 21 (UTC)'"}],"verdict":"fails-egress","verified_at":"2026-10-21T00:00:00.000Z","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.","extras":{"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"}},"binding":"none","binding_note":"no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]},{"rid":"storage/self-hosted-kubo-rainbow-gateway","card":{"rid":"storage/self-hosted-kubo-rainbow-gateway","eid":"ipfs","topic":"storage","slug":"self-hosted-kubo-rainbow-gateway","provider":"Self-hosted Kubo/Rainbow gateway (own VPS)","url":"https://docs.ipfs.tech/how-to/replace-public-gateways-with-self-hosted-ipfs/","domain":"ipfs.tech","category":"p2p","tier":null,"verdict":"fails-egress","vorder":5,"grp":"rejected","confidence":"reported","binding":"per-ip-shaping","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":"rest,webdav,rclone","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":2,"usd_month":null,"usd_per_tb_month":null,"summary":"Storage and egress are whatever your VPS/host allows. No provider quota exists — the cost moves to the host's bandwidth allowance.","duplicate_of":null,"n_unknown":8},"record":{"topic":"storage","slug":"self-hosted-kubo-rainbow-gateway","provider":"Self-hosted Kubo/Rainbow gateway (own VPS)","url":"https://docs.ipfs.tech/how-to/replace-public-gateways-with-self-hosted-ipfs/","category":"p2p","free_tier":{"stated":"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","source_url":"https://docs.ipfs.tech/how-to/replace-public-gateways-with-self-hosted-ipfs/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://docs.ipfs.tech/how-to/replace-public-gateways-with-self-hosted-ipfs/","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://docs.ipfs.tech/how-to/replace-public-gateways-with-self-hosted-ipfs/","notes":"not stated"},"egress":{"terms":"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.","metered":false},"interface":["rest","webdav","rclone"],"interface_detail":"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.","chaining":"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.","limits":[{"kind":"per-ip-shaping","value":"1 TiB/day","source":"https://docs.ipfs.tech/how-to/replace-public-gateways-with-self-hosted-ipfs/"}],"limits_note":"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').","identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"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.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://docs.ipfs.tech/how-to/replace-public-gateways-with-self-hosted-ipfs/","date":"2026-10-21","proved":"'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)"},{"url":"https://docs.ipfs.tech/how-to/gateway-best-practices/","date":"2026-10-21","proved":"'Ensure that you are correctly returning HTTP cache headers... Consider leveraging the list of CIDs in X-Ipfs-Roots'"}],"verdict":"fails-egress","verified_at":"2026-10-21T00:00:00.000Z","notes":"Storage and egress are whatever your VPS/host allows. No provider quota exists — the cost moves to the host's bandwidth allowance.","extras":{"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"}},"binding":"per-ip-shaping","binding_note":"one stream is shaped, and a user's throughput is the shaped rate times the number of streams"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[0].value","kind":"limit:per-ip-shaping","num":1.0,"unit":"TiB","per":"day","currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]}]}