Why Excel can't make the barcodes itself
Excel has no barcode function of its own, so the usual workaround is a barcode font: you install a font whose characters look like bars and format the column with it. That works for Code 39, as long as you add an asterisk at the start and end of every value, which the font needs as its start and stop signs. It doesn't work for Code 128, EAN or UPC, because those need start and stop patterns, a calculated check character and, for Code 128, a choice between character sets. A font only draws them correctly when a formula or macro encodes each value first, and a small mistake in that formula produces bars that look right but don't scan.
A bulk barcode generator turns this around. The spreadsheet stays a plain list of values, and the barcodes are drawn from it outside Excel with the correct start and stop patterns and check characters, so there is no font to install and the column stays readable. This page opens in its Many barcodes mode with Code 128 selected, the right type for most internal lists such as stock numbers, asset tags and locations; for products sold in shops, switch to EAN-13 or UPC-A, and for small parts or long serial numbers to Data Matrix.
Preparing the spreadsheet
The generator reads one barcode per row, so the simplest spreadsheet has one column with a code in every row. Extra columns are welcome, though, because a product name or a location travels along with each code to the label or the download. Give the columns names in the first row, such as SKU and Name; the generator guesses whether that row holds names and which column contains the codes, and you can correct both if it guesses wrong.
The biggest trap is Excel's habit of treating long codes as numbers. A 13-digit EAN such as 5901234123457 shows up as 5.90123E+12 in a column with the General format, and a CSV saved from that column keeps the shortened form, so the digits are gone for good. Leading zeros disappear as well, and anything longer than 15 digits, such as an 18-digit shipping container code, has its last digits replaced by zeros. To prevent this, format the column as Text before you type or paste the codes (Plain text in Google Sheets) or start each value with an apostrophe, and bring a CSV into Excel through its text import with the column set to Text rather than opening it with a double click.
The lost zero deserves a closer look, because it can turn into a different product. A UPC-A that has lost its first zero has eleven digits, which is also what a UPC-A without its check digit looks like, and adding a check digit to it would draw a valid barcode for the wrong number. So when most of a column has the full twelve or thirteen digits and a row is one digit short but becomes a valid number with a zero in front, the generator leaves that row out and tells you a zero was probably dropped. A short row that isn't valid with a zero in front is treated as a number without its check digit, so if your list already includes check digits and the summary says that values were completed, digits went missing on the way.
Numbered codes for assets, serials and products
Not every list starts in a spreadsheet. For asset tags, serial numbers or bin locations you often just need a run of numbers, and the Numbered tab makes it from the text before the number, the first number, how many codes you need, how many digits the number should have and, if you like, text after it. A prefix of TOOL-, a first number of 1, a count of 250 and four digits gives TOOL-0001 to TOOL-0250.
The fixed number of digits matters more than it seems, because TOOL-0010 then sorts after TOOL-0009, while in a text sort TOOL-10 would land between TOOL-1 and TOOL-2. When you need more tags later, start the next run at the first unused number instead of at 1 again, so no two assets ever share a code. The codes.csv file from each download, or a note of the last number printed, tells you where to carry on.
The same tab can number retail products. Type your GS1 company prefix as the text before the number, choose EAN-13 or UPC-A, and set the digits so that prefix and item number together are one digit short of the full length; the generator then adds the right check digit to each one. For UPC-A, leave off the 0 that GS1 US shows in front of the prefix, because the U.P.C. company prefix is the same number without it, and keeping the 0 would shift every digit into numbers that aren't yours. With a company prefix of seven digits, for example, a UPC-A leaves four digits for your items, 0000 to 9999, and the twelfth digit is the check digit. Only number products you haven't assigned yet, and record which product gets which number, since each GS1 number should identify one product only.
When some rows fail
Every row goes through the same checks as a barcode typed by hand, and a row that can't become the type you chose is left out. The first five are listed with their row number and the reason, and the summary counts the rest. The row numbers count from the top, including the row with column names and any blank rows, so they match the row numbers in your spreadsheet. Some reasons point to a typing mistake, such as a wrong check digit, where the message says which digit it should be, or a product number with too few or too many digits. Others mean the data doesn't suit the type, such as letters in a column of EAN numbers, an accented letter like é in a Code 128 list, which only takes plain ASCII characters, or a value longer than the 80 characters the generator takes in a Code 128.
Fix failed rows in the spreadsheet rather than on this page, because the spreadsheet is what you will use next time, then paste the column again or reopen the file. Spaces and hyphens inside EAN and UPC numbers aren't a problem, since the generator ignores them, so 5 901234 123457 counts as the same number as 5901234123457. A wrong check digit deserves a moment's thought, though: in a list copied from a supplier or an old system it usually means a digit was mistyped earlier in the number, so replacing only the last digit gives a valid barcode that may belong to a different product.
Files or labels: getting the barcodes out
Once the list is clean, you choose between files and labels. The download buttons make one ZIP file with an SVG, PDF or PNG for every row, each named after the code it holds, and a file called codes.csv that links every file name to its row and to all the other columns of your list. A code that appears twice gets -2 added to its second file name, a handy hint that your list contains a duplicate. Files suit packaging artwork, a catalog layout or a print shop, because a designer can match each file to its product through codes.csv.
One ZIP holds up to 500 barcodes. For a longer list the download gives you the first 500, and you make the rest as a second list starting at row 501, or for numbered codes from number 501 onwards. No account is needed for downloads.
Labels are the other route. Print on labels opens the free label editor with one label per row, for up to 5,000 rows, and links the barcode on each label to its column, so every label gets its own code. You can choose a second column, typically a product name or a location, to print as text on each label. Printing a whole list in the editor needs a free account, which includes five batch exports a month, and the page on bulk barcode labels explains printing a list in more detail.
Make your barcode and put it on labels
Make the barcode at the top of this page, check that it scans, then press Print on labels: the free label editor opens with it on the label you pick, ready to print on a sticker sheet or a label printer.
Make a barcode ↑FAQ
Can one list contain different barcode types?
No. The type you choose applies to every row, and so do the size, color and printer settings. If you need EAN-13 barcodes for products and Code 128 for shelf locations, split the spreadsheet into two lists and make each one with its own type.
Is my spreadsheet uploaded anywhere?
No. The file is read by your browser, the barcodes are drawn there, and the list stays on your computer, also when you pass it on to the label editor, unless you save the label design to your account there. That makes the generator suitable for internal part numbers or customer data you would rather not send to a website.
Can I make QR codes from the same spreadsheet?
Yes. The QR code generator has the same mode, called Many codes there, so you can open the same file and choose the column with the links or text. Each row then becomes its own QR code, downloaded in one ZIP file or sent to the label editor one per label.
How do I get the barcodes into Excel cells?
The generator doesn't write images into a spreadsheet, but you can insert the PNG files from the ZIP into Excel as pictures, using codes.csv to see which file belongs to which row. For printed sheets of barcodes, the label editor is usually quicker than placing hundreds of pictures by hand.
Related pages
Updated 9 November 2026