nostrmedia.com (NIP-96 file host)
- Free allowance
- Free plan max_byte_size 26,214,400 (25 MiB); paid 'purple'/'onyx' 104,857,600 (100 MiB).
file_expiration: [0,0]on every plan = never expires. - Verdict
- caveatusable, with a named limit or an unprobed read path
- Cost
- free tier
- Identity
- anonymousno card, no phone
- Binding limit
- per-object-capper-object-cap 25 MiB
- Evidence
- reported3 sources; a third party said so
- Freshness
- stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
| Free tier | free plan max_byte_size 26,214,400 (25 MiB); paid 'purple'/'onyx' 104,857,600 (100 MiB). file_expiration: [0,0] on every plan = never expires.unit mixed; metered on unstated |
|---|---|
| Price | none stated |
| Limits |
per-object-cap 25 MiB free. 125 MB on the direct /upload, 5 GB via /presigned (per llms.txt) — the /presigned path is the one that matters and it is far above the free plan's advertised 25 MiB. |
| Identity | anonymous anonymous |
| Egress | unmetered, Cloudflare-fronted (Server: cloudflare, Cache-Control public max-age=14400). |
| Per-object cap | per-object-cap 25 MiB (26214400 bytes) |
| Retention | not stated |
| Interface | unknown NIP-96 HTTP file storage. Discoverable at /.well-known/nostr/nip96.json; POST /upload; /presigned 'handles up to 5 GB'. |
| Tooling | curl; NIP-98 Authorization header (signed event). The llms.txt documents the /presigned path for large objects. |
| Composes with | machine-readable plan manifest means the cap is queryable rather than scraped — one GET tells you the size ceiling per plan. |
| Reliability | transforms media at ingest on some paths (resizing, format_conversion, compression, metadata_stripping are all listed in the manifest) — verify that originals come back byte-identical. |
| Parsed numbers |
|
Evidence 3
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | nostrmedia.com/.well-known/nostr/nip96.json | literal body: api_url https://nostrmedia.com/upload, download_url https://file.nostrmedia.com, supported_nips [94,96,98], plans.free.max_byte_size 26214400, file_expiration [0,0], media_transformations image [resizing, format_conversion, compression, metadata_stripping] |
| 2026-10-21 | nostrmedia.com/llms.txt | 'A single POST to /upload accepts files up to 125 MB; /presigned handles up to 5 GB', 'Uploads never expire while the subscription is active' |
| 2026-10-21 | nostrmedia.com/docs/api.md | '/upload answers 413 above 125 MB because the request would outlive the worker' |
More fields 1
| unit note | free_tier.unit is 'mixed' because the headline is denominated in MiB or KiB, which the schema enum does not carry; the verbatim free_tier.stated keeps the true unit. |
|---|
Unknown values 4
- interface: the access interface was not established
- per object cap notes: the field may be stated in a source that was not read
- retention notes: the field may be stated in a source that was not read
- retention stated: the field may be stated in a source that was not read