Local browser tool

Barcode generator

Render a tested barcode subset locally, verify the digital image with a second decoder, and export SVG or PNG without sending the value to a server.

Processed locally in your browser.

Values, rendered images, and exports remain in this browser. Supply only identifiers you are authorized to use; this tool does not issue or register UPCs or GTINs.

Configure a barcode

Supply your own value. BarcodeOpsKit does not issue identifiers.

Leading zeros are significant. GS1 types accept bracketed AI input but are not semantically parsed in this stage.

Dimensions and presentation

Preview and evidence

White-paper preview

Digital rendering and self-scan do not certify a physical print.

Configure a supported type and generate to see the local preview.

How this tool works

Choose one of the ten documented symbologies, enter the source value, set dimensions, quiet zone, text, and rotation, then generate. Numeric retail and logistics identifiers must pass the existing GS1 Modulo-10 check before rendering. The browser-only renderer creates SVG and PNG; a separate local decoder then reads the digital result back.

A passing digital self-scan means the generated pixels reproduced the expected data in this browser. It is useful regression evidence, not a measurement of contrast, ink spread, substrate, printer resolution, or scanning distance.

What this tool does not check

BarcodeOpsKit does not assign identifiers, query a registry, confirm ownership, identify a product, verify an AI against the GS1 dictionary, grade a physical symbol, certify a print, or guarantee retailer or marketplace acceptance. GS1 element strings receive only the bounded outer form required by the renderer in Stage 07; semantic AI parsing is deliberately deferred.

Supported barcode types

  • Code 128 and the documented Code 39 character subset.
  • UPC-A, EAN-13, EAN-8, and ITF-14 with valid check digits.
  • GS1-128 and GS1 DataMatrix from bracketed element-string input.
  • QR Code and GS1 Digital Link QR from an absolute HTTPS URL.

Other formats in the underlying renderer are intentionally hidden until BarcodeOpsKit has tests and original documentation for them.

Worked examples

UPC-A with a leading zero

012345000058 remains twelve characters. Its final digit matches the Modulo-10 calculation, so UPC-A rendering may begin.

Code 39 normalization

lot-39 is displayed separately from normalizedLOT-39. An asterisk is rejected because it is reserved for start and stop handling.

GS1 Digital Link QR input

https://id.gs1.org/01/09521101530001 is a bounded HTTPS example accepted by the renderer. The tool does not resolve the URL or prove assignment.

TEST / SYNTHETIC / NOT FOR COMMERCIAL USE. Examples demonstrate local behavior and do not claim issuance, ownership, or product identity.

Troubleshooting

The final digit is rejected
Recheck the complete source value; the generator never repairs it silently.
The GS1 value is rejected
Use bracketed AI form and verify the underlying GTIN check digit.
Digital self-scan warns
Do not export. Increase dimensions or quiet zone and try again.
The print will be resized
Preserve the exported aspect ratio and verify physical output with suitable equipment.

Privacy and local processing

Renderer and decoder packages are loaded only after generation starts. The value is not placed in a URL, request, analytics event, console log, or persistent store. Preview and download object URLs are revoked when replaced or released.

Sources and review

Reviewed 2026-07-13 with bwip-js 4.11.2 / BWIPP 2026-05-28, @zxing/browser 0.2.1, GS1 General Specifications 26.0.0, and theofficial GS1 check-digit guidance. BarcodeOpsKit is independent and not affiliated with GS1.

Scan a barcode image or camera feed,validate one identifier, orprocess a local CSV/TSV batch. For carrier selection, readCode 128 vs GS1-128 orSVG vs PNG for barcode printing.