Beta founding offer: lock in 50% off any plan for life, before the beta ends. Claim founding pricing →
ResourcesLibrary ManagementISRC vs ISWC: Recording Codes vs Composition Codes Explained

ISRC vs ISWC: Recording Codes vs Composition Codes Explained

An ISRC identifies a specific recording; an ISWC identifies the underlying composition. How they differ, why one composition has many ISRCs, and which one your workflow needs.

The one-line difference

An ISRC identifies a recording: one specific master, as it was captured and released. An ISWC identifies a composition: the song itself, the melody and lyrics, independent of who recorded it or how many times. Confuse the two and you either double-count masters that are really the same song, or collapse distinct recordings that only happen to share a title.

Recording vs. work.ISRC = “this exact recording.” ISWC = “this song, in any recording.” One ISWC sits above many ISRCs.

What an ISRC identifies

An International Standard Recording Code is a 12-character identifier: CC-XXX-YY-NNNNN (country, registrant, year of reference, and a five-digit designation), e.g. US-QX9-13-00108. It is assigned per recording, and that is where most of the confusion starts: a single song you think of as “one track” usually carries many ISRCs. Labels mint a fresh ISRC for every commercial variant: the radio edit, the extended mix, the remaster, a regional re-release.

So cross-source ISRC “disagreement” is expected, not a bug. Sonovault collapses those variants onto one canonical track while retaining every code, and GET /v1/tracks/isrc/:isrc resolves anyof a recording's ISRCs to the same record. The public track shape surfaces a single representative isrc, which can be null when no recording code has been ingested yet.

What an ISWC identifies

An International Standard Musical Work Code is formatted T followed by ten digits, usually written T-070142799-7. It is assigned once to the underlying composition and shared by every recording of that work: the original, every cover, every remix, every live take. Where the ISRC lives on the master-recording side of the industry, the ISWC lives on the songwriter-and-publisher side; it is the identifier that mechanical and performance royalties for the song are reconciled against.

Why one ISWC has many ISRCs

Take Daft Punk's Get Lucky. There is one composition, so one ISWC. Underneath it sit the album recording, the radio edit, a clutch of official remixes, a live version, and every cover another artist has cut. Each of those is a distinct master, so each has its own ISRC:

  • One ISWC - the work Get Lucky.
  • Many ISRCs - album version, radio edit, remixes, live cut, covers (one per recording).

Walk it the other way and the relationship inverts: start from a recording's ISRC and you get back to the one work it realises. That two-way mapping is exactly what the API exposes.

How they interlock in Sonovault

ISWCs are sourced from composition data (the MLC) and are not folded into the public track shape; they have their own two endpoints. Forward takes a recording (by ISRC or Sonovault id) and returns the composition code(s) behind it:

bashforward.sh
curl -s "https://api.sonovault.now/v1/tracks/iswc?isrc=USQX91300108" \
  -H "x-api-key: $SONOVAULT_KEY"
GET/v1/tracks/iswc?isrc=USQX91300108200 OK
{
  "sonovault_id": "315587019",
  "isrc": "USQX91300108",
  "iswcs": [
    { "iswc": "T-070142799-7", "title": "Get Lucky" }
  ]
}

It returns an iswcs array, not a single value, because a recording can realise more than one work: medleys and tracks that sample or stitch several compositions map to several ISWCs. Reverse goes the other way: hand it a composition and it lists every recording of it, most-played first, each with a representative ISRC:

bashreverse.sh
curl -s "https://api.sonovault.now/v1/tracks/iswc/T0701427997?limit=5" \
  -H "x-api-key: $SONOVAULT_KEY"
GET/v1/tracks/iswc/T0701427997200 OK
{
  "iswc": "T-070142799-7",
  "title": "Get Lucky",
  "total": 214,
  "recordings": [
    { "sonovault_id": "315587019", "isrc": "USQX91300108", "title": "Get Lucky", "artist": "Daft Punk" },
    { "sonovault_id": "418223901", "isrc": "GBAYE1301099", "title": "Get Lucky (Radio Edit)", "artist": "Daft Punk" },
    /* … 212 more, most-played first */
  ]
}
💡The reverse path param is normalised, so the hyphenated T-070142799-7 and the bare T0701427997 resolve to the same work. total is the full recording count; page through with limit(1–200).

Which one do you need?

Reach for the ISRC when you care about a specific recording:

  • Deduplicating or linking a particular master across platforms.
  • Resolving cross-platform IDs and Spotify / Beatport / Apple Music links.
  • Airplay and royalty reporting that identifies the exact recording that aired (an ISRC-level requirement).

Reach for the ISWC when you care about the song itself:

  • Grouping every cover, remix, and re-release of a composition.
  • Mechanical and publishing royalties, which settle per work.
  • “All versions of this song” discovery and sample clearance.

In practice most catalogue work uses both: the ISRC to pin the master you hold, the ISWC to roll masters up to the work they share. You can try either direction without writing code in the free ISRC Lookup and ISWC Lookup tools.

Frequently asked questions

Does every track have both an ISRC and an ISWC?

No. A track's representative ISRC can be null when no recording code has been ingested for it, and ISWC coverage comes from composition matching, so a recording may carry an ISRC but no ISWC. Treat both as present-when-known, never guaranteed.

Can two different recordings share the same ISRC?

No. An ISRC identifies exactly one recording. The same ISRC on two different tracks is a data error (a bad merge), not a legitimate case. The reverse, though, is normal: one recording legitimately carries many ISRCs, because every commercial variant mints a fresh one.

Can one recording have more than one ISWC?

Yes. Medleys and tracks that stitch several compositions together map to multiple works, which is why the forward lookup returns an iswcs array rather than a single value.

How do I look up an ISRC or ISWC without writing code?

Use the free ISRC Lookup and ISWC Lookup tools: paste a code and get the recording, or the list of recordings, back. The ISWC tool runs both the forward and reverse directions.

Ready to build?

Free API key. No credit card. 1,000 requests to get started.

Get Free API Key
More in Library Management
Library ManagementBackfilling Cross-Platform Track IDs for a Spotify-Only Library7 min readLibrary ManagementNormalising Genres Across Spotify, Beatport, and Discogs6 min read