{"rid":"storage/jsdelivr","card":{"rid":"storage/jsdelivr","eid":"jsdelivr","topic":"storage","slug":"jsdelivr","provider":"jsDelivr (npm + GitHub proxy CDN)","url":"https://www.jsdelivr.com","domain":"jsdelivr.com","category":"registry","tier":null,"verdict":"qualifies","vorder":0,"grp":"usable","confidence":"reported","binding":"per-object-cap","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":20000000,"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":5,"usd_month":null,"usd_per_tb_month":null,"summary":"No storage quota of its own — it is a *serving and permanence* layer over npm and GitHub, so the quota is whatever the origin package holds. Hard limits: pac...","duplicate_of":null,"n_unknown":5},"record":{"topic":"storage","slug":"jsdelivr","provider":"jsDelivr (npm + GitHub proxy CDN)","url":"https://www.jsdelivr.com","category":"registry","free_tier":{"stated":"No storage quota of its own — it is a *serving and permanence* layer over npm and GitHub, so the quota is whatever the origin package holds. Hard limits: packages >150 MB and (for GitHub) single files >20 MB are refused by default, raisable on request.","unit":"MB","metered_on":"stored-bytes","source_url":"https://www.jsdelivr.com/about","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"single files >20 MB","bytes":20000000,"source_url":"https://www.jsdelivr.com/about","notes":"not stated"},"retention":{"stated":"| Retention is *stronger* than the origin: 'Previously served immutable files may be retained in permanent storage even after upstream deletion","source_url":"https://www.jsdelivr.com/about","notes":"not stated"},"egress":{"terms":"Fully free and explicitly unmetered.","metered":false},"interface":["rest"],"interface_detail":"rest","tooling":"Plain GET on cdn.jsdelivr.net/npm/<pkg>@<ver>/<path> and /gh/<owner>/<repo>@<ref>/<path>. No client needed. Cache-purge API exists (email-gated).","chaining":"Chains onto npm (see npm candidate) or onto GitHub repos: publish the blob as an npm tarball, then serve it from jsDelivr at a URL with 1-year immutable cache and no bandwidth charge. This upgrades any npm/GitHub bulk store from 'downloadable' to 'CDN-served with free egress', which is exactly the client's 1 TiB/day serving workload.","limits":[{"kind":"per-object-cap","value":"single files >20 MB","source":"https://www.jsdelivr.com/about"}],"limits_note":"150 MB per npm package, 20 MB per single GitHub file (both default, raisable via GitHub issue). Rate limiting applies to purge, not to reads.","identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"Retention is *stronger* than the origin: 'Previously served immutable files may be retained in permanent storage even after upstream deletion. We do not accept removal requests simply because a package or version was unpublished, deleted upstream, or is no longer needed.' Once a URL has been fetched it keeps working after you delete the npm package — that is a genuine cold-archive property. Counter-risk: a 150 MB package cap means a naive >150 MB npm tarball 403s ('Package size exceeded the configured limit of 150 MB') even though npm itself accepted it.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://www.jsdelivr.com/about","date":"2026-10-21","proved":"'no bandwidth limits or premium features and its completely free to use by anybody'"},{"url":"https://github.com/jsdelivr/jsdelivr/blob/master/Terms%20of%20Use.md","date":"2026-10-21","proved":"'no limits on bandwidth or number of requests'; 'Previously served immutable files may be retained in permanent storage even after upstream deletion'"},{"url":"https://github.com/jsdelivr/jsdelivr","date":"2026-10-21","proved":"(README) — 'Packages larger than 150 MB or single files larger than 20 MB (in the case of GitHub) are not supported by default'"},{"url":"https://cdn.jsdelivr.net/npm/left-pad@1.3.0/package.json","date":"2026-10-21","proved":"probe: GET -> 200, Access-Control-Allow-Origin: *, Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable, Server: cloudflare"},{"url":"https://cdn.jsdelivr.net/npm/onnxruntime-node@1.20.1/bin/napi-v3/win32/x64/onnxruntime.dll","date":"2026-10-21","proved":"probe: GET -> 403, body 'Package size exceeded the configured limit of 150 MB.' (confirms the cap is real and enforced at fetch time)"}],"verdict":"qualifies","verified_at":"2026-10-21T00:00:00.000Z","notes":"No storage quota of its own — it is a *serving and permanence* layer over npm and GitHub, so the quota is whatever the origin package holds. Hard limits: packages >150 MB and (for GitHub) single files >20 MB are refused by default, raisable on request.","extras":{},"binding":"per-object-cap","binding_note":"the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":150,"unit":"MB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[0].value","kind":"limit:per-object-cap","num":20,"unit":"MB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.per_object_cap.notes","not-extracted"],["$.retention.notes","not-extracted"]],"history":[],"drift":[]}