What you're using right now
- 100+ barcode & QR symbologies
- Live preview & customization
- PNG & SVG export, no login
- Copy to clipboard
Loading Barcode Mintβ¦
Free Online Barcode & QR Code Generator
Generate an MSI barcode with an automatic mod-10 check digit for extra error protection on inventory labels.
Open the generator βTurn a CSV β or a numbered sequence β into hundreds of barcodes at once, exported as a ZIP of images or a print-ready PDF sheet. Launching with Pro.
The browser generator stays free forever. Paid plans are for teams who need bulk output and developers who need the REST API at scale β commercial license included. Tell us what you'd use; early-list members get first access and launch pricing.
What you're using right now
For designers & teams
Priced by requests. Commercial license and self-serve keys included; usage dashboard at launch.
MSI Mod 10 is the MSI (Modified Plessey) barcode with a single check digit appended, calculated using a modulo-10 algorithm closely related to the Luhn algorithm used to validate credit card numbers. It keeps the same underlying binary bar-width encoding as plain MSI, but adds one extra digit at the end that a scanner or downstream system can use to confirm the rest of the number was read correctly — catching common errors like a single mistyped or misscanned digit before bad data reaches your inventory system.
An msi mod 10 generator is worth using instead of hand-computing the digit because a single arithmetic slip defeats the entire point of the check — a wrong check digit gets rejected by a validating scanner just like a genuinely corrupted read, causing needless rescans. MSI itself dates back to shelf-marking and inventory systems from the 1970s, and while it has mostly been superseded by Code 128 and GS1 barcodes in modern retail, it persists in legacy warehouse management systems, older handheld scanners, and internal asset registries that were built around it decades ago and never migrated.
Working from the rightmost digit of your data, every second digit is doubled; if doubling produces a two-digit result, its digits are added together (for example, 8 doubled is 16, which becomes 1+6=7). All the resulting digits — both the doubled-and-reduced values and the digits left untouched — are summed, and the check digit is whatever value, when added to that sum, brings the total up to the next multiple of 10. Barcode Mint calculates and appends this digit automatically, so you only need to enter your base numeric data.
This is the same family of algorithm used in the Luhn check digit for credit cards and in several other barcode check-digit schemes, which makes it fast to calculate and easy to verify with standard libraries, though it's not the most robust option for catching every type of error — that's where MSI Mod 11 comes in, described below.
Like plain MSI, MSI Mod 10 encodes digits 0–9 only, using the same 4-bit binary bar/space pattern per digit framed by fixed start and stop patterns. The difference is a single trailing check digit computed with a doubling-based modulo-10 algorithm applied right-to-left over the base data. There's no fixed overall length requirement — the barcode simply grows by one digit compared to the equivalent plain MSI symbol. As with plain MSI, this is a de facto industry symbology rather than one governed by GS1 or ISO, so exact quiet-zone and module-width recommendations can vary slightly by scanner vendor.
Compared to plain MSI, Mod 10 adds one extra digit that provides basic protection against random single-digit errors and some transposition errors, at the cost of a slightly longer barcode. Compared to MSI Mod 11, Mod 10 is simpler to calculate and verify, but MSI Mod 11 uses a weighted-sum algorithm that's statistically more effective at catching double-digit transposition errors and certain other error patterns, so systems handling high-value or high-risk data sometimes prefer Mod 11 or even a double check digit combining both (MSI Mod 10/10 or Mod 11/10) for extra assurance. If your system only expects a single mod-10 check digit, Mod 10 is the correct, most widely compatible choice.
You'll find MSI Mod 10 in the same environments as plain MSI — retail shelf labels, warehouse and inventory tags, asset tracking — but specifically in systems where the extra reliability of a check digit is worth the small increase in label length, such as high-volume distribution centers where a single misread digit could route an item to the wrong bin or trigger an incorrect reorder.
It also shows up on library and video-rental shelf tags, cable and reel identification in electronics assembly, and multi-pack carton labels in older distribution software that was configured decades ago to expect exactly this check-digit scheme. Because MSI was never adopted by GS1 for retail point-of-sale, you won't see it at a supermarket checkout; it lives almost entirely in closed-loop, internal systems where the same organization controls both the label printer and the scanner configuration, which is precisely the kind of environment where standardizing on a check digit pays off over time.
Select MSI Mod 10 from the symbology list on the left, then enter your base numeric data — Barcode Mint calculates and appends the mod-10 check digit automatically, so you don't need to compute it yourself. From there you can:
/barcode?type=MSI10&data=123456 — to generate codes programmatically, with the check digit computed server-sideMSI Mod 10's check digit only protects you if the barcode is actually printed and scanned cleanly enough for a reader to detect it in the first place — it doesn't fix a code that's unreadable outright. Print at a resolution where wide and narrow elements stay clearly distinguishable, keep a consistent quiet zone on both sides, and configure your scanner or scanning software to validate the mod-10 check digit and reject non-matching reads rather than passing bad data straight through. For very high-volume or safety-critical workflows, consider MSI Mod 11 or a double check digit for a further reduction in undetected errors.
Before rolling out a batch of labels, scan a handful with the exact reader model used on the floor and confirm the decoded value includes the correct check digit rather than just the base number — some scanner configurations strip the check digit after validating it, which is fine for most systems but will break an integration expecting the full string. Keep a printed reference chart mapping a few sample values to their known-correct check digits nearby during setup, so a misconfigured scanner is obvious immediately rather than after a shift's worth of mis-scans.