Free tool
Barcodes, made honestly.
Code 128 and Code 39 for anything internal — asset tags, shelf labels, work orders. EAN-13, EAN-8 and UPC-A for a real, GS1-assigned retail number, with the check digit validated or computed for you, never invented.
Nothing you type here ever leaves your browser. Every barcode is drawn locally on your device — there's no server behind this page, and no upload.
Ochre does not issue GS1 company prefixes. A retail barcode only means something if the number underneath it was legitimately assigned to you by GS1. This tool will validate or compute a check digit — it will not, and cannot, register a product number on your behalf. See "Can I make up my own EAN/UPC?" below.
Reviewed 2026-08-11
Optional — most Code 39 readers don't require it, but some industrial/logistics systems expect one.
Quiet zone defaults to the GS1/AIM published minimum for the selected type — the blank margin either side that lets a scanner find the start and end of the bars. Widening it never hurts; narrowing it below the default risks misreads.
Enter a value to see the barcode.
A barcode on screen scans fine; a barcode on paper needs real size. As a rule of thumb, keep the printed width at least 1.5–2 inches (about 40–50mm) for Code 128/39 at typical data lengths, and print EAN/UPC at 100% of the GS1 nominal size (roughly 37×26mm for EAN-13) whenever the target scanner is a fixed retail POS unit — shrinking a retail barcode is the most common reason it fails to scan.
Batch: print a sheet of labels
Paste one value per line, using the barcode type and size settings above. Capped at 60 labels per sheet so the page stays fast to generate and to print.
Which barcode, for what job
Code 128 is the workhorse — it densely encodes any mix of letters, numbers and punctuation, auto-switching between its internal code sets so a long run of digits (like a serial number) stays compact. Good default for asset tags, internal SKUs, ticket stubs, work orders — anything that only needs to mean something inside your own systems.
Code 39 is older and less dense (it needs roughly twice the printed width of Code 128 for the same data), but it's simple enough to be readable by almost any scanner ever made, including some that choke on Code 128. Reach for it when a specific printer, scanner or legacy system asks for it by name — not as a first choice.
EAN-13, EAN-8 and UPC-A are GS1 retail formats. They only carry a fixed number of digits, and that number has to have been assigned to you (or the product) by GS1 through your country's GS1 Member Organisation — Ochre has no part in that assignment and can't create one for you. Use these only when you already have a real number.
Quiet zones — the blank margin on either side of the bars — aren't decorative. A scanner uses that clear space to recognise where the barcode starts and stops; text, a border, or a second barcode placed too close will cause misreads or a flat failure to scan. This tool's default quiet zone matches the published GS1/AIM minimum for each format; the control above lets you widen it for a tight layout, but narrowing it below the default is asking for trouble at the till or the loading dock.
More free tools
A couple of neighbours for anything with a code on it.
Questions
Can I make up my own EAN or UPC number?
Which barcode type should I use?
Why does a barcode need blank space (a quiet zone) around it?
What's the difference between EAN-13, EAN-8 and UPC-A?
What this page cannot do
A barcode without a product behind it is just an image.
This page draws a scannable barcode from whatever text you give it — it has no idea whether that code means anything. Ochre has no barcode feature. What it has is a SKU field on every product, so if this code is meant to represent something you sell, at least the SKU behind it can live somewhere real instead of only on this page.