Barcode and QR code generator

Encode any text into 13 barcode symbologies, lay the symbols out in a grid and download the result as a PNG to test a scanner — entirely in your browser.

Tip. Type the payload, pick a symbology and download the PNG to test a barcode reader or a laser scanner. Randomize values and Random types fill the grid with sample symbols, and the page never uploads what you type.

Barcode settings

Randomize values encodes a fresh sample value of the selected symbology in every cell; Random types picks a random symbology per cell. Both leave the text field untouched. The grid is limited to 6 rows and 6 columns.

Generated barcodes

Generating…

Upload the downloaded PNG to the online barcode scanner — it reports the decoded text, the symbology, the bounding box and the decoding time.

Symbologies

Symbology Kind Input
QR Code 2D Any text or URL. Error correction is applied automatically, so the symbol still decodes when part of it is damaged.
Data Matrix 2D Any text. The compact square symbol used on small parts and labels.
PDF417 2D Any text. A stacked linear symbol, the format used on AAMVA driver licenses and many ID documents.
Aztec Code 2D Any text. Needs no quiet zone around the symbol.
MaxiCode 2D Up to 93 characters. A fixed-size hexagonal grid, originally designed for parcel sorting.
DotCode 2D Any text. A dot pattern that tolerates high-speed inkjet printing on curved surfaces.
EAN-13 1D 12 digits — the 13th is the check digit and is calculated for you. A 13-digit value is accepted when its check digit is correct.
Code 128 1D Any ASCII text. The densest common linear symbology.
Code 39 1D Digits, capital letters, spaces and - . $ / + %. Lowercase letters are rejected.
ITF 1D Digits. An odd count is padded with a leading zero, which is what the standard prescribes.
MSI 1D Digits. A Mod-10 check digit is appended, which is what readers expect to find; it comes back as the last character of the decoded text.
Pharmacode 1D A single number from 3 to 131070. Used on pharmaceutical packaging.
Codabar 1D Digits and - $ : / . +, wrapped in the start and stop characters A, B, C or D — for example A1234567890B.

Scope and notes

This page is a raw symbology encoder: whatever you type is written into the symbol as-is, with no application-layer structure. It does not build GS1 element strings, AAMVA payloads, vCards or label layouts — so it is the right tool for producing test symbols for a reader, and the wrong tool for producing a compliant shipping label. For a generator that does assemble a structured payload, see the driver license generator, which writes AAMVA PDF417 barcodes.

All 13 symbologies are produced by bwip-js, the JavaScript port of BWIPP. Barcodes are drawn on an HTML5 canvas at a module scale wide enough to survive a re-upload or a printout: the exported PNG is rendered at the natural symbol size, and Download PNG saves that canvas 1:1, so you can drop it straight into a document or a scanner test.

A long payload makes a wide symbol — a 120-character Code 128 is over 1300 px across even at the smallest module scale. Rather than shrinking the finished image (which would blur the bars), any oversized symbol is re-rendered at the largest whole-number module scale that fits, so the exported PNG keeps crisp, evenly spaced bars at any grid size.

Nothing you type leaves the browser: the page has no upload, no server call and no storage. Keep test payloads synthetic — a barcode is not a secret, and anyone with a phone can read what you put in it.