Skip to the tool

Barcode generator

MDV Tools

Type the number or text, pick the symbology, and take a barcode that scans.

Runs on this device Works offline
type what the barcode should hold
How this works

Each symbology is encoded here from its published tables, with no library: the bars are worked out as a row of modules — the narrowest bar or space — and drawn once as geometry that both downloads share, so the SVG and the PNG cannot disagree. EAN-13 and UPC-A are the retail codes on almost everything in a shop; EAN-8 is the short form for small packs. Type the digits without the last one and the check digit is worked out; type all of them and it is verified, and a wrong one is named rather than quietly replaced — a mistyped check digit is how a real product number gets corrupted.

A valid barcode is not a registered one. Shops only accept EAN and UPC numbers that belong to a company's GS1 prefix. This page makes the bars correctly for any number; it cannot make a number yours. For internal labels, stock, parcels and anything that never reaches a till, Code 128 is the right choice: it carries any ASCII text, and the page switches between its three code sets on its own, packing runs of digits two to a symbol. Code 39 is older and wider, and carries only capitals, digits and - . $ / + % and space; it is here for systems that still expect it, and lowercase is raised to capitals with a note, since Code 39 has none.

Print it black on white and leave the white margin round it alone: the quiet zone on each side is part of the code, and a scanner that cannot find it will not read the bars. Do not shrink an EAN-13 below about 80% of its nominal 37.29 mm width, and do not stretch it sideways — scale the whole thing. The digits are set in this device's monospace font, not OCR-B, which is what printed retail codes use; a scanner never reads them, so it only changes how they look. Two-dimensional codes — Data Matrix, PDF417, Aztec — are not here: each needs its own error-correction and placement machinery, and QR codes have their own page.

Everything is drawn in this tab. Nothing is uploaded and nothing you type is stored; the Dark button keeps its own setting in this browser's local storage.