- Free allowance
- No total storage quota, no per-account package cap ('Unlimited public packages' — npm Pro page), no cap on versions per package.
- Verdict
- ★ qualifiesusable as stated; the read path was probed
- Cost
- free tier
- Identity
- email?placeholder, not evidence; card unknown, phone unknown
- Binding limit
- noneno named constraint binds
- Evidence
- reported9 sources; a third party said so
- Freshness
- stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
| Free tier | No total storage quota, no per-account package cap ('Unlimited public packages' — npm Pro page), no cap on versions per package. The only bounds are per-artefact and per-packument: empirically ~200 MB per tarball (no documented figure anywhere) and 100 MB per packument (the accumulated metadata document for all versions of one package). unit unlimited; metered on stored-bytes |
|---|
| Price | none stated |
|---|
| Identity | email (inferred, not read) not published |
|---|
| Egress | Free and unmetered, Cloudflare-fronted. Probe: GET of a 70 MB tarball returned Server: cloudflare, Cache-Control: 'public, immutable, max-age=31557600', Accept-Ranges: bytes; ranged GET returned 206 Partial Content. No auth, no signed URL, no expiry. |
|---|
| Per-object cap | not stated |
|---|
| Retention | | Append-only and durable — 2018 tarballs still serve with the original Last-Modified |
|---|
| Interface | rest, rclone, cli rest |
|---|
| Tooling | Two-verb REST: PUT /:pkg with a JSON body containing base64 _attachments (or the standard npm publish flow), GET /:pkg/-/:pkg-:ver.tgz for the blob. Named clients: npm CLI, libnpmpublish (github.com/npm/libnpmpublish), and purpose-built chunking wrappers — gist github.com/yulioaj290/e81d3a59ec00247f00ec34db378fae6c (shell script that splits a file into N MB chunks, publishes each as its own npm package, adds the rest as dependencies of chunk 1, and emits an unzip script), indexzero/npm-publish-split-stream (4 stars, streams a publish request without buffering). No rclone backend. |
|---|
| Composes with | UNBOUNDED: unlimited packages per account (Pro page: 'Unlimited public packages') x unlimited versions per package (bounded only by the 100 MB packument, ~763 versions for a 131 KB manifest — so keep manifests tiny and use many packages, not many versions of one package) x ~200 MB per tarball. Free accounts are per-email and per-GitHub-identity, so identities multiply the publish-rate ceiling, not the space ceiling. |
|---|
| Reliability | Append-only and durable — 2018 tarballs still serve with the original Last-Modified. Two hard failure modes for a bulk workload: silent 413 at ~200 MB (undocumented, so budget 150 MB), and packument bloat refusing all new versions for the whole package once it crosses 100 MB. Automated mass publishing gets 429'd. |
|---|
| Parsed numbers | |
|---|