Standards/ismn
ISMN
Overview
The International Standard Music Number (ISMN) is a unique identifier for notated (printed or digital sheet) music, defined by ISO 10957 12. Since 1 January 2008 an ISMN is a 13-digit number beginning with the reserved prefix 979-0, which makes it identical to a GTIN-13 and directly encodable as an EAN-13 barcode 12. It identifies notated music only — not sound recordings — and is administered worldwide by the International ISMN Agency, the ISO 10957 registration authority 13.
History
- The ISMN was proposed by the UK Branch of the International Association of Music Libraries (IAML), on the initiative of Alan Pope (Blackwell's Music), Malcolm Lewis (Nottingham) and Malcolm Jones (Birmingham) 1.
- A draft was presented at the 1987 IAML conference in Amsterdam and finalised after discussions at the 1989 Oxford conference 1.
- Following meetings in Ottawa and Paris, it was published as ISO 10957; the Library of Congress dates its introduction as an international standard to 1993 14.
- The original 10-digit form used a letter prefix: M-[publisher]-[item]-[check], e.g.
M-2306-7118-712. - On 1 January 2008 the ISMN moved to a 13-digit format beginning 979-0, with the
0replacing the oldM14. Older 10-digit numbers remain valid and "function just as the currently used 13-digit numbers" 4. - The standard is maintained by ISO TC 46/SC 9 1.
Technical specification
- Barcode symbology: the 13-digit ISMN is encoded as a standard EAN-13 (GTIN-13) symbol 2; BWIPP lists ISO 10957, ISO/IEC 15420 (EAN/UPC), BS EN 797 and the GS1 General Specifications as the governing references for the ISMN symbol 5.
- Structure (ISMN-13): four elements — prefix
979-0, a variable-length publisher (registrant) element, a variable-length item element, and a single check digit 42. After979-0, 8 digits are shared between publisher and item 2; large publishers receive short publisher IDs (down to 4 digits) and small ones long IDs (up to 7 digits), leaving more or fewer item numbers respectively 2. - Capacity: the scheme allows about one billion distinct items 2.
- No country/language element: unlike ISBN, the ISMN carries no area or language group, "as music is intrinsically international" 41.
- Check digit: modulus 10 with alternating weights 1 and 3 — identical to ISBN-13/EAN-13 14. Worked example:
979-0-060-11561-5gives a weighted sum of 85, so the check digit is 5 1. - Legacy conversion: a 10-digit
M-number converts to ISMN-13 by replacingMwith979-0and recomputing the check digit; python-stdnum'sto_ismn13()implements this 7. - Add-ons: encoders such as BWIPP accept an optional EAN-2 or EAN-5 add-on after the primary data (see EAN Add-on (EAN-2, EAN-5)) 5.
- Human-readable text: BWIPP renders the hyphenated ISMN as a text line above the symbol (configurable via
ismntextfont,ismntextsize, etc.), with the plain EAN-13 digits below 5.
Sample: 979-0-2600-0043-8 — the reference example used by BWIPP; omitting the final digit (979-0-2600-0043) makes the encoder compute it 5.
Use cases
- Music publishing and trade: the system exists to "rationalize the processing and handling of notated music" across production, inventory, ordering and billing for publishers and music traders 24.
- Libraries: ISMNs support library cataloguing, circulation and inter-library loans 4; music libraries (IAML) originated the standard 1.
- Rights management: rights organisations use ISMNs for rights assessment and royalty processing 42.
- Digital and multi-format scores: ISMNs apply to notated music in all formats — print, online and other media — with each edition, version and separately available part receiving its own number 4.
- Free registration in the US: the U.S. ISMN Agency at the Library of Congress assigns ISMNs to American music publishers at no charge 4.
Implementations
- bwip-js — JavaScript, ~2.4k stars, active 2026. Native JS port of BWIPP; lists
ismnas a supportedbcid, running in browsers, Node.js, React and CLI 6. Powers this site's playground. - bwipp/postscriptbarcode — PostScript, ~504 stars, active 2026. Reference ISMN encoder: accepts 12/13-digit hyphenated or legacy
M-input, auto-computes or verifies the check digit, upgrades ISMN-10 to ISMN-13 unless thelegacyoption is set, and supports EAN-2/EAN-5 add-ons 5. - zxing-cpp — C++, ~2.0k stars, active 2026. Reads and writes EAN-13 (which an ISMN barcode is) 8.
- python-stdnum — Python, ~598 stars, active 2026.
stdnum.ismnvalidates 10- and 13-digit ISMNs, detects type, converts to ISMN-13, splits into prefix/publisher/item/check and formats with hyphens — useful for post-scan validation 7.
Comparison
- ISMN vs. ISBN / Bookland EAN (ISBN): both use the same 13-digit EAN-13 barcode and check-digit algorithm 1. ISBN encodes a registration group (country/language area); ISMN deliberately does not 41. A publication can carry both an ISBN and an ISMN 1; ISMN is the choice when the item is notated music and should be traded and catalogued through music channels.
- ISMN vs. generic EAN-13: physically indistinguishable — the
979-0prefix alone tells a scanner the item is a music edition 12. - ISMN vs. recording identifiers: ISMN covers printed/notated music only, not recordings 1.
Fun facts
- The 979 prefix space is informally called "Musicland", an echo of the 978/979 "Bookland" used for ISBNs 1.
- When the format changed in 2008, the old letter
Mwas simply replaced by the digit0— so979-0is literally "Musicland, M" 14.
Status
Active. About 60 countries and regions participate in the ISMN system 2. The International ISMN Agency continues to coordinate it and held its 18th Annual General ISMN Meeting in São Paulo in September 2025 3. Encoders and validators remain actively maintained in 2026 567.
Sources
1 International Standard Music Number — Wikipedia, accessed 2026. 2 The ISMN — International ISMN Agency, accessed 2026. 3 International ISMN Agency — International ISMN Agency, accessed 2026. 4 About the ISMN — U.S. ISMN Agency, Library of Congress, accessed 2026. 5 ISMN — BWIPP symbol reference — Barcode Writer in Pure PostScript wiki, accessed 2026. 6 bwip-js — GitHub (metafloor/bwip-js), accessed 2026. 7 stdnum/ismn.py — GitHub (arthurdejong/python-stdnum), accessed 2026. 8 zxing-cpp — GitHub (zxing-cpp/zxing-cpp), accessed 2026.
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal