I used to think generating these was straightforward — pick a type, enter the data, export. Then I had a situation that changed my mind. We ran a warehouse relocation where 3,000 bin locations needed new barcode labels. The vendor quote was $1,200. I generated all 3,000 Code 128 labels in one CSV batch and printed them on Avery sheets over the weekend.
The root cause was not the tool. It was that I did not understand what the destination actually needed. GS1 General Specifications Version 24 (gs1.org/standards) spells out the requirements clearly, but most generators do not enforce them. They let you generate something that looks right on screen and fails in the real world. That gap — between what looks right and what actually works — is where most problems live.
I stopped treating generation as a one-click task and started treating it as a two-step process: configure, then verify. The configuration step is where I match the type and parameters to the actual destination. The verification step is where I test the output in conditions that match the real world — not just on my screen.
Our bulk generator handles the configuration complexity so I focus on verification. The UPC-A generator is especially useful for this workflow.
Test with the actual reader — not your eyes. If it is a barcode, scan it with the same scanner model your recipient uses. If it is a favicon, add it to a test site and check it on an actual iPhone and Android device. The simulator lies. The real device does not.
I also test the edge case: what happens at minimum size? What happens on a slow connection? What happens when the background is the wrong color? If it passes all three, it is ready.