Barcode Label Generator
Encodes UPC-A, EAN-13, ISBN, GTIN-14, Code 128, and GS1-128 barcodes, computing each check digit from the supplied data rather than trusting it. Any of the four label lines splits into three columns justified left, center, and right, each with its own weight and size. Output runs to SVG, PDF, or PNG at 80, 100, or 200 percent, or to a ZIP of PDFs built from a CSV or an Excel workbook read cell by cell so long UPCs keep every digit.
Everything you enter is processed on your device. This tool loads a code library from cdnjs.cloudflare.com, which sees your IP address but never what you type.
Documentation
A barcode label generator encodes the six retail and logistics symbologies in common use, computing each check digit from the supplied data rather than trusting it. UPC-A is the 12-digit retail code (GTIN-12) used on North American shelves; EAN-13 is its 13-digit international counterpart (GTIN-13); ISBN encodes 978 or 979 book codes and auto-converts a 10-digit ISBN to ISBN-13 under the Bookland 978 prefix; GTIN-14 (ITF-14) covers case packs and pallets; Code 128 handles printable ASCII for asset tags and internal SKUs; and GS1-128 layers Application Identifiers, such as (01) for the GTIN and (17) for an expiration date, onto a Code 128 base, supplying the FNC1 leader automatically. A missing check digit is calculated; a supplied one is verified against the data rather than assumed correct. A check digit exists to catch transposition and mistyping errors before they reach a scanner: a single digit swapped in the data changes the computed check value, so a mismatched pair is flagged rather than printed as a barcode that looks right but scans as the wrong product.
The rendered label reports its printed size, module count, and pixels per module, alongside a set of syntax checks that catch print problems before they reach the press: whether the check digit was computed or verified, the module count including quiet zones, the X-dimension measured against the GS1 minimum for the chosen format, the share of label height left for the bars once text lines are placed, and any setting that fell back to a default because its value could not be parsed. The X-dimension, the width of the narrowest bar, is what a scanner actually resolves: a value below the GS1 minimum for the chosen format risks misreads at the register or dock door. Quiet zones, the blank margins the standard requires on either side of the bars, are counted into the module total because a barcode that meets the numeric width but lacks its quiet zone can still fail to scan. When a line is split into columns, the checks also estimate whether the columns fit the label width and name any line whose text would collide.
Each of the four label lines starts as a single centered field and can split into up to three columns, justified left, center, and right. The number of columns filled decides the justification, so filling only the first and third still prints left and right. Columns pack in order and each carries its own bold and size setting, so a bold SKU can sit beside a lighter quantity and origin on one line. Columns on a line share one baseline, and the line reserves height for its largest column so mixed sizes do not clip. Bottom line 1 falls back to the barcode data only while all of its columns are empty; filling any column there prints exactly what was typed. Bottom line 2 also prefixes export filenames, joining its filled columns with spaces.
Text Above and Text Below each hold up to two lines, and dimensions run at 80%, 100%, 200%, or a custom size, in Helvetica, Courier, or Times; the chosen font applies identically in the on-screen preview and in every exported format, so what is proofed on screen matches what prints. Round Corners softens the label background and is on by default. Transparent Background removes the fill so the label drops cleanly onto colored stock. Negative inverts the bars to white on black, Border draws a thin keyline that follows the corner radius, and the syntax checks warn when Transparent and Negative combine into a low-contrast result.
Output runs to SVG for vector label software, PDF for print-ready output at the chosen physical size, or PNG at a configurable DPI (default 300, capped at 600) that preserves transparency.
A CSV or an Excel workbook (.xlsx or .xlsm) generates a batch of labels as a ZIP of PDFs. A header row matches columns by name: data, format, line1, line1b, line1c, line2, line2b, line2c, topLine1, topLine1b, topLine1c, topLine2, topLine2b, and topLine2c, where the b and c names are the second and third columns on that line. The barcode column itself can be named data, barcode, upc, code, or value interchangeably, so a sheet headed SKU, UPC needs no rearranging. Naming a column line1 or line2 also prints it on the label, and line2 prefixes the exported filenames. A file whose first row holds a long run of digits is read as data rather than as column names, so a headerless export still works.
The format column takes a short symbology name rather than the wording in the format menu: UPC, UPCA, UPC-A, GTIN12, or GTIN-12 for UPC-A; EAN, EAN13, EAN-13, GTIN13, or GTIN-13 for EAN-13; ISBN, ISBN10, ISBN-10, ISBN13, or ISBN-13 for ISBN; GTIN14, GTIN-14, ITF14, or ITF-14 for GTIN-14; CODE128, CODE-128, or C128 for Code 128; and GS1, GS1128, or GS1-128 for GS1-128. Case and spaces are ignored but punctuation is not, so a value like "UPC-A / GTIN-12 (12 digits)" fails. An empty cell falls back to the format selected for the whole batch, so a sheet of one symbology can skip the column entirely, and an unrecognized value fails that row with "Unknown format" rather than being silently corrected. Every ISBN name reaches the same encoder, which renders Bookland EAN-13, so ISBN10 still expects the 13-digit 978 or 979 value rather than converting a 10-digit ISBN.
A workbook is the safer upload when the sheet holds long numbers. A UPC runs twelve digits, past the point where Excel switches its own display to scientific notation such as 8.11657E+11, and saving that sheet to CSV writes the shortened form, permanently losing digits. Loading the .xlsx directly reads each cell's stored value regardless of its display format, and reports the sheet name and any sheet it skipped; dates in the sheet carry through as their underlying spreadsheet serial number rather than a formatted date string. The legacy binary .xls format cannot be read and must be saved as .xlsx first. Excel's leading apostrophe, used to force a cell to text, is stripped automatically, as is the ="..." wrapper some exports use, so '811657040345 and ="811657040345" both read as 811657040345. A Code 128 value that must itself start with an apostrophe needs it doubled: ''ABC encodes 'ABC. A row that already lost digits to scientific notation is refused rather than encoded short; a value that still carries every digit, such as 8.11657040345E+11, is expanded and encoded with a note.
Bulk import supplies column text only. Bold, size, font, label size, corner rounding, and background come from one set of styling options and apply uniformly to every row in the batch, so a single run cannot vary styling row by row; a batch that needs different fonts or corner treatments per row must run as separate uploads, one per styling combination.
Sizing reference: 100% nominal is 1.469 in by 1.02 in. 80% (1.175 in by 0.816 in) sits near the scanner reliability floor and should be reserved for labels a handheld scanner reads at close range. 200% (2.938 in by 2.04 in) suits shelf or pallet labels meant to be read from farther away.
Apply the generator wherever a product needs a barcode that scans on the first pass. It covers retail, warehouse, and logistics formats and outputs vector, print, and raster files.
- Retail Packaging: UPC-A on consumer packaging for North American shelves, an 11-digit value with the check digit calculated automatically, exported at 100% to PDF for the print shop.
- International Products: EAN-13 on goods sold outside North America, with the calculated check digit confirmed before the SVG goes to the designer.
- Warehouse Bin Labels: Code 128 SKU, lot, or bin labels with rounded corners for thermal label rolls, exported as PNG at 300 DPI for a warehouse management system.
- Case Packs and Pallets: GTIN-14 / ITF-14 for outer cartons, either a 13-digit value with the check digit appended or a full 14-digit GTIN verified against its own check digit.
- Books and Catalog Items: ISBN encoding for ISBN-10 or ISBN-13 under the 978 or 979 prefix, set in Times for a print-book look.
- Shipping and Logistics: GS1-128 labels carrying Application Identifiers such as (01) for the GTIN and (17) for the expiration date, with the FNC1 leader supplied automatically.
- Asset Tags on Sticker Stock: A bordered, transparent-background Code 128 asset ID exported as PNG to drop onto pre-printed sticker sheets.
- Batch SKU Runs: Hundreds of PDFs from one CSV or .xlsx upload, packaged as a ZIP with one font, corner, and background setting applied across the run. Uploading the workbook rather than a CSV of it is what keeps a twelve-digit UPC column from arriving as 8.11657E+11.
- Multi-field Compliance Labels: SKU, quantity, and country of origin on a single row by splitting one line into three columns, the SKU bold on the left, quantity centered, origin aligned right, keeping a small label readable without spending three lines on three short values.
Inputs, outputs, and what the Barcode Label Generator computes
What the Barcode Label Generator asks for and what it returns, as a plain list. Defaults, units, and ranges are the ones the form loads with.
Inputs
- Barcode Format · default: UPC-A / GTIN-12 (12 digits)
- Barcode Data (text input) · default: 012345678905
- Line 1 (optional, e.g. product name) (text input)
- Bold · default: on
- Size (numeric input) · default: 1.0 · range: 0.5 to 2.0
- Line 1, column B (text input)
- Bold · default: off
- Line 1, column C (text input)
- Line 2 (optional, second top row) (text input)
- Line 2, column B (text input)
- Line 2, column C (text input)
- Line 1 (defaults to barcode data) (text input)
- Line 2 (optional, second row, this line also prefixes export filenames) (text input)
- Nominal 100% (1.469 in x 1.02 in) / Minimum 80% (1.175 in x 0.816 in) / Maximum 200% (2.938 in x 2.04 in) / Custom dimensions · default: Nominal 100% (1.469 in x 1.02 in)
- Custom Width (inches) (text input) · default: 1.469
- Custom Height (inches) (text input) · default: 1.02
- Font · default: Helvetica (sans-serif)
- Bar Width Override (pixels, blank for auto) (text input)
- Quiet Zone (modules each side) (text input) · default: 10
- Tracking (letter spacing in px) (text input) · default: 0
- Add border around label · default: off
- Negative (white on black) · default: off
- Round corners · default: on
- Transparent background · default: off
- PNG Export DPI (72-600) (text input) · default: 300
Controls
Generate · Reset · Generate ZIP of PDFs