fshy

fshy / Storage

Blossom blob servers

nostr.build · Storage · 1 record · JSON

Blossom blob servers (nostr.download, blossom.nostr.build, 24242.io) Storage

fails: quotaanonymousno cardRretention-clamped

blossom.nostr.build/ · Nostr media/blob servers (content-addressed, keypair auth) · storage/blossom-blob-servers · JSON · compare

Free tierPer-object caps only, and small: nostr.build free uploads 20 MiB, hard cap 100 MiB, then storage plans 5 GB / $18/yr up to 500 GB / $240/yr. 24242.io: 100 MiB max file, files deleted after 60 days unaccessed. blossom.psbt.me: 1 month hosting, files under 1 MB.
unit GB; metered on stored-bytes
Pricenone stated
Per-object capnot stated
Retention24242.io: 100 MiB max file, files deleted after 60 days unaccessed (60 days)
EgressFree CDN, global.
Identityanonymous anonymous
Limits
  • retention-clamped deleted after 60 days source
20 MiB free / 100 MiB absolute on nostr.build; 100 MiB on 24242.io; 1 MB on psbt.me. Auth is a signed event, so 'no account' is real: 401 with x-reason 'Missing Blossom Authorization header'.
Bindingretention-clamped a clock, not a quota: bytes leave whether or not the client is finished with them
Interfacerest BUD-01/BUD-06 HTTP API: PUT /upload, HEAD /upload, DELETE; auth is a signed Nostr event in the Authorization header, not an account.
Toolingany Blossom client; curl with a signed event.
Composes withContent-addressed by sha256, so it chunks naturally into the hoangvu12/free-s3 pattern — but 20 MiB chunks would need ~50,000 objects per TiB.
ReliabilityPure per-object-cap failure. Included because the auth model (keypair, zero registration) is the most open I found anywhere, and because the 60-day idle deletion on 24242.io is a textbook retention-clamp.
NotesPer-object caps only, and small: nostr.build free uploads 20 MiB, hard cap 100 MiB, then storage plans 5 GB / $18/yr up to 500 GB / $240/yr. 24242.io: 100 MiB max file, files deleted after 60 days unaccessed. blossom.psbt.me: 1 month hosting, files under 1 MB.
Evidence rungreported One page read moves it to documented.
Checked2026-10-21 (inherited); stale on 2026-11-04
Evidence (5)
datesourcewhat it proved
2026-10-21blossom.nostr.build/'A hard cap of 100 MiB per upload (20 MiB for free uploads), with no limit on the number of uploads or retention'; plans $18/yr 5GB … $240/yr 500GB
2026-10-21blossom.nostr.build/uploadHEAD returns 401, x-reason: 'Missing Blossom Authorization header, authorization required' (i.e. keypair auth, no signup)
2026-10-21nostr.download/upload401, x-reason: 'Auth header not found'
2026-10-2124242.io/'Max file size: 100MiB. Files are deleted if not accessed for 60 days.'
2026-10-21blossom.psbt.me/'Free Tier: 1-month hosting for files under 1 MB'
More fields (1)
{
 "dead_end": {
  "failure_class": "retention",
  "why": "Per-object caps only, and small: nostr.build free uploads 20 MiB, hard cap 100 MiB, then storage plans 5 GB / $18/yr up to 500 GB / $240/yr. 24242.io: 100 MiB max file, files deleted after 60 days unaccessed. blossom.psbt.me: 1 month hosting, files under 1 MB.",
  "retry_when": null,
  "first_recorded": "2026-10-21"
 }
}
Unknown or withheld values (5)
  • $.extras.dead_end.retry_when process
  • $.free_tier.notes process
  • $.per_object_cap.notes not-extracted
  • $.per_object_cap.stated not-extracted
  • $.retention.notes not-extracted