filetity
Symbology
FILETITY-001
ReadyScan it before you print a thousand of them. A barcode with the wrong check digit scans perfectly and returns the wrong product, which is the one failure that costs money and cannot be seen by looking at it.
LocalDrawn in your browser from the published pattern tables. Nothing about your product numbers is sent anywhere.

TEXT -> BARCODE · Local tool

Barcode Generator

Generate a Code 128, EAN or UPC barcode, with the check digit worked out.

Last updated

How do I make a barcode for free?

Type what it should hold, pick the symbology and save it. filetity draws Code 128, EAN-13, UPC-A and EAN-8 in your browser from the published pattern tables, works out the check digit for you, and hands back an SVG for print or a PNG for a screen. Code 128 is the one to choose unless you were told otherwise: it carries letters and digits and is what warehouses and couriers use. EAN and UPC numbers are issued to a company by GS1 rather than invented, and a made-up one will scan as somebody else's product. Nothing is uploaded, so your product numbers stay yours.

  1. 01 / Your device

    the file stays here

  2. 02 / Browser memory

    the work runs locally

  3. 03 / Back to you

    saved on this device

When you would use this

Situations, not settings.

Labelling stock, assets or boxes with your own numbers
Code 128 carries letters and digits, so your own reference goes on the label unchanged rather than being squeezed into a numeric format.
A retail code you were issued and need to print
Type the twelve digits and the thirteenth is computed. Paste all thirteen and a wrong check digit is refused with the right one.
Product numbers you would rather not upload
A barcode generator that runs on a server sees every SKU you type into it. This one has nowhere to send them.

How it works / no cloud

A conversion engine, not an upload form.

The pattern tables are the published ones, written out here rather than fetched from a library: Code 128's 107 symbols from ISO/IEC 15417, and the EAN L, G and R sets from the GS1 specification. Code 128 switches into its numeric mode on a run of four or more digits, which halves the width of a long number, and switches back afterwards. The check digit is computed for you, and if you supply a 13 digit EAN whose own check digit does not add up, the page refuses it and tells you the correct one rather than drawing a barcode that scans as a different product.

  • Offline ready
  • Installable app
  • No file limit queue

Straight answers

No accordion. Nothing hidden.

Is it free?
Yes, with no watermark and no page limit.
Does it need an account?
No. There is no account system.
Is my file processed on my device?
Yes. The file is read by your browser and never uploaded. There is no server to send it to.
What formats are supported?
Code 128 for letters and digits, EAN-13, UPC-A and EAN-8 for numbers. Out as an SVG that stays sharp at any size, or a PNG at twice the module width.
What are the limits?
One barcode at a time. Not 2D codes: the QR generator is a separate page, and reading a barcode back out of a photograph is a different and harder problem this does not attempt.
Does it work on mobile?
Yes, on any modern mobile browser. Large files are limited by the memory the phone gives the browser.
Does it work offline?
Yes, once the page has loaded. The tool keeps working with no network connection.
Which type do I need?
Code 128 unless something specific asked otherwise. It carries letters and digits, it is what warehouses, couriers and asset labels use, and it packs numbers tightly. EAN-13 and UPC-A are retail product codes and you do not invent those: they are issued to a company by GS1, and making one up produces a code that scans as somebody else's product.
What is the check digit and why does it matter so much?
It is the last digit, and it is arithmetic on the ones before it: weights of 3 and 1 alternating from the right, summed, subtracted from the next ten. A scanner recomputes it and rejects the read if it disagrees, which is how a barcode survives a scuffed label. Get it wrong when generating and the code either will not scan at all or, worse, scans cleanly as a different number.
Why does my long number make a shorter barcode than I expected?
Because Code 128 has a numeric mode that packs two digits into one symbol. A run of four or more digits is worth switching into, so a twelve digit number takes six symbols rather than twelve. The switch and the switch back cost one symbol each, which is why short digit runs are left alone.
Will this print properly?
Save the SVG for anything going to print. It is drawing instructions rather than pixels, so the bars stay exactly proportioned at any size, and bar edges landing on half a pixel is the usual reason a printed barcode will not scan. Print it big enough that the narrowest bar survives your printer, and test one before running a thousand.

Keep working locally

7 available · more coming