Printer troubleshooting technician providing live chat help

Joe B.

Expert ★★★★★ 27,853 satisfied customers

Specialities: Zebra ZPL, TSC TSPL, SATO SBPL, NiceLabel/BarTender, PLC triggers, Print-and-Apply

Label serialization issues — skipped numbers, duplicate barcodes, wrong increment, counter reset/rollover

Technician avatar Technician
Hey! We’ll sort out the industrial label printer skipping serial numbers problem.
A couple of details help me choose the fastest fix: Which brand/model (Zebra, TSC, SATO, Honeywell/Datamax)? Do you print from BarTender or NiceLabel, or send raw ZPL/TSPL/SBPL? Is the serial a printer counter or pulled from a CSV/Excel/SQL data source? And are you seeing duplicates, gaps, or wrong increment?
Customer
Zebra ZT410 over Ethernet. We use BarTender with a CSV. The serial number field should increment by 1, but we’re seeing skipped numbers and sometimes duplicates when operators reprint. Deadline today.
Technician avatar Technician
Got it. Skips or duplicates usually come from one of three places:
1) Counter logic set to increment per page while the job prints multiple labels per trigger (1-up vs 2-up, batch copies).
2) Data source mismatch — CSV/DB advancing, but the template also has a printer-resident counter (^SN) so both move at once.
3) Reprint behavior — print queue resend after error, or operators hitting “Print again” without locking the last used number.
We’ll check BarTender serialization, then confirm the ZPL field (^FN, ^SN, ^FS) and start value, leading zeros, and field length.
Customer
We print 3 copies per record. The number is 10 digits with leading zeros. Operators also do occasional reprints from History Explorer.
Technician avatar Technician
Step 1 — Fix BarTender serialization
• Open the serial field → Data Sources → set Serialization: By printed item (not per data record) when printing multiple copies.
• Set Increment = 1, Pad with zeros, and lock Length = 10. Enable Record last used value to prevent duplicates on reprint.
• If CSV already contains the next serial, disable template serialization and map the field directly — avoid double-increment.
Customer
We might also have ^SN in our ZPL template from an older setup. Could that cause the jump?
Technician avatar Technician
Exactly. In ZPL, commands like ^SN (Serialize Number) combined with BarTender’s serialization will advance twice. Fix it either way:
• Option A (software-controlled): remove ^SN and keep only ^FN mapped from BarTender.
• Option B (printer-controlled): keep ^SN, set ^SNxxxxx,1,Y (start, increment, reset), and in BarTender set the field to “From printer (do not increment)”.
Also verify ^SF/^FN order and that the counter reset isn’t triggered by power cycle.
Customer
We have a print-and-apply applicator. Sometimes PLC sends two triggers; we then miss one number. Anything to check on the device side?
Technician avatar Technician
Step 2 — De-bounce triggers & copies
• On the applicator/PLC, ensure a single print trigger per label (debounce input; add 200–300 ms gap).
• In ZPL, avoid using ^PQ copies when serialization is per printed item — instead loop the serial or let BarTender spawn individual labels to keep sequence exact.
• Disable printer-side reprint on error if the host already retries, to prevent duplicated serials.
Customer
We also noticed the number rolled over from 0999999999 to 0000000000 and QA flagged it. How do we set the next start?
Technician avatar Technician
Step 3 — Set start value & prevent rollover surprises
• In BarTender/NiceLabel, set the Start at value and tick Persist last used so a power cycle doesn’t revert.
• Printer-side: send a setup label with ^SN1000000000,1,Y to seed the next range; store it in non-volatile memory.
• Enforce 10-digit padding (leading zeros) and field length so the barcode/GS1-128 stays valid.
Customer
Good. We use Code 128 and sometimes QR with a GS1 Application Identifier. Could template formatting break serialization?
Technician avatar Technician
Yes. If the serial joins other fields, ensure the delimiter/FNC1 is static and only the serial sub-string increments.
• For GS1-128, keep the AI in a separate element string; don’t serialize the AI prefix.
• Validate check digit settings — some templates recalc on each label and can mask increment errors.
• Verify encoding and that the human-readable mirrors the serial value used in the barcode.
Customer
After the changes, test prints look correct. How do we lock it down so night shift can’t change counters?
Technician avatar Technician
Step 4 — Lock & audit
• Use BarTender Security/NiceLabel roles: operators = print only; engineers = design.
• Turn on Job Logging/History so every serial is auditable; enable Unique value enforcement.
• Export the template and store in version control; keep a Next Serial spreadsheet or SQL table as the source of truth for recovery.
Customer
Looks stable now — no gaps or duplicates in a 500-label test. Anything else before we run production?
Technician avatar Technician
Final checks:
• Print single-step batches (1, 2, 10, 100) and verify the serialization sequence with QA.
• Save a recovery point: snapshot last used value and template version.
• Optional firmware update for ZT410 and set Ethernet keep-alive to prevent job resends.

Summary: Fixing an industrial label printer skipping serial numbers means aligning BarTender/NiceLabel serialization, removing duplicate ZPL ^SN logic, de-bouncing triggers, and persisting the start value with proper zero-padding and field length. Need help implementing the exact ZPL/TSPL commands? Open the chat.

Quick answer: the accepted fix

Accepted fix when an industrial label printer skips or duplicates serial numbers: use software serialization per printed item (not per record), remove duplicate ^SN counters or map as from printer (not both), de-bounce triggers, set start value, increment = 1, enforce leading zeros and field length, and persist the last used value to avoid rollover/reset.


Why serialization skips numbers (ZPL/TSPL/SBPL, BarTender/NiceLabel)

Common causes: mixed printer counter and software counter, multi-copy jobs using ^PQ, PLC double triggers, reprint logic resending the job, or a counter rollover with wrong padding. Align one source of truth for the serial number and validate increment/length to keep sequences 1:1.

How to verify serialization is correct

Run a 100-label dry run and export the Job Log. Confirm no missing numbers or duplicates. Scan a sample into Excel and check that difference = 1 down the column. For GS1, verify FNC1 placement and that human-readable matches the encoded value.

Industrial serialization — quick troubleshooting tips

Most issues trace to counter scope, duplicate incrementers, or reprint behavior.

Quick path: set serialization per label → remove extra ^SN or map it properly → avoid ^PQ copies with counters → de-bounce triggers → persist last value and pad with zeros → audit with Job History.

Disclaimer: This information is AI-generated and intended for general guidance only. For advice specific to your environment, please consult a verified expert on Whizz-Tech before making decisions.


Getting Started Is Easy

Ask for help, 24/7

Members enjoy round-the-clock access to 12,000+ verified Experts, including tech support, mechanics, vets, and more.

Expert will respond in minutes

We match you with an Expert who specializes in your situation. Talk, text, or chat — whichever you prefer.

Save time & money

No scheduling hassles or expensive consults. Membership can save you significant time and money each month.

FAQ

Why is my industrial label printer skipping or duplicating serial numbers?

Usually a clash between software serialization and printer counters (ZPL ^SN/TSPL COUNTER), multi-copy jobs, double triggers, or reprints that resend jobs. Align one incrementer and log the last used value.

How do I prevent reprints from creating duplicate numbers?

Enable Record/Persist last value in BarTender/NiceLabel, restrict operator permissions, and avoid printer-side auto-reprint if the host retries. Use Job History to audit unique values.

Should I serialize in BarTender/NiceLabel or in the printer (ZPL ^SN)?

Either is fine — just use one. If software-controlled, remove ^SN and map ^FN field only. If printer-controlled, keep ^SN and set the software field to “from printer”.

How do I set leading zeros and a fixed length?

Set length/padding in your label software and match in ZPL/TSPL template. Lock at 10 digits (example) so the human-readable and barcode remain consistent.

Common serialization problems and quick fixes
SymptomLikely causeQuick fix
Missing numbers in sequence Duplicate incrementers; ^PQ copies; double triggers Use one counter; avoid ^PQ with serialization; debounce PLC/applicator
Duplicate serials on reprint Job resend; no last-value persistence Persist last value; disable printer auto-reprint; enforce unique values
Wrong digit count / barcode mismatch Padding/length not fixed; GS1 delimiter error Zero-pad and lock length; verify FNC1 and field join
Counter resets after power cycle Volatile start value Store start in NVRAM (^SN … Y) or persist in software DB

Step-by-step (Zebra/NiceLabel/BarTender)

  1. Choose one serialization source: software or printer (^SN/COUNTER). Remove the other.
  2. Set increment = 1, per printed item, and zero-pad to fixed length.
  3. Avoid ^PQ for multi-copies; let software spawn single labels when serializing.
  4. Persist “last used value”; seed the next start value before production.

Mixed fleets (TSC/SATO/Honeywell)

  1. TSPL: use SET COUNTER / ^S equivalents and disable software increment if printer controls it.
  2. SBPL (SATO): configure Serial Numbering and store to NV memory; keep padding consistent across models.

Sources

Matt Verified Icon
Matt ● replies in < 1 min
Technician Expert
⭐⭐⭐⭐⭐ Trusted by 27,000+ customers
Avatar
Alex · Expert's Assistant