An open standard for your music collection
Core 1.0 is a draft, open for review
Take your music and your lists from any app to any other, and lose nothing.
How it all flows. From one real collection: Plateau by Andrea Belfi is in twelve places on nine sources. The home keeps it as one item with a copy for each, and the playlist Hipnoza points at it. Apps connect through Access, and the whole collection moves as one file.
Why
Moving between music apps loses things
Switch music apps and you lose things. Titles and artists come along. The order of your playlists, when you added each song, your ratings and your cue points stay behind.
It is also rare for one app to see your whole collection. Albums you bought on Bandcamp, records on your shelf, a folder of FLAC files and the songs you liked on a streaming service all live in different places, with no shared idea of what you have.
Open Music Collection (OMC) is one format for all of it. Take your collection anywhere. A new app starts with what you have, not with nothing.
How it works
Four kinds of record in one file
The core is small. An exporter that knows each track's title, artists and one link is already producing a valid file.
- Item
- A song or an album you keep: title, artists, identifiers such as ISRC, your rating and your notes.
- Copy
- That item on one source, with the source's own id, and whether you own it.
- Source
- Anywhere music lives: a streaming account, a store, a folder, a server at home.
- List
- Playlists, sets, tags, folders and smart lists. They hold items, so a playlist moves between platforms intact.
anna.omc.ndjsonNewline-delimited JSON, one record per line| header | {"type":"omc","version":"1.0","generated_at":"2026-10-18T09:30:00Z"} |
|---|---|
| source | {"type":"source","id":"s1","platform":"spotify","name":"Spotify","account":"31anna0example"} |
| source | {"type":"source","id":"s2","platform":"bandcamp","name":"Bandcamp"} |
| item | {"type":"item","id":"i1","kind":"recording","title":"Night Drive","artists":["Mira Holt"],"ids":{"isrc":"QZES72600001"},"copies":[{"source":"s1","ref":"0exampleTrackId000001"},{"source":"s2","ref":"2854920395","ownership":"digital"}]} |
| list | {"type":"list","id":"l1","name":"Late sets","ordered":true,"entries":[{"item":"i1"}]} |
Because each record sits on its own line, a collection of a hundred thousand songs can be written and read as a stream. What can be played right now is never stored: that depends on accounts and licensing, so the app asks the source when you press play.
Apps keep what they don't understand
When an app reads data it doesn't know, it keeps it and writes it back unchanged. That is how a DJ app's cue points survive a trip through a streaming app, and how a field added next year survives an app written today. The rule in the core
"ext": {
"org.openmusiccollection.dj": {
"cues": [{ "at_ms": 32000, "label": "Drop" }]
},
"com.example.moods": {
"mood": "late night"
}
}
New sources describe themselves
A label's store or a server someone runs at home publishes a small descriptor saying what it can do. An app that has never heard of it can still show its tracks and link to them, and play from it when both sides support streaming.
// /.well-known/omc-source.json
{
"omc": "1.0",
"platform": "music.anna.example",
"name": "Anna's own server",
"homepage": "https://music.anna.example",
"capabilities": ["link", "media.stream"]
}
What it covers
Several apps, one collection
Your collection has one home: the app or service that keeps it. Other apps connect to it, each doing what it is good at, and you decide what each one can see and change. Each leaves the rest as it found it. Homes, apps and sources
Apps that only add
Some apps only bring music in: one that follows the labels and people you like, or one that finds music links in your email. You let them add music to your collection and nothing more. They never see what you already have.
Access: apps that only addFeeds any reader can open
Artists, labels and people publish what's new as an ordinary JSON Feed or RSS feed, with each release inside. A feed reader shows it; a music app keeps a release in one step. Your home can publish one of your lists as a feed, so friends can follow you like a label.
FeedsSending music to someone
Attach a small .omc.ndjson file to an email, or send it to a friend's share address. Their home adds it to their collection, says who sent it, and skips what they already have. Music from strangers is held until they let it in.
Records and albums
A collection can be all albums: a shelf of vinyl, saved albums, a wantlist. A copy can say its format, the side and position of a track (A1, B2), the condition of record and sleeve, and where it's kept. The Collector module adds what you paid, and records you sold or lent.
Recordings and releases · CollectorDJ preparation and mixes
Cue points, loops and beat grids go with the audio they were set on, a file or a stream, and play counts come from what you actually played. A mix or a radio show is a recording with a tracklist of the songs in it, including the ones nobody has identified yet.
DJCombining without duplicates
Import a collection from another app and you still have one collection. Ids only mean something inside their own collection, so the home matches records by what they contain: the same Spotify track, the same ISRC or UPC. A match by title alone is only a suggestion for you to confirm.
Combining collectionsModules
Everything beyond the core is optional
Bigger areas live in modules. Each has its own version, and an app adopts only the ones it needs. All of them are early drafts, published now so the people who will use them can shape them.
Access
The protocol apps use to read, add to and change a collection, with the person's consent.
Draft 0.2DJ
Cue points, beat grids and loops that travel with the file, and mixes with their tracklists.
Draft 0.2Feeds
Following artists, labels and people, as JSON Feed or RSS that any feed reader opens.
Draft 0.1Share
Sending music to someone, by email or to their share address.
Draft 0.1Collector
A record's history: what was paid, and copies sold, lent or given away.
Draft 0.1Catalog and Commerce
What exists, where, at what price, and where the artist wants you to buy.
Draft 0.1Delivery
Stream or download from any source, including ones that launch tomorrow.
Draft 0.2Folder
Your collection as plain-text notes you own, ready to open in Obsidian.
Who it's for
Start with an export file
People who love music
When an app you use offers an OMC export, you can keep a copy of your collection that doesn't depend on that app. With the Folder module, that copy can be a folder of notes on your own disk.
App developers
Import OMC files so new users arrive with their collection. Export it so people trust you with their data. There is a JSON Schema and a validator, and the validator also checks that your app keeps unknown data across a round trip.
Platforms
Data portability laws such as the GDPR already ask you to let people take their data with them. Making that export use the OMC file format is a small first step. The Access protocol for apps, and streaming through other apps, can come later.
| Level | The service | Defined in |
|---|---|---|
| 0 · Export | Lets people download their collection in the OMC file format | Core |
| 1 · Read | Publishes a descriptor and lets apps read collections with the person's consent | Access |
| 2 · Write | Lets apps change lists and favourites | Access |
| 3 · Media | Lets apps stream, preview or download through it | Delivery |
Status
A draft, and a good time to weigh in
Core 1.0 is a draft for review. The modules are earlier drafts still.
Read the specification, run the validator on an export of your own, and tell us where it doesn't fit your data. Feedback changes the most now, before anything is final. Changes are made as OMC proposals: pull requests to the specification repository.
Tangle started the project, is building the first implementation and looks after the specification for now. The standard itself belongs to nobody: the specification is CC BY 4.0, and the schemas and tools are Apache 2.0.
- Why not CSV, XSPF or JSPF?
- Those describe a playlist. OMC describes a whole collection: every source, what you own, your favourites, where metadata came from, and data from apps that don't exist yet.
- Do I need ISRCs or MusicBrainz ids?
- No. They make matching between services much more reliable, so include them when you have them, but none is required.
- Does it move audio files around?
- No. A collection holds references and links. Playback and downloads always go through the source, on its terms and through your account there.