Free UPC Barcode Generator: UPC-A and UPC-E
Create a UPC-A or UPC-E in seconds. Check digit calculated. Download SVG, PDF or PNG. No signup.
11–12 digits. US/Canada retail standard.
Customize
Preview
Enter data to see preview
The picker above also holds UPC-E, EAN-13, EAN-8, Code 128 and nine more. All fourteen formats live on the barcode generator.
The format
What a UPC Barcode Actually Is
A UPC is twelve digits drawn as bars, plus the same twelve digits printed underneath so a person can read them when the scan fails. Everything else about the symbology follows from those twelve digits.
The number system digit
The first digit says what kind of item this is — a regular retail product, a variable-weight item weighed at the counter, a coupon. It is also what limits UPC-E: only numbers led by 0 or 1 have a compressed form at all.
The company and item digits
The digits between the first and the last carry a GS1-issued company prefix followed by the item reference you assign under it. Where one ends and the other begins depends on how long your prefix is — that is decided by GS1, and nothing in the barcode marks the boundary.
The check digit
The last digit is arithmetic on the other eleven, so there is exactly one correct value. It is the reason a mistyped UPC usually fails at the scanner instead of quietly ringing up the wrong product.
UPC-A and EAN-13 are the same numbering system at different lengths — a UPC-A is an EAN-13 with a leading zero, which is why almost every scanner made in the last thirty years reads both. One trap the tool will not save you from: pasting a twelve-digit UPC-A into the EAN-13 field does not convert it. EAN-13 accepts twelve or thirteen digits, so your twelve are read as an EAN-13 still missing its check digit and a new one is appended, producing a different number. Add the leading zero yourself. QRKIT draws the symbol in your browser as you type — the encoder runs client-side, so the numbers you enter are not sent anywhere to be turned into a barcode. For how UPC compares with the 2D symbologies, see our QR code vs barcode comparison.
UPC-A
The UPC-A Barcode Generator: Lengths, Check Digit, Refusals
What follows is what this tool does, not a paraphrase of the standard. Where the two differ, the tool is what you will actually hit.
Eleven digits: we finish it
Enter 01234567890 and the generator computes the check digit and draws the completed code. The human-readable line under the bars reads 012345678905 — the full twelve digits, not the eleven you typed.
Twelve digits: we check it
Supply all twelve and the last one is recalculated and compared. If it does not match, no symbol is drawn. That is the behaviour you want: a barcode with a wrong check digit prints perfectly and fails at the till.
Ten digits, or thirteen: refused
The field takes 11 or 12 and nothing else, with the message “UPC-A requires 11 or 12 digits, with no spaces”. Thirteen digits is an EAN-13 — switch the picker rather than trimming a digit off.
Spaces are not cleaned up for you
Leading and trailing whitespace is trimmed, but an interior space is not. A number pasted from a spreadsheet as 0 12345 678905 is rejected rather than silently repaired, because guessing at formatting is how the wrong product gets encoded.
Letters are not a UPC. UPC-A is a numeric-only symbology — there is no way to put a letter, a hyphen or a slash into one, and a tool that appears to let you has quietly switched you to a different format. If your internal reference contains letters, you want Code 128, which is in the same picker above.
UPC-E
UPC-E: the Eight-Digit Form, and Its Real Limits
UPC-E is a UPC-A with runs of zeros squeezed out. It prints eight digits in roughly half the width, which is why it turns up on lip balm, gum and single-serving sachets. It is not a separate numbering scheme — a scanner expands it back to the full UPC-A before doing anything with it.
What you can type
012345 or 01234565
Either the six middle digits on their own, or the full eight led by number system 0 or 1 and closed by a matching check digit. Give it six and it expands them with number system 0, computes the check digit and prints 00123457 under the bars.
What it refuses, and why
0123456 · 91234565
Seven digits are ambiguous — there is no way to tell whether the spare one is the number system at the front or the check digit at the back, so the encoder will not guess. And an eight-digit code has to start 0 or 1: those are the only number systems UPC-E exists for.
We do not convert a UPC-A into a UPC-E. The compression works by a fixed set of patterns, and which pattern applies is decided by the last of the six middle digits — so only UPC-A numbers whose zeros fall in the right places can be shortened at all, and most cannot. This tool encodes the UPC-E number you give it; working out whether your UPC-A has a UPC-E form, and what it is, happens before you get here. If the package has room for a full UPC-A, use one.
Specs
What This Generator Does, Exactly
Including the limits. A tool that only lists what it can do is harder to plan a label run around than one that tells you where it stops.
| Property | Value | Notes |
|---|---|---|
| Symbologies here | UPC-A and UPC-E | Both in the picker above. UPC-E is the compressed form of a UPC-A, not a separate numbering scheme. |
| UPC-A input length | 11 or 12 digits | 12 is the finished code. Enter 11 and the check digit is computed; enter 12 and yours is verified. |
| UPC-E input length | 6 digits, or 8 starting with 0 or 1 | 7 digits are refused on purpose — you cannot tell whether the spare digit is the number system or the check digit. |
| Character set | Digits 0–9 only | No letters, no punctuation, and no spaces. The value is trimmed at the ends; an interior space is rejected rather than stripped. |
| Check digit | Calculated, or verified | Leave it off and it is worked out for you. Supply it and a wrong one is refused — no symbol is drawn. |
| Human-readable line | The completed number | Type 01234567890 and the digits printed under the bars read 012345678905. Type UPC-E as 012345 and they read 00123457. It can be switched off. |
| Quiet zone | UPC-A 9 + 9 modules; UPC-E 9 + 7 | GS1 General Specifications, and asymmetric for UPC-E. Drawn into every exported file. Never crop it away. |
| Smallest bar we advise | 0.264 mm | GS1's magnification range for retail symbols starts at 80%, where the X-dimension is 0.264 mm. The tool warns on screen below it. |
| Export formats | PNG, SVG, PDF | SVG and PDF are genuine vector, and the PDF page is sized to the barcode. There is no EPS export. |
| Raster resolution | 72, 150, 300 or 600 DPI | Paired with a target print width in mm, inches or pixels. One ceiling: 10,000 pixels per axis. |
| Design controls | Bar colour, background, bar width, height, text on/off | That is the whole list. No logo, no gradient, no frame — a retail symbol has to stay a plain dark-on-light barcode to scan. |
| Batch size | Up to 500 codes at once | A browser-memory cap, identical for everyone. Signing in does not raise it, because there is nothing to sign in to. |
| Code type | Static | The number is the content. No redirects, no scan counts, no editing after download. |
| GS1 company prefix | Not issued here | We draw the symbol. The number underneath it, if it is going to a retail checkout, has to be licensed from GS1. |
Not on the list, and deliberately: GS1-128, which we do not generate. There is no barcode API, no Excel add-in and no font. There is also no separate ISBN format anywhere on QRKIT, because there is no such thing — an ISBN-13 is encoded as an EAN-13, so you paste the thirteen digits into the EAN-13 field and get the barcode printed on the back of the book. An older ISBN-10 has to be converted to ISBN-13 first, and we do not do that conversion for you.
For products
Using This as a Product Barcode Generator
If you have made something and you need a barcode on it, the first thing to understand is that a barcode is two separate things: a number and a symbol. Almost every free tool online, this one included, gives you the second. Only GS1 gives you the first.
A UPC that scans correctly at a retail checkout has to be built on a company prefix licensed from GS1, the organisation that administers the GTIN numbering system worldwide. GS1 issues that prefix to your business; the item numbers you assign underneath it are then unique globally, which is the entire point. QRKIT does not issue, sell, resell or validate GS1 company prefixes, is not affiliated with or endorsed by GS1, and has no way to tell you whether a number you typed belongs to you. We take your digits, compute the check digit, and draw a conformant symbol.
That is not a reason to leave. It is a reason to get the order right.
Selling through retailers or a major marketplace
License a company prefix from GS1 first, assign your item numbers, then come back and generate every symbol here for free. Buying a second-hand number from a broker is a recurring cause of rejected listings — the prefix stays registered to whoever GS1 issued it to.
Labelling for yourself
Warehouse inventory, an asset register, a private catalogue, stock in your own shop scanned by your own till — any closed system where you control every scanner. Number things however you like and generate away. Nothing here checks a prefix, so nothing here stops you.
For internal use, UPC is often the wrong pick anyway. It is numeric-only and fixed at twelve digits, which is a poor fit for a SKU that contains letters or a location code. Code 128 takes any ASCII text and is in the same picker above; QR codes for inventory go further again when you want a scan to open a record rather than just read a number.
Output
Vector SVG and PDF, at the Size You Will Actually Print
Retail symbols are sized by magnification, not by taste, and a UPC that is 10% too small is a UPC that holds up a queue. This generator exports genuine vector and lets you state the finished dimensions up front.
SVG
Real geometry written into the file, not a traced bitmap. Opens in Illustrator, Inkscape and label software, and scales to any size without softening a bar edge.
Also true vector — the barcode is redrawn with the PDF's own drawing primitives on a page sized to the symbol itself, rather than an image dropped onto a letter sheet.
PNG
The raster option, at 72, 150, 300 or 600 DPI. Fine for screens and office printers; reach for SVG or PDF when the file is going to a plate or a label press.
Set the width, not a guess
Enter a target print width in millimetres, inches or pixels and the export is generated at exactly that size. The one ceiling is 10,000 pixels per side — about 840 mm at 300 DPI — and the tool says so on screen if a request runs into it.
The 80% magnification floor
GS1's magnification range for retail UPC symbols starts at 80%, and shrinking below it puts the symbol out of spec. At 80% one bar is 0.264 mm wide and the code is roughly 3 cm across including its quiet zones. The tool works out your bar width live and warns the moment it drops below that.
Quiet zones included
Nine modules of clear space each side for UPC-A, and nine left with seven right for UPC-E — the asymmetry is in the GS1 specification, not a rendering quirk. They are drawn into the exported file. Do not crop them away in your layout.
What we do not do: we draw the symbol and export the file. Print quality on the finished package — contrast, ink spread on absorbent stock, grading against a print-verification standard — depends on your printer and substrate, and is not something QRKIT measures, grades or certifies. Print a real sample and scan it with the kind of scanner that will read it before committing to a run.
In bulk
500 UPC Barcodes From One Paste
Open Generate many at once underneath the generator, paste a column of product numbers or upload a CSV, and take the whole catalogue in one download. No account, no upgrade prompt.
Paste or upload
One number per line, or a CSV. When your file has a header row the tool works out which column holds the codes, shows you the choice it made and lets you change it — so a name,sku export does not quietly try to encode product names.
Three outputs
A ZIP of PNGs, a ZIP of SVGs, or a single PDF with one barcode per page. Files are numbered in input order, so the archive sorts back the way your list was written.
Nothing fails quietly
Every row runs through the same UPC rules as the single-code field: an 11-digit row gets its check digit computed, and a 12-digit row with a wrong one is listed by row number and left out of the download rather than printed as an unscannable label.
About the 500-row cap. It is a browser-memory limit and nothing else — the batch is rendered on your own machine, and 500 barcodes at 300 DPI is already tens of megabytes held in memory. It is the same number for everyone, there is no account or plan that raises it, and when it bites the tool tells you exactly how many rows were left out so you can split the list and run the rest.
Step by step
How to Create a UPC Barcode
Step 1
Choose UPC-A or UPC-E
The generator above already opens on UPC-A, the twelve-digit retail standard. Switch to UPC-E only if the package is too small for a full symbol and you already know its compressed number.
Step 2
Enter the digits
UPC-A takes 11 or 12 digits — leave the check digit off and it is calculated for you. UPC-E takes 6, or 8 starting with 0 or 1. Digits only, no spaces, and the symbol redraws as you type.
Step 3
Set the print size
Give it a target width in mm, inches or pixels, and pick 72–600 DPI for raster output. The tool reports the finished size and warns if one bar falls under 0.264 mm.
Step 4
Download
SVG or PDF for anything going to print; PNG for screens and listings. No signup, no account, no watermark, and the barcode is yours to use commercially.
Reading one back is a different job. A phone camera app reads QR codes but usually ignores a linear barcode entirely, so checking a printed UPC takes a barcode reader app or a retail scanner. QRKIT generates UPC symbols; it does not decode them, and it cannot look up what product a number belongs to.
Pricing
Free, and Free in the Way You Meant
“Free” usually turns out to mean free to preview. Here it means what it says: the UPC generator on this page asks for no account to create a barcode and no account to download the file, stamps nothing on the output, and has no paid tier above it.
Included, at no cost
Free forever- UPC-A and UPC-E
- Check digit calculated or verified
- Unlimited codes — no daily quota
- PNG, SVG and vector PDF download
- Print width in mm/in/px and 72–600 DPI
- Bulk generation up to 500 at a time
- No signup, no account, no card
- No watermark on any export
- Commercial use allowed
Not available at any price
Be clear about it- No GS1 company prefix. We generate symbols. Retail-scannable numbers are licensed from GS1, and we are not a reseller or a validator.
- No dynamic or trackable barcode. A UPC is static by definition: it cannot be edited after printing and its scans cannot be counted.
- No barcode API or integration. No REST endpoint, no Zapier, no plugin, no library, no font.
- No decoding, and no product lookup. This page draws UPC symbols. It does not read them, and it cannot tell you what product a number belongs to.
Need a code you can change or measure instead? That is what a dynamic QR code is for — edit the destination after printing, and see scan counts. It is a different symbology and a different product, and unlike the barcode tool it involves an account. Learn about dynamic QR codes.
UPC Barcode Generator — Frequently Asked Questions
Get started
Generate Your UPC Barcode
UPC-A or UPC-E, drawn in your browser with the check digit calculated for you, exported as vector SVG, PDF or PNG at the size you will print it. No signup, no watermark.
