Barcode Generator

Encode a product number or a line of text as a scannable barcode, drawn as a vector SVG.

Runs on your deviceMoreWorkingNo account needed

What this tool does

Barcode Generator draws six one-dimensional symbologies: EAN-13, EAN-8, UPC-A, ITF-14, Code 39 and Code 128. The first four are fixed-length numeric codes used in retail and logistics; Code 39 carries capital letters, digits and a short list of punctuation; Code 128 carries any ASCII text, which makes it the usual choice for a reference of your own that no numbering authority issued.

The last digit of an EAN, UPC-A or ITF-14 number is a modulo-10 check digit, and this handles it in both directions. Supply the first twelve digits of an EAN-13 and the thirteenth is worked out and appended. Supply all thirteen and the check digit is recalculated and compared, so a number mistyped off a printed label is refused — with the digit it should have been — rather than quietly drawn as a symbol no till will accept.

Nothing is drawn on a server. JsBarcode is served from this site and fetched the first time you generate a symbol, then reused for the rest of the session, so the product code, order reference or serial you type is not uploaded anywhere and every run after that one works with the network disconnected. Output is a single SVG file, named after the value it encodes: vector, so the same artwork stays exact on a 30 mm shelf label and on a pallet placard instead of softening the way an enlarged PNG does.

Two limits matter before you print. The margin around the symbol is fixed at 10 pixels with no setting to change it, so from a bar width of 2 upwards it is thinner than the seven module widths EAN-13 wants clear to the right of the last bar — leave white space around the code in your own layout rather than relying on that margin. And ITF-14 is drawn without the bearer bar, the heavy frame required on shipping cartons, which makes it usable for internal case marking but not for a carton entering a retailer's supply chain. Data Matrix, PDF417, Codabar, MSI and GS1 application identifiers are not supported at all, and QR codes have a separate tool.

How to use it

  1. Choose the symbology. EAN-13 or UPC-A for retail products, EAN-8 for small packs, ITF-14 for outer cases, Code 39 for asset tags, Code 128 for any ASCII reference of your own.
  2. Enter the value. Digits only for the numeric formats, with or without the trailing check digit — spaces and hyphens are stripped. Code 39 is converted to upper case for you; Code 128 takes ASCII up to 80 characters, past which the symbol grows too dense to read reliably.
  3. Size and colour the bars. Bar width runs from 1 to 4 pixels per module and height from 20 to 400 pixels. Wider bars survive coarse printing. The number under the bars can be switched off when the label prints it separately.
  4. Save the SVG. One file per run, named after the encoded value. Keep the bars dark on a pale background — the colour pickers will happily produce a pairing no scanner can resolve.

Processing & privacy

Runs on your device. Your file is processed directly in this browser.

Common use cases

Relabelling stock for a till

An EAN-13 copied off the manufacturer's carton gives you a symbol the shop's scanner already recognises, with the check digit verified before anything is drawn.

Numbering your own inventory

Code 128 encodes a scheme of your own design — a bin location, a job number, a serial — without buying into an allocated range.

Tagging tools and equipment

Code 39 puts a room code, a serial or an ID prefix on a label in a format that predates Code 128 and is still read by long-serving warehouse hardware.

Replacing a torn or faded label

Type the printed number back in. If a digit was misread, the check digit fails and names the value it expected instead of producing a wrong barcode.

Questions

Does the number you type get uploaded?
No. The symbol is drawn in this browser tab by a library served from this site, so the product code or reference you type is never transmitted. Once that library has been fetched on your first run, the tool keeps working offline.
Do I have to type the check digit?
Either way works. Enter 12 digits for EAN-13, 11 for UPC-A, 7 for EAN-8 or 13 for ITF-14 and the final digit is calculated. Enter the complete number and it is verified instead, and a wrong check digit is refused with the correct one named.
Which symbology should I pick?
EAN-13 and UPC-A if the number came from a retail catalogue, EAN-8 where the packaging is too small for a full EAN, ITF-14 for outer cases, Code 39 for old scanning hardware, and Code 128 for anything textual or internally numbered.
Can I make a GS1-valid retail barcode here?
The symbol is drawn to specification, but a retail barcode only identifies your product if the number itself was allocated to you by GS1. This encodes whatever you supply and cannot issue a number. The bracketed application identifiers used in GS1-128 are not supported.
Can I download a PNG?
Not from here — the output is SVG only. That is the format label and design software wants, and it places directly into artwork; if you need a raster copy, export it at your intended print size from whatever opens the file.
Can I generate a run of barcodes from a spreadsheet?
No. One value per run, with no list or CSV input, so a hundred labels means a hundred passes. For volume work, a labelling package that merges from a data source is the better tool.
Why is my printed barcode not scanning?
Usually size, quiet zone or contrast. Raise the bar width before the height, add white space around the symbol beyond the fixed 10-pixel margin, and print dark bars on a light background — inverted or low-contrast colours defeat most scanners.

Related tools

  • Video to GIF — Turn a short clip into an animated GIF.
  • QR Code Generator — Create a QR code for a link, text, Wi-Fi or vCard.
  • GIF Maker — Build an animated GIF from images or a clip.
  • GIF Compressor — Reduce GIF file size by trimming frames and colours.
  • GIF to MP4 — Convert a GIF to a much smaller MP4 video.
  • GIF Splitter — Split an animated GIF into individual frames.