Blossom Protocol
Blossom is a media hosting protocol for Nostr that stores blobs on ordinary HTTP servers and addresses them by SHA-256 hash instead of server-assigned IDs.
How It Works
Blossom servers expose a small HTTP interface for blob retrieval, upload, and management. The canonical identifier is the file hash, so the same blob keeps the same address on every compliant server.
GET /<sha256>retrieves a blob by hashPUT /uploaduploads a blob- kind
24242Nostr events authorize uploads and management actions - kind
10063events, defined in BUD-03, let users publish their preferred servers
Because the hash is the identifier, clients can verify integrity locally after download and can try another server without changing the underlying reference.
Why It Matters
Blossom separates blob storage from social events. A note or profile can point at media without tying that media to one host’s URL design.
This also changes failure handling. If a server disappears, clients can fetch the same hash from a mirror, a cache, or a server discovered through the author’s BUD-03 list. That is a practical improvement over media systems where the original host URL is the only locator.
Interop Notes
Blossom is modular. Core retrieval and upload behavior lives in BUD-01 and BUD-02, while mirroring, media optimization, authorization, and URI sharing are split into separate BUDs.
That split lets clients implement the minimum needed for basic interoperability, then add optional pieces such as BUD-10 URI hints or local caching as support matures.
Primary sources:
- Blossom Repository
- BUD-01: Server requirements and blob retrieval
- BUD-02: Blob upload and management
- Local Blossom Cache guide
Mentioned in:
- Newsletter #1: News
- Newsletter #2: Notable Code Changes
- Newsletter #10: Blossom local cache layer emerges
See also: