After a few production failures, I settled on a simple setup: generate with the correct type, keep the critical parameter enabled, and verify against the real reader before anything ships. It sounds obvious, but most people skip at least one of the three.
The critical parameter is easy to forget because it is invisible on screen. Code 128 generator keeps it enabled by default, and GS1 General Specifications confirms it is required, so I cannot accidentally drop it.
I also keep a sample of every type I generate, so I can compare new output against something I know works. That reference set has caught regressions more times than I can count.
Every generator has a setting that looks optional but is not. For barcodes, it is the quiet zone — the blank margin around the symbol. Leave it out and the scanner cannot find where the barcode starts and ends. For favicons, it is the background handling — a transparent icon on a dark bookmark bar turns into an invisible smudge.
I check this parameter before every export. According to ISO/IEC 15417:2007 for Code 128 symbology, it is not optional — it is part of the specification. Generators that let you skip it are doing you a disservice.
The parameter is easy to ignore because it does not affect how the file looks on screen. It only affects whether the file works in the real world. That invisibility is exactly why it causes so much silent failure.
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.
Edge-case testing is where the ISBN standard (ISO 2108:2017) is most useful, because it documents the failure modes I would otherwise discover in production. I keep a checklist of these tests and run it before every shipment.
At the end of the day, the goal is an output you do not have to worry about. If a single step here saves you one redo, it was worth the read. I keep ISO/IEC 15417:2007 for Code 128 symbology bookmarked for the days I doubt myself, and I run my checks on every export before it ships.