Bulk Barcode Generator
This bulk barcode generator makes up to 500 codes at once from a pasted list, a CSV file, or a numbered sequence. Every code is validated before you print, so a wrong check digit shows up on screen rather than on a sheet of labels. Free, no account, nothing uploaded.
On this page
Build your batch
Encodes the full ASCII set. The usual choice for internal SKUs.
Blank lines are ignored. Maximum 500 codes per batch.
Two columns: the value to encode, then an optional label printed under the code. A header row is detected and skipped. The file is read on your device and never uploaded.
Example
value,label SKU-00417,Blue widget SKU-00418,Red widget
Optional. Leave blank for digits only.
Digits. 5 gives SKU-00001. Set to 0 for no padding.
Size, colour and export options
Never zero. A cropped quiet zone is the most common reason a printed barcode will not scan.
Batch preview
Batch status
- Add some values, then select Generate batch.
Verify any code by test scanning a printed sample before a production run. Provided as is, and used at your own risk. See the terms.
Every code is checked before you print
Generating five hundred barcodes is easy. Generating five hundred correct barcodes is the part that matters, because a single wrong check digit becomes a sheet of labels you throw away.
Each row in the batch is run through the same validation the single-code generator uses: character set for the symbology, length, and check digit. Rows that fail are outlined and given a reason, and the running tally tells you how many are good before you commit to anything.
For UPC-A, EAN-13, EAN-8 and ITF-14, entering one digit short lets the check digit be calculated for you. Enter the full length and it gets verified rather than silently accepted, which is how a transcription error gets caught while it is still cheap.
CSV format
Two columns. The first is encoded into the barcode. The second is optional and prints as human-readable text beneath the code, which is useful when the encoded value is a number and the person picking the item needs a name.
A header row is detected and skipped. Both comma-separated and semicolon-separated files work, since spreadsheet software in some regions exports with semicolons. Quoted fields containing commas are handled. The file is parsed in your browser and never uploaded.
To get a CSV out of a spreadsheet, use File then Save As or Export and pick CSV. Keep the values in the first column.
Numbered sequences
When you need a block of codes that do not exist yet, such as asset tags or bin labels, the sequence builder generates them from a prefix, a starting number and a count.
Zero-padding keeps the values the same width, so SKU-00001 through SKU-00500 all produce barcodes of identical length. That matters more than it sounds: a batch of mixed-width codes on one label sheet means mixed-width barcodes, and label templates rarely accommodate that gracefully.
Sequences work with Code 128 and Code 39 because those accept letters. For the numeric retail symbologies, use a pasted list or a CSV instead, since a prefix would break the fixed digit count.
Batches of retail barcodes still need registered numbers
Generating five hundred UPC-A images does not create five hundred registered GTINs. Retailers verify each number against the GS1 registry, and invented numbers are rejected regardless of how correctly the barcode is drawn. This tool is for turning numbers you already own into printable symbols.
Sources
Every specification figure on this page traces to one of the following. Nothing is stated here that could not be checked against them.
- bwip-js, MIT-licensed barcode encoder implementing the ISO/IEC symbologies
- JSZip, MIT-licensed browser ZIP library, loaded on demand
- ISO/IEC symbology specifications for the per-row character set, length and check digit rules
Last reviewed 6 September 2026
This tool is built and maintained by Cedrick Reese at Ready Utilities. Encoding is performed by bwip-js, an MIT-licensed library implementing the ISO/IEC symbology specifications, at a pinned version. ZIP archives are assembled in the browser with JSZip, also MIT-licensed and loaded only when you select the download, so it costs nothing on page load. The per-row validation applies the same character set, length and check digit rules as the single-code generator, taken from the governing specifications rather than reimplemented here. The 500-code cap is a practical browser limit, not a specification requirement, and is stated as such.
Common questions
How many barcodes can I generate at once?
Up to 500 per batch. That is a practical limit chosen to keep the browser responsive while rendering and zipping, not a rule from any specification. For larger runs, split the list and generate in several batches.
Is my CSV file uploaded anywhere?
No. The file is read and parsed entirely in your browser. Neither the file nor the values inside it are sent to this site or anywhere else.
What happens if some rows are invalid?
Invalid rows are outlined with a reason, and the tally shows how many codes passed. Valid codes still generate and export normally, so one bad row does not block the rest of the batch.
Can I generate barcodes from an Excel file?
Save or export the sheet as CSV first, then upload that. Keep the values you want encoded in the first column and any human-readable labels in the second.
Can I add a prefix to a sequence of numbers?
Yes, in sequence mode. A prefix plus zero-padding gives evenly sized values such as SKU-00001 through SKU-00500. Prefixes only work with Code 128 and Code 39, since the retail symbologies require a fixed count of digits.
Are these barcodes free to use commercially?
Yes. No account, no attribution, no licence restriction and no expiry. Retail barcodes are a separate matter, since the number inside a UPC or EAN must be registered with GS1 before a retailer will accept it.
Related
- Single barcode generator, all fifteen symbologies with full size control
- Why a barcode will not scan, worth reading before printing a large run
- Picking the right symbology for a batch