Every warehouse I ever worked in used Code 128. The reason is simple: it packs more information into less label space than any other linear barcode format, and it handles both letters and numbers. When you are labeling 50,000 bin locations across a million-square-foot facility, every inch of label matters.
Code 39 was the warehouse standard in the 1980s. It is simple — each character is nine bars (five black, four white, hence "39"). But it is wide. A 12-character Code 39 barcode takes up about 40% more label space than the same data in Code 128. Multiply that by 50,000 bin labels and you are talking about a lot of wasted label stock.
Code 128 packs data tighter using three character subsets — A (numbers and control codes), B (full alphanumeric, the most common), and C (pairs of digits compressed into single characters). The compression in subset C is excellent: "12345678" takes 8 characters in Code 39 but only 4 in Code 128C. Use our free Code 128 generator to create warehouse labels.
Shipping labels are the highest-volume barcode use case in the world. Every package that moves through a carrier network gets a tracking barcode, and that barcode is Code 128. The alphanumeric tracking IDs — something like "1Z999AA10123456784" — would be too long in Code 39 or any other linear format.
Code 128 also tolerates imperfect printing better than most formats. When a thermal printhead is wearing out and the bars start getting fuzzy, Code 128 still scans. Code 39 does not. This matters when you are printing 10,000 labels a day on equipment that has not been serviced in six months.
If the label needs to encode alphanumeric data and fit in a small space, Code 128 is the answer. If you are doing bulk generation for an entire facility setup, use our bulk barcode generator.