What MSI (Modified Plessey) is
MSI, also known as Modified Plessey, is a linear barcode for numeric data with no inherent check-digit requirement of its own -- bwip-js renders whatever digit string you give it as-is unless you explicitly ask it to add a check digit.
Generate it now
Enter any numeric string to see a live preview.
Valid input
MSI accepts digits only. By default, no check digit is computed or validated at all -- the symbol encodes exactly the digits you enter. Turning on "includecheck" computes and appends one additional check digit using the selected algorithm (bwip-js defaults to Modulo 10 once this is on); it does not verify a check digit you may have already appended yourself.
Key options
Supported options include includecheck and checktype. Turning on includecheck adds a computed check digit; checktype then selects which algorithm computes it (once includecheck is on): mod10, mod1010, mod11, ncrmod11, mod1110, or ncrmod1110.
Output and printing
Export SVG for shelf-tag/asset-label artwork or PNG for a quick proof.
Common uses
MSI is used for retail shelf tags, inventory loop stock, and warehouse asset labels, with the check-digit algorithm varying by installation convention.
Example
See the live preview above, seeded with a bwip-js-verified example numeric payload.
Size guidance
Adding a check digit ("includecheck") lengthens the symbol by one bar group per check digit computed -- "mod1010" appends two check digits instead of the single digit "mod10" appends.
Troubleshooting
"checktype" is rejected outright unless "includecheck" is also turned on -- turn on includecheck first if you want to select a specific check-digit algorithm.
Related formats
Related formats: Plessey (the original symbology MSI modified) and Codabar, another numeric-oriented legacy library/asset-tag symbol.
FAQ
What does "checktype" actually control?
It selects which check-digit algorithm "includecheck" uses when computing the appended check digit: mod10 (a single Modulo 10 digit, the default once includecheck is on), mod1010 (mod10 run twice, two digits), mod11 and its NCR variant ncrmod11 (single digits with a different weighting), and mod1110/ncrmod1110 (mod11 followed by an extra mod10 digit). It has no effect at all -- and is rejected outright -- unless includecheck is also on.