Industrial Tech #Zebra#barcode scanners

How to Configure a Zebra Barcode Scanner for Custom Workflows (123Scan Guide)

Configure Zebra barcode scanners with 123Scan: ADF rules, prefix/suffix stripping, symbology filtering, and output customization for real warehouse workflows.

J.D. Sweeney October 20, 2025 11 min read

If you’ve ever plugged a Zebra scanner into a workstation and had it just spit raw barcode data directly into whatever field happened to be focused — welcome. That’s the out-of-box experience, and it’s fine until it isn’t. The moment you need to strip leading zeros from a SKU, add a tab character between data segments, or prevent your team from accidentally scanning QR codes when the workflow only expects Code 128, “fine” stops covering it.

Zebra’s answer to this is 123Scan — a free Windows desktop utility that lets you build scanner configuration profiles without writing a line of code or touching a programming manual. You generate a config barcode, scan it with your device, and the scanner behaves exactly the way you specified. Honestly, it’s one of the better configuration tools in the industry. This guide covers how to actually use it for real warehouse and distribution workflows, including the ADF rules that most people skip over and then regret.


What 123Scan Is (and Isn’t)

123Scan is a free configuration utility from Zebra Technologies, available at zebra.com/123scan. It runs on Windows and supports the vast majority of Zebra’s handheld and presentation scanners.

What it does: lets you configure symbology settings, data formatting rules, interface parameters, and scanner behavior — then outputs a printed or on-screen programming barcode you scan with the device to apply the config.

What it doesn’t do: it’s not a device management platform. It won’t push configs over-the-air, track device inventory, or integrate with your WMS. For that you’d be looking at Zebra’s DNA suite. 123Scan is a bench tool — you use it to build a profile, program the scanner, and you’re done. Simple, reliable, no license cost.

Supported Scanners

123Scan covers a wide range of Zebra products, including:

  • DS2200 series — entry-level 1D/2D imagers
  • DS3600 / DS3608 series — mid-range industrial handheld (the Zebra DS3608 Industrial 2D Barcode Scanner is one of the most common scanners I see in distribution environments)
  • DS9300 series — presentation/hands-free (the Zebra DS9308 Presentation Scanner is popular at receiving docks)
  • LI3600 / LI3678 — linear imager series
  • DS8100 series — high-performance 1D/2D
  • LS2208, LS3408 — older laser models still widely in use

If you’re not sure which model you have, flip the scanner over — the model number is on the label. You can also check your barcode symbologies using the Barcode Identifier tool if you’re working with unknown label stock.


Connecting Your Scanner

Before you open 123Scan, you need to get the scanner talking to your PC. This is where a lot of people lose 20 minutes unnecessarily.

Zebra scanners connected via USB can operate in two modes:

USB-HID (Human Interface Device) — the scanner presents itself as a keyboard. No driver needed. Data is typed into whatever field has focus. This is the default for most models. The downside: you lose control over data formatting at the driver level, and there’s no way to send non-printable characters like tab or CR without scanner-side configuration.

USB-CDC (Communications Device Class) — the scanner presents as a virtual COM port. Requires a driver (Zebra provides it). This gives you more flexibility if you’re building custom software, but it also means your app has to explicitly read from that COM port. Most off-the-shelf WMS software won’t do this without configuration.

For 123Scan, either mode works for programming purposes — the utility communicates with the scanner over USB regardless. But you’ll want to match the interface mode to what your production software expects. If your WMS is keyboard-wedge based (most are), stay on USB-HID.

To connect for programming:

  1. Plug the scanner in via USB
  2. Open 123Scan — it should detect the device automatically
  3. If it doesn’t, check Device Manager for any unknown devices and install the Zebra USB driver from their support site

For wireless scanners (Bluetooth cradle or 433MHz), you’ll need to program via printed barcode rather than live USB — more on that in the programming section.


The 123Scan Interface Walkthrough

When you launch 123Scan, you’re dropped into a project view. The workflow is:

Step 1 — Create or open a profile. A profile is a named configuration set. Create one per scanner type or per workflow — don’t try to build one universal profile for everything. Call it something meaningful like “Receiving-DS3608-Code128Only” rather than “Profile 1.”

Step 2 — Select your scanner model. This matters. Different models support different features. 123Scan will show you only the options applicable to the selected model, which keeps you from configuring something the hardware can’t actually do.

Step 3 — Configure settings. The left navigation panel breaks settings into logical groups: Interface, Symbologies, Data Formatting, Scanner Behavior, and so on. Work through them in order.

Step 4 — Program the scanner. Generate a config barcode or connect live via USB. Scan or push the config, verify it’s working, done.

Step 5 — Save the profile. Save it somewhere you’ll actually find it. I’ve seen warehouses lose scanner configs because someone saved them to a desktop that got wiped. Use a shared network location or your asset management system.


Symbology Configuration

This is the first place I go when setting up a scanner for a specific workflow, because it’s also the fastest way to prevent scanning errors.

Every scanner ships with most symbologies enabled by default. That means it’ll try to read Code 39, Code 128, QR, Data Matrix, PDF417, Interleaved 2 of 5, and a dozen others. In a controlled warehouse environment, that’s usually too permissive.

Why disable symbologies you don’t use:

  • Eliminates misreads on decorative or incidental barcodes (price tags, product packaging you’re not tracking, shipping labels from carriers using different formats)
  • Faster decode times — the scanner isn’t evaluating symbologies that will never match
  • Reduces operator errors when a scan “succeeds” but captures the wrong label

Common configurations by workflow:

WorkflowEnableDisable Everything Else
Retail receivingCode 128, Code 39, UPC-A, UPC-EYes
Warehouse putawayCode 128 onlyYes
Parts/manufacturingCode 128, Data MatrixYes
General shippingCode 128, QR, Data MatrixYes

In 123Scan, navigate to Symbologies in the left panel. You’ll see a tree of barcode types. Uncheck what you don’t need. For Code 128, you can also set minimum and maximum length constraints here — for example, if all your SKUs are exactly 12 characters, set both min and max to 12 and the scanner will reject anything that doesn’t match.

Don’t forget to check Check Digit settings for Code 39 if you’re using that symbology. Whether to transmit the check digit or strip it depends on what your receiving system expects — check your WMS documentation.

Get the weekly Field Notes newsletterSubscribe free →


ADF Rules — The Real Power

Advanced Data Formatting (ADF) is where 123Scan goes from “mildly useful” to “actually solves problems.” ADF lets you define rules that conditionally transform barcode data before it’s sent to the host system. The rules evaluate things like barcode symbology, data length, and string content, then apply actions like inserting characters, stripping characters, sending keystrokes, or replacing data.

If you’ve never used ADF before, think of it like a lightweight find-and-replace that runs inside the scanner itself — before the data ever hits your software.

How ADF Rules Work

In 123Scan, go to Data Formatting > ADF. You’ll build rules in a sequence. Each rule has:

  • Criteria — conditions that must be true for this rule to fire (symbology type, data length, string match, etc.)
  • Actions — what to do when criteria match (send prefix, strip characters, send suffix, send keystroke, etc.)

Rules are evaluated in order. You can have multiple rules, and you can specify whether to stop after the first match or continue evaluating.

Use Case 1: Strip Leading Zeros from SKUs

Your WMS expects numeric SKUs without leading zeros. Your suppliers ship product with barcodes that have leading zeros padded to 10 digits (e.g., 0000048291). You want the scanner to automatically strip them.

ADF Rule:

  • Criteria: Symbology = Code 128, Data starts with 0
  • Action: Strip leading characters while character = 0

More precisely: use the “Send remaining characters” action with “Skip N characters” where N is determined by a “While” condition. In 123Scan, this is built using the action chain: Skip 1 character → If next character = ‘0’ → repeat (loop back). It’s a bit clunky to set up, but it works reliably once configured.

Alternatively, if the leading zero count is always fixed (always exactly 4 leading zeros), just use Skip 4 characters → Send remaining data.

Use Case 2: Add Carriage Return (Enter) After Scan

The most common request I get. You want the scanner to automatically press Enter after each scan so the cursor advances to the next field. Without ADF, you’d configure this under Interface settings (most Zebra scanners have a “suffix” option there). But with ADF, you can make it conditional.

ADF Rule:

  • Criteria: Any scan (no criteria = applies to all)
  • Action: Send data → Send key Enter (CR, 0x0D)

In practice, go to Data Formatting > Scan Data Transmission first — there’s often a simpler “Suffix” field there where you can just select CR. Only use ADF for this if you need it conditionally.

Use Case 3: Filter to Only Accept Code 128 of Specific Length

Your putaway workflow uses 14-character Code 128 barcodes. Anything else is an error and shouldn’t scan at all. You’ve already disabled other symbologies, but you also want to enforce length.

ADF Rule:

  • Criteria: Symbology = Code 128, Data length = 14
  • Action: Send all data

Second rule (catch-all):

  • Criteria: (none — matches anything not caught by rule 1)
  • Action: Don’t send data (discard)

The second rule acts as a discard filter. Anything that isn’t exactly a 14-character Code 128 gets silently dropped. Operators will know because nothing appears in the field, which is your signal to re-scan or escalate.

Use Case 4: Add Tab Between Barcode Data Segments

Some workflows use concatenated barcodes or need to populate multiple fields with a single scan. For example, you want to scan a composite barcode and have the scanner send the first 6 characters into a “Location” field, then Tab, then the remaining characters into a “SKU” field.

ADF Rule:

  • Criteria: Symbology = Code 128, Data length > 6
  • Action: Send characters 1-6 → Send key Tab → Send remaining data

In 123Scan, the actions for this are:

  1. Send number of characters: 6
  2. Send key: Tab (0x09)
  3. Send remaining characters

This is genuinely useful when you’re working with a legacy system that has no barcode import capability and you’re stuck keyboard-wedging data into a form with multiple fields.

Use Case 5: Add a Prefix to Identify Scanner Source

In multi-line operations where several scanners feed data to a shared system, you sometimes need to know which station a scan came from. You can hardcode a prefix into the scanner’s config.

ADF Rule:

  • Criteria: Any scan
  • Action: Send string RCV01- → Send all data

Every scan from that scanner will arrive in your system as RCV01-[barcode data]. Your receiving software can parse and strip the prefix, but now you have station attribution baked into the data stream.


Programming the Scanner

Once your profile is configured, you need to push it to the device.

Option 1 — Live USB programming. If the scanner is connected and recognized, click Program in 123Scan. The utility pushes the config directly. This is the fastest method and works for DS3608, DS9300, and most USB-connected models. You’ll see a confirmation screen when it’s done.

Option 2 — Scan a printed barcode. 123Scan can generate a PDF or printable barcode sheet containing your full configuration. Print it, walk up to the scanner, and scan the barcodes in sequence. This is how you program wireless scanners (Bluetooth cradle models) or scanners that aren’t currently connected to a PC. The barcode sheet can run multiple pages for complex configs.

Option 3 — Save a config file. For some models, 123Scan can export a .cfg file you can distribute via Zebra’s device management tools. Less relevant for small operations, useful if you’re managing 50+ scanners.

After programming, always do a sanity check: open Notepad, scan a few representative barcodes, and confirm the output looks exactly right. Check length, prefix/suffix, special characters. Don’t trust the config without verifying it against real label stock.


Saving and Exporting Profiles

123Scan saves profiles as .scn files. Keep these in a location that will survive hardware changes — a shared network drive, your IT documentation system, wherever you keep important config files. Label them clearly with the model and date.

When you upgrade scanners — say, swapping out older LS2208s for Zebra DS3608 Industrial 2D Barcode Scanner units — load the old profile, change the target model, review the settings (some options will shift or won’t apply to the new hardware), and reprogram. It’s not a perfect migration, but it’s a solid starting point.

If you’re running label printers alongside your scanners, the Zebra ZT411 Industrial Label Printer has its own configuration ecosystem via ZebraDesigner and ZPL — but that’s a separate guide.


Bottom Line

123Scan is free, it’s reasonably well-designed, and it solves real problems. The two things most people skip — ADF rules and symbology filtering — are exactly the two things that eliminate the most scanner-related workflow errors in distribution environments.

My standard starting point for any new Zebra scanner deployment: disable all symbologies except the ones you actually use, set length constraints on those, add a CR suffix, and use ADF to handle any data normalization your WMS can’t do on its own. Takes about 20 minutes to configure, saves hours of manual data correction downstream.

If you’re not sure what symbology your existing labels are using, the Barcode Identifier tool can help you figure that out before you start locking the scanner down.

For scanners that need to cover a wider range of reads — mixed 1D/2D stock, varying label quality — the Honeywell Voyager 1470g 2D Scanner is worth a look as an alternative platform with its own comparable configuration utility. Same concepts apply, different tooling.

Get your profiles saved and documented. The worst day to realize you don’t have a backup config is when a scanner gets dropped and you need to replace it at 6 AM during receiving.

Related Articles