EAN Check.comEAN Check.com

Bulk GS1-128 Parser & Editor

Paste a column of GS1-128 strings, Digital Link URLs, or scanner output. Get a sortable, filterable, editable table with cell-level validation, bulk operations, and round-trip export to paren, FNC1, Digital Link, CSV, and QR ZIP. Everything runs in your browser.

By The eancheck teamPublished

Pasting from a PIM, Excel, or a hand scanner

The textarea at the top of this page accepts three input shapes, and it accepts all three in the same paste. No format picker, no upload dialog, no configuration. Paste whatever you have and the parser figures out the rest line by line.

From a PIM or ERP export

Most PIM and ERP systems can emit a list of GS1-128strings in paren notation as part of a label-run report. Paste one string per line, click anywhere outside the textarea, and you’ll see the parsed table below with one row per line.

From Excel

If your Excel column contains paren strings, copy the column and paste directly. Excel’s clipboard format puts one value per line, which is exactly what the parser expects. If you copy multiple columns Excel will tab-separate them, in which case the parser only uses the first column and ignores the rest.

From a hand scanner

Point a USB hand scanner at the textarea and trigger a scan. The scanner emits the raw FNC1-delimited form, usually prefixed with]C1, and the parser strips the prefix and walks the AI chain automatically. You can scan multiple labels in sequence, one per line, without switching modes.

From a Digital Link QR code

Scan a Digital Link QR with your phone, the URL opens, copy it from the browser bar and paste here. Or, if you already have a column of Digital Link URLs in a PIM system, paste those. The parser recognises any URL with a /01/ path segment as a Digital Link regardless of the resolver domain.

The inline-edit workflow

Every cell in the table is editable. There’s no edit-mode toggle, no save button, and no read-only state. Click any cell, type a new value, and the change commits when you click outside the cell or press Enter.

When a cell fails validation (wrong length, wrong character set, wrong check digit, invalid date) it flips to a soft red background and the error message appears on hover. Type a valid value and the red drops away immediately. The row’s overall status dot re-computes at the same time, so a row whose last error you just fixed turns green as soon as you leave the cell.

Empty cells are editable too. If a row doesn’t currently have an AI value but the table has a column for it (because another row does), you can click the empty cell and start typing. The parser creates a new Application Identifier on that row as soon as you commit the value.

Clearing a cell (deleting all its characters before blurring) removes the AI from that row entirely. The row still exists; the specific AI is gone. This is the reverse operation of adding a new AI: both work through the same cell input.

Bulk operations, by example

Select rows via the checkboxes and the selection toolbar appears beneath the top toolbar. Every bulk operation operates strictly on the selected rows — nothing is applied to unselected rows unless you deliberately select them.

Bumping expiry dates for a whole product line

You’ve extended the shelf life of a product line and need to reprint 120 labels with the new expiry. Paste the 120 paren strings, select all rows (top-left header checkbox), click Shift date…, pick column (17), type +30, click Shift. Every selected row’s expiry advances by 30 days, re-validated on the spot. Export to paren strings and hand the file to the label printer.

Fixing a typo in a batch number across 50 labels

Someone encoded LOT2O25A (letter O) instead of LOT2025A (digit 0) on a whole run. Select the affected rows, click Find & replace…, pick column (10), enter LOT2O25A as Find and LOT2025A as Replace, hit Replace. 50 cells get corrected in one click. Export and reprint.

Adding a serial number column to an existing batch

Your existing labels carry GTIN and batch. A regulatory change now requires per-unit serialisation with AI (21). Paste the existing labels, select all, click Edit AI…, operation Add if missing, AI code (21), and type a seed serial. Every selected row gets a new (21) column cell. You’ll still need to make each serial unique before reprinting — edit individual cells or use Find & replace iteratively — but the column scaffolding is now there.

Removing a GLN column that shouldn’t have been there

You pasted a batch and realise the (410) Ship To GLN column shouldn’t be on this particular label run. Select all rows, click Edit AI…, operation Remove, AI code (410), click Remove. Every row loses its (410) value and the column disappears from the table as soon as no row still has it.

Re-exporting to any format

Click Export in the top toolbar and pick the format that matches your downstream system:

The per-row ... menu on the rightmost column of each table row gives you the same formats for a single row: copy any format to clipboard, download a single-row .txt, copy the QR as an image, download the QR PNG or SVG, or open the QR preview dialog with just that row inside.

Production checklist

Before you hand the exported file to a label printer or push the CSV into a PIM, run through this list. Each item covers a failure mode that has bitten real label runs.

Frequently asked questions

How many rows can I paste at once?

There's no hard cap. The parser and table are both linear in the number of rows and everything runs in your browser. Realistically you'll start to feel a slight delay on first paint around 5,000 rows because every cell becomes an editable input. For bigger batches, split the paste into chunks or use the CSV export → external processing → re-paste loop.

What happens to rows with parse errors?

They stay in the table with a red status dot and a tinted background. The error message is in the dot's tooltip. Hard-parse-failure rows can't be inline-edited because the parser couldn't split them into cells, but you can still delete them with the row's `...` menu or the selection toolbar. AI-level errors (wrong check digit, invalid date, bad length) show up as amber dots with cell-level red highlights — those cells are fully editable and the highlight flips away as soon as you type a valid value.

Can I mix paren, FNC1, and Digital Link inputs in the same paste?

Yes. Every line is detected independently, so one paste can have a paren string on line 1, an FNC1 scanner output on line 2, and a Digital Link URL on line 3. The table shows the detected format in the status-summary bar above the table, and you can still bulk-edit across the whole set as if they were homogeneous.

How do I bulk-update all expiration dates to the end of next month?

Select the rows you want to change (checkbox at the top selects everything), click Shift date… in the selection toolbar, pick column (17) Expiration Date, enter a day count, hit Shift. For an absolute target date, the simpler workflow is to click Edit AI… instead, pick operation Set value, AI code (17), and type the new YYMMDD directly — that replaces the value on every selected row regardless of what was there.

Does editing a cell affect any other row?

No. Cell edits are strictly per-row. If you want to apply the same change across many rows, select them and use Edit AI… or Find & replace… from the selection toolbar. Individual cell edits save on blur — click outside the input or press Enter to commit. The input will flip to a soft red background if the new value fails validation.

Why doesn't the table show columns for every possible AI?

The table only renders columns for AIs that appear in at least one row of your current data. Empty-of-data AI columns would just be noise. If you want to add a new AI to some rows, use Edit AI… with operation Add — it'll add the column to the table as soon as the first cell gets a value, and you can keep it visible or hide it via the Columns dropdown.

What does Shift date do for variable-length date AIs?

Shift date only operates on 6-digit YYMMDD date AIs: (11), (13), (15), (16), (17). The 10-digit date-time AI (7003) and longer date-range AIs like (7007) are skipped — they have different semantics and shifting them blindly would produce garbage. If you need to bulk-edit those, use Edit AI… with the full new value instead.

Can I feed the CSV export back into the tool?

Not directly. The CSV export is designed for spreadsheet workflows and PIM imports, not for round-tripping through this page. If you want to re-edit a batch, use the paren export (one line per row in paren notation) — paste that back into the textarea and every row parses again into an editable table. All your edits survive the export/import because the paren strings are the canonical serialisation of the rows' parts.

By The eancheck teamPublished

Questions or corrections? Email the eancheck team.