RunTheTests
/

Code 128 Generator

Generate a Code 128 barcode that will actually scan at the size you print it.

Result

PASS

Code 128 ready to print

Each module prints at 0.284 mm, comfortably inside what a scanner reads. The bars are drawn as vector shapes, so they print at your printer's own resolution rather than being resampled from a bitmap — which is what keeps the module widths exact. Leave the white space either side of the bars clear: a border or a price sticker touching the quiet zone is the most common reason a correctly generated barcode will not scan.

Diagnostic telemetry
Encodes
SKU-00184-A
Symbology
Code 128 (set B)
Check characterModulo 103, included in the bars
67
Width in modulesIncluding a 10-module quiet zone each side
176
Printed module widthBelow 0.19 mm, scanners and ordinary printers start to fail
0.284 mm

What this cannot tell you

  • Generated in your browser. The value you encode is never uploaded or logged.
  • Bars are drawn as vector shapes and printed at your printer's own resolution. A barcode saved as a bitmap and scaled on the way to paper is the commonest reason a correctly generated code will not scan.
  • Uses code set B throughout — printable ASCII from space to tilde. Set C would halve the width of long numeric values and every switch between sets is a chance to get the check character wrong, which is a trade this tool declines for label work.
  • Reports the printed module width so you can see whether it is scannable, but cannot check your printer. Print one and scan it before running a sheet.

Take this with you

How this test page works

The text is encoded in code set B, the weighted modulo-103 check character is calculated and appended, and the whole symbol is drawn as vector bars. The check character is the part worth being careful about: it is weighted by position, and an off-by-one in that weighting produces a barcode that looks perfect, prints perfectly and is rejected by every scanner. Alongside the barcode the tool reports the printed width of one module in millimetres, which is what actually decides whether a scanner can read it.

What the results mean

Module width
The width of the narrowest bar once printed. Below about 0.19 mm, ordinary printers and older scanners start to fail.
Check character
A weighted modulo-103 value included in the bars and not in the text. It is what lets a scanner reject a misread rather than pass one on.
Quiet zone
The clear space either side of the bars — ten modules. A border or a sticker touching it stops the code scanning.
Code set B
Covers printable ASCII. Digits cost the same as letters here, so a long numeric value produces a wide barcode.

Common problems and fixes

The barcode will not scan
Check the module width first, then the quiet zone. Those two account for nearly every failure of a correctly generated code.
It scans as the wrong characters
That is a generator problem rather than a printing one — usually a wrong check character. Re-generate here and compare.
My value is too wide for the label
Every character costs eleven modules. Shortening the value is usually easier than finding more label; a numeric-only value in code set C would be narrower, at the cost of encoding complexity.
It scans on my phone but not the warehouse scanner
Phone cameras are far more forgiving than laser scanners. Test with the device that will actually be used before printing a run.

Frequently asked questions

How wide does a Code 128 barcode need to be?

Wide enough that one module — the narrowest bar — is at least about 0.19 mm on paper. Multiply the module count shown above by that and you have the minimum. A twelve-character value needs roughly 40 mm before quiet zones, which is why long values and small labels do not go together.

What is the check character for?

It is a value derived from everything else in the barcode and encoded alongside it. A scanner recalculates it and rejects the read if it does not match, which is what stops a smudged or partially-read barcode from being silently accepted as a different code.

Is my data sent anywhere?

No. The encoding happens in this page — worth knowing given these values are usually internal asset tags, order numbers or customer references.

More in Label