ForHosting KIT · Developer Utilities

ISMN check digit

The twelve digits 979023067118 get the check digit 7, so the full music number is 9790230671187. Complete the ISMN of a score, a set of parts or a digital sheet-music edition, or check one from an order before it reaches your catalog. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Number
979023067118
You get
Calculation mode
Compute
Input
979023067118
Check digit
7
With check
9790230671187

Printed music uses the International Standard Music Number (ISMN) so scores, parts, and digital sheet-music products can be ordered and catalogued without confusion. Modern ISMN values are thirteen-digit codes that begin with the 979-0 music prefix and end with a single mod-10 check digit chosen so that mistyped publisher or title segments fail a simple weighted sum. This capability computes that digit from any pure twelve-digit body, or validates a complete thirteen-digit ISMN you already have—including hyphenated publisher forms after separators are stripped.

What the ISMN check digit is and how it relates to EAN-13

An ISMN identifies a printed or notated music publication under ISO 10957. After the industry moved from ten-character codes that began with the letter M to thirteen-digit numbers, every ISMN sits inside the same digit space as retail EAN-13 barcodes, with the fixed music prefix 9790 followed by publisher and item segments and a final check digit. That check digit is not decorative: it is computed so the full thirteen-digit string satisfies a modular condition and so single-digit typos and many adjacent transpositions are likely to break the sum.

The algorithm is the standard EAN-13 rule: multiply digits in odd positions (counting from the left, starting at one) by one and digits in even positions by three, add the products, and choose a check value from zero through nine that makes the total divisible by ten. When you hold only the first twelve digits—the body after assignment of prefix, publisher, and item—you compute the missing thirteenth character.

When a partner, scanner, or form supplies all thirteen digits, you recompute the expected check digit from the first twelve and report whether the supplied code is congruent to zero modulo ten. This tool implements that exact rule. It does not convert legacy M-prefixed ten-character ISMNs by itself (replace M with 9790 first if you still have old stock lists), does not look up titles in a repertoire database, and does not treat ISBN-13 book codes as interchangeable even though the arithmetic family is shared.

Knowing that ISMN is a fixed-length music identifier with a distinct search intent from general barcode validators helps you pick the right landing: use this page when the string you care about is a printed-music number, not a grocery GTIN or a ten-character ISBN-10.

Where ISMN check digits fit real music-publishing systems

Music publishers and print-on-demand houses assign ISMN ranges when they register with their national agency; after the twelve-digit body is fixed, compute mode completes the check digit so every score, part set, and digital download carries a well-formed thirteen-digit code. Distributors and sheet-music retailers receive purchase orders typed from dusty covers and PDFs; a single transposed digit should fail validation before a failed stock lookup. Library and conservatory workflows still import donor lists and interlibrary loan requests that mix hyphenated and compact forms—stripping separators then validating keeps both honest.

Marketplace sellers paste mixed ISMN and ISBN columns into inventory tools; routing thirteen-digit 9790 rows through this checker and book ISBNs through an ISBN-specific path avoids false passes. A passing check does not prove the score exists, is in print, or matches a title—it only proves the string is well formed under the ISMN check-digit algorithm, the same honesty bar you apply to any checksum.

Audit sheet-music catalog columns

Batch-validate every ISMN field in a publisher, distributor, or library export and quarantine rows whose check digit no longer matches the recomputed expected value.

What is an ISMN check digit?

It is the thirteenth digit of a modern ISMN, computed with alternating weights 1 and 3 over the first twelve digits so the full thirteen-digit code is divisible by ten (the same modular family as EAN-13).

What happens with non-numeric input?

Wrong lengths and empty strings also fail before any check digit is computed.

Is the ISMN check digit tool free?

The browser tool is free and runs locally.

How is the ISMN check digit calculated?

It uses the EAN-13 rule. Multiply the twelve digits alternately by 1 and 3 from the left, add the products, and choose the digit from 0 to 9 that brings the total up to a multiple of ten.

What do I do with an old ISMN that starts with M?

Replace the letter M with 9790 first, because the tool does not convert the old ten-character codes on its own. You can then check or complete the thirteen-digit number in the usual way.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/enc/ismn

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/enc/ismn \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"number":"979023067118"}'
{
  "number": "979023067118"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.ismn",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

It rejects letters, wrong lengths, and empty input with a clear invalid_input error instead of guessing. Use it free in the browser or call the KIT API at the published price; both paths run the same deterministic EAN-style arithmetic with no network lookup and no stored catalog.

How to compute a check digit or validate a full thirteen-digit ISMN

Send a number field containing the digits. Leading and trailing whitespace is trimmed; internal hyphens and spaces are stripped so common publisher forms such as 979-0-2306-7118-7 can be validated without a separate cleaner. Mode compute is the default: provide exactly twelve digits after stripping. Mode validate expects a full thirteen-digit ISMN after stripping. Empty strings, wrong lengths, non-numeric input after separator removal, and invalid mode values fail before any sum runs. Any remaining non-digit character—letters, punctuation, or symbols—fails with invalid_input before any sum runs and is not billed. The response includes check_digit as a one-character string from 0 through 9, with_check as the twelve digits plus that character, the normalized twelve-digit input, length thirteen, and algorithm ismn13. The response reports valid true when the weighted sum is divisible by ten, and always includes the supplied check_digit, expected_check_digit recomputed from the first twelve digits alone, the twelve-digit payload, and length thirteen. That shape supports “you typed 4, expected 7” messaging in forms without a second call. Because the path is pure parse with no clock, random source, or network, the same input always yields the same JSON on the free browser tool and on the API. At $0.002 per successful request you can protect bulk catalog imports, onboarding forms, and label printers without negotiating a custom tier. Prefer compute when you mint or complete partial numbers after assigning publisher and item segments; prefer validate when a user, partner file, or scanner supplies a full ISMN and you need a boolean gate before repertoire lookup.

Where ISMN check digits fit real music-publishing systems

Engraving and barcode print shops can call compute mode after the body is assigned and print with_check without hand-calculating the weighted sum.

Complete a twelve-digit music number

After assigning the 9790 prefix, publisher, and item body, call compute mode and store or print with_check so every ISMN carries the correct trailing digit.

Validate typed or pasted ISMN codes

When a form or CSV supplies a full thirteen-digit code (hyphens allowed), call validate mode and block lookup when valid is false, showing expected_check_digit to help correct a mistype.

How do I compute an ISMN check digit with this API?

POST with number set to twelve digits and mode compute (or omit mode). The response includes check_digit (0-9) and with_check (the full thirteen-digit ISMN).

How do I validate a full thirteen-digit ISMN?

POST with the full thirteen-digit code (hyphens optional) and mode validate. The response includes valid, check_digit, expected_check_digit, and payload (the first twelve digits).

Read the full KIT documentation →