fshy

Home / Storage

Blossom servers

blossom.band · 2 records in Storage · JSON

Records 2

blossom.band/Mediastorage/blossom-serversJSONcomparereport an error

Free allowance
'Free uploads for everyone, from any Blossom-capable client.' 'A hard cap of 100 MiB per upload (20 MiB for free uploads), with no limit on the number of uploads or retention.'
Verdict
caveatusable, with a named limit or an unprobed read path
Cost
free tier
Identity
card?placeholder, not evidence; card unknown, phone unknown
Binding limit
per-object-cap100 MiB per upload
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 uploads for everyone, from any Blossom-capable client.' 'A hard cap of 100 MiB per upload (20 MiB for free uploads), with no limit on the number of uploads or retention.'
unit mixed; metered on unstated
Pricenone stated
Limits
  • per-object-cap (binding) 100 MiB per upload source
  • write-gated application/zip and application/octet-stream were both 415 'File type not allowed' source
  • write-gated application/octet-stream got 400 'Content-Type header does not match the file content' source
per-object-cap: 20 MiB for free uploads (100 MiB only on the $18/yr plan); Type gate is real and content-sniffed: application/zip and application/octet-stream were both 415 'File type not allowed'; PNG bytes sent with Content-Type: application/octet-stream got 400 'Content-Type header does not match the file content'. retention: none stated, 'no limit on ... retention'.
Identitycard (inferred, not read) not published
Egressunmetered, direct CDN URLs, CORS '*'. Reads 307-redirect to image.nostr.build which serves with Accept-Ranges and 206.
Per-object cap100 MiB per upload (104857600 bytes)
Retention'Free uploads for everyone, from any Blossom-capable client.' 'A hard cap of 100 MiB per upload (20 MiB for free uploads), with no limit on the number of uploads or retention.'
Interfacerest, cli rest
ToolingBlossom protocol: PUT /upload with an 'Authorization: Nostr <base64 kind-24242 event>' header signed by any self-generated secp256k1 key — no signup, no account, no email. Any Nostr client (Amethyst, Coracle, nak, blossom-server CLI) speaks it.
Composes withIdentity is a pubkey you generate offline in one line of code — unlimited free identities, zero cost, zero email. Each pubkey gets its own npub1....blossom.band hostname at upload time. 20 MiB x unlimited uploads x unlimited pubkeys. At 19 MiB per object, 10 TiB = ~550,000 uploads across ~550k keys, or a few thousand keys each doing 100 uploads.
ReliabilityA ~19 MiB upload returned HTTP 500 'Error uploading the file: unknown error' while 5 and 15 MiB succeeded, so the usable ceiling is somewhat below the advertised 20 MiB; one 5 MiB upload took 14 s from a user.
Parsed numbers
  • has-free-tier 1
  • per-object-cap 100 MiB
Evidence 3
datesourcewhat it proved
2026-10-21blossom.band/'Free uploads for everyone, from any Blossom-capable client'; 'A hard cap of 100 MiB per upload (20 MiB for free uploads), with no limit on the number of uploads or retention'
2026-10-21blossom.band/uploadprobe: PUT with self-signed kind-24242 auth -> 201 CREATED, url https://npub1n33yj...blossom.band/<sha256>.png, then GET -L -> 200, 1266 bytes, sha256 identical to uploaded file
2026-10-21source not publishedprobe: 15,728,509-byte PNG -> 201; 26,214,269-byte PNG -> 413 'File size exceeds the maximum allowed size of 20 MiB'; probe GET with Range: bytes=1000-1099 -> 206 Content-Range: bytes 1000-1099/5242749
More fields 1
unit notefree_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 2
  • 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

blossom.band/storage/blossom-band-nostr-build-blossomJSONcomparereport an error

Free allowance
Free uploads are 20 MiB per file with no retention guarantee ('A hard cap of 100 MiB per upload (20 MiB for free uploads)'), and the BUD-06 pre-flight is actively refused to non-browser…
Verdict
fails: quotathe free allowance is too small to matter
Cost
not stated
Identity
email?placeholder, not evidence; card unknown, phone unknown
Binding limit
noneno named constraint binds
Evidence
reported3 sources; a third party said so
Freshness
stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
Free tierFree uploads are 20 MiB per file with no retention guarantee ('A hard cap of 100 MiB per upload (20 MiB for free uploads)'), and the BUD-06 pre-flight is actively refused to non-browser…
unit none; metered on none
Pricenone stated
Identityemail (placeholder) not published
Egressnot recorded
Interfaceunknown
Toolingnot recorded
Evidence 3
datesourcewhat it proved
2026-10-21blossom.band/the text of Free tier, above
2026-10-21b.nostr.build/cited as the basis of the rejection: Free uploads are 20 MiB per file with no retention guarantee ('A hard cap of 100 MiB per upload (20 MiB for free uploads)'), and the BUD-06 pre-flight is actively refused to non-browser clie
2026-10-21blossom.band/uploadcited as the basis of the rejection: Free uploads are 20 MiB per file with no retention guarantee ('A hard cap of 100 MiB per upload (20 MiB for free uploads)'), and the BUD-06 pre-flight is actively refused to non-browser clie
More fields 1
dead end{"failure_class": "retention","why": "Free uploads are 20 MiB per file with no retention guarantee ('A hard cap of 100 MiB per upload (20 MiB for free uploads)'), and the BUD-06 pre-flight is actively refused to non-browser…","retry_when": null,"first_recorded": "2026-10-21"}
Unknown values 7
  • chaining: no value was recorded for this field
  • egress terms: no value was recorded for this field
  • interface: the access interface was not established
  • per object cap notes: no value was recorded for this field
  • per object cap stated: no value was recorded for this field
  • retention stated: no value was recorded for this field
  • tooling: no value was recorded for this field