will failSTATE-BY-LEAK-001state

Barcode width changes depending on what printed before

This label relies on a ^BY set by a previous label. Printed on its own, or after a different job, the barcode comes out a different size.

Set ^BY explicitly inside every ^XA block that draws a barcode.

A label that trips it
^XA^BY4^FO50,50^BCN,100,Y,N,N^FD123^FS^XZ
^XA^FO50,50^BCN,100,Y,N,N^FD456^FS^XZ
What the check looks for

An ^XA…^XZ block containing ^BC/^B3 with NO ^BY inside that same block, in a stream where an earlier block set ^BY.

What Labelproof says about it7 findings · STATE-BY-LEAK-001 highlighted
will failLY-02^XA · offset 0 · label 1

Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.

Set ^PW and ^LL explicitly in every format.

will failBC-06^BC · offset 7 · label 1

This GS1-128 is shorter than the 31.75 mm GS1 requires. It may scan on a handheld and fail at a fixed scanner.

Set the height to at least 254 dots at 203 dpi, or 375 at 300 dpi.

will failGS-05^BC · offset 7 · label 1

This GS1-128 is missing the leading FNC1. Without it the symbol is a plain Code 128 and the scanner will not read the AIs.

Add FNC1 (>8) immediately after the subset start code, or use ^BC mode D.

will failLY-02^XA · offset 42 · label 2

Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.

Set ^PW and ^LL explicitly in every format.

the rule on this page
will failSTATE-BY-LEAK-001^BY · offset 45 · label 2

This label relies on a ^BY set by a previous label. Printed on its own, or after a different job, the barcode comes out a different size.

Set ^BY explicitly inside every ^XA block that draws a barcode.

Zebra: "Once a ^BY command is entered into a label format, it stays in effect until another ^BY command is encountered." This is the 'only the second label in the batch is broken' bug. Nobody else documents it.

will failBC-06^BC · offset 45 · label 2

This GS1-128 is shorter than the 31.75 mm GS1 requires. It may scan on a handheld and fail at a fixed scanner.

Set the height to at least 254 dots at 203 dpi, or 375 at 300 dpi.

will failGS-05^BC · offset 45 · label 2

This GS1-128 is missing the leading FNC1. Without it the symbol is a plain Code 128 and the scanner will not read the AIs.

Add FNC1 (>8) immediately after the subset start code, or use ^BC mode D.

Why this matters

Zebra: "Once a ^BY command is entered into a label format, it stays in effect until another ^BY command is encountered." This is the 'only the second label in the batch is broken' bug. Nobody else documents it.

Check your own label

No signup, and we do not store your labels.

Open the linter