Bulk Barcode Generator: How to Create Hundreds of Barcodes at Once
Generate barcodes in bulk for inventory, products, or shipping. Covers batch workflows using spreadsheets, command-line tools, and online generators with CSV import.
Creating barcodes one at a time works fine until you need 50. Or 500. Or 5,000. At that point, you need a batch workflow that takes a list of data and spits out barcode images or print-ready labels without clicking "generate" for each one.
This guide covers three approaches, from simplest to most powerful, so you can pick the one that fits your volume and technical comfort level.
Approach 1: Online Generator (1-50 Barcodes)
If you need fewer than 50 barcodes and don't mind clicking through each one, a free online generator is the easiest path.
How It Works
- Open our barcode generator
- Select your format (Code 128 for inventory, EAN-13 for products, etc.)
- Enter the data for your first barcode
- Download as PNG or SVG
- Repeat for each barcode
When This Makes Sense
- One-time projects: labeling 30 pieces of equipment, creating shelf tags for a small stockroom
- You need a few different barcode formats in the same batch
- You want to visually verify each barcode before downloading
When to Move to a Bulk Method
If you catch yourself generating barcodes for more than 15 minutes, a batch method will save time. Anything above 50 barcodes is faster with Approach 2 or 3.
Approach 2: Spreadsheet + Label Software (50-500 Barcodes)
This is the sweet spot for most small businesses. You keep your data in a spreadsheet and use label software to turn each row into a barcode on a label.
Step 1: Build Your Data Spreadsheet
Open Excel, Google Sheets, or any spreadsheet app. Create columns for the data you need on each label.
For inventory labels:
| Column A: Barcode Data | Column B: Description | Column C: Location |
|---|---|---|
| INV-0001 | Wireless Mouse | Shelf A-3 |
| INV-0002 | USB Keyboard | Shelf A-3 |
| INV-0003 | Monitor Stand | Shelf B-1 |
| INV-0004 | Desk Lamp | Shelf B-2 |
For product labels:
| Column A: UPC Number | Column B: Product Name | Column C: Price |
|---|---|---|
| 012345678905 | Widget Small | $9.99 |
| 012345678912 | Widget Large | $14.99 |
| 012345678929 | Widget XL | $19.99 |
For sequential numbering, use formulas in your spreadsheet:
In Excel or Google Sheets, put your prefix in A1 and in A2 enter:
=TEXT(ROW()-1,"0000")
This generates 0001, 0002, 0003, etc. Prepend a prefix with:
="SKU-"&TEXT(ROW()-1,"0000")
Copy the formula down for as many rows as you need. That gives you SKU-0001 through SKU-whatever.
Step 2: Export as CSV
Save your spreadsheet as a CSV file. Every bulk barcode tool accepts CSV as input.
In Excel: File > Save As > CSV (Comma delimited) In Google Sheets: File > Download > Comma Separated Values (.csv)
Step 3: Generate Labels with Label Software
Several options here, depending on your printer and budget.
Avery Design & Print (Free, Web-Based)
Good for printing on Avery adhesive label sheets with a regular office printer.
- Go to avery.com/templates
- Select your label product number
- Choose a template with a barcode field
- Import your CSV file
- Map spreadsheet columns to label fields
- The software generates a barcode for each row
- Preview and print
ZebraDesigner (Free, for Zebra Printers)
If you have a Zebra thermal printer, ZebraDesigner is the right tool.
- Download ZebraDesigner from Zebra's website
- Create a label template matching your label size
- Add a barcode field and a text field
- Connect to your CSV as a data source
- Map columns to fields
- Print — the software generates a unique barcode per label
DYMO Connect (Free, for DYMO Printers)
Similar workflow for DYMO thermal printers. The software includes barcode fields that you can map to spreadsheet data.
BarTender (Paid, Professional)
BarTender is the industry standard for high-volume label printing. It connects to databases, CSV files, Excel files, and ERP systems. Pricing starts around $495 for the basic edition. Worth it if you print thousands of labels regularly.
Step 4: Verify a Sample
Before printing your full batch:
- Print 5-10 labels
- Scan each one with a barcode scanner to confirm the data matches
- Check alignment — barcodes should be centered on labels with quiet zones on all sides
- If anything is off, adjust the template and reprint the sample
Approach 3: Script-Based Generation (500+ Barcodes)
For large batches, or if you need to automate barcode generation as part of a larger workflow, a script gives you full control.
Python with python-barcode
The python-barcode library generates most 1D barcode formats. Quick setup, no dependencies beyond Python and Pillow (for PNG output).
Install:
pip install python-barcode pillow
Generate a single barcode:
import barcode
from barcode.writer import ImageWriter
code = barcode.get('code128', 'INV-0001', writer=ImageWriter())
code.save('barcode_INV-0001')
Batch generate from CSV:
import csv
import barcode
from barcode.writer import ImageWriter
with open('inventory.csv', 'r') as file:
reader = csv.reader(file)
next(reader) # Skip header row
for row in reader:
barcode_data = row[0]
code = barcode.get('code128', barcode_data, writer=ImageWriter())
filename = f'barcodes/{barcode_data}'
code.save(filename)
print(f'Generated: {filename}.png')
This reads your CSV, generates a PNG for each row, and saves them into a barcodes/ folder. A thousand barcodes takes about 20 seconds on a typical laptop.
Generate with SVG output (for print quality):
import csv
import barcode
with open('inventory.csv', 'r') as file:
reader = csv.reader(file)
next(reader)
for row in reader:
barcode_data = row[0]
code = barcode.get('code128', barcode_data)
code.save(f'barcodes/{barcode_data}') # Saves as SVG by default
Python with Pillow for QR Codes
For QR codes in bulk, use the qrcode library:
pip install qrcode pillow
import csv
import qrcode
with open('urls.csv', 'r') as file:
reader = csv.reader(file)
next(reader)
for row in reader:
url = row[0]
label = row[1] if len(row) > 1 else url.split('/')[-1]
img = qrcode.make(url)
img.save(f'qrcodes/{label}.png')
print(f'Generated: {label}.png')
Zint (Free, Command-Line)
Zint is a powerful open-source barcode generator that handles virtually every barcode format including Data Matrix, Aztec, and GS1 types.
Install on macOS:
brew install zint
Generate a single barcode:
zint -b 20 -d "INV-0001" -o barcode.png
(where -b 20 is Code 128)
Batch generate with a shell loop:
while IFS=, read -r data description; do
zint -b 20 -d "$data" -o "barcodes/${data}.png"
done < inventory.csv
Zint barcode type codes:
| Code | Format |
|---|---|
| 13 | EAN-13 |
| 20 | Code 128 |
| 34 | UPC-A |
| 55 | PDF417 |
| 58 | QR Code |
| 71 | Data Matrix |
| 92 | Aztec Code |
Node.js with bwip-js
If JavaScript is your language:
npm install bwip-js
const bwipjs = require('bwip-js');
const fs = require('fs');
const items = ['INV-0001', 'INV-0002', 'INV-0003'];
for (const item of items) {
bwipjs.toBuffer({
bcid: 'code128',
text: item,
scale: 3,
height: 10,
includetext: true,
}, (err, png) => {
if (err) { console.error(err); return; }
fs.writeFileSync(`barcodes/${item}.png`, png);
console.log(`Generated: ${item}.png`);
});
}
Naming and Organizing Output Files
When generating hundreds of barcodes, file organization matters. A few conventions that save headaches later:
File Naming
Use the barcode data as the filename. INV-0001.png is easier to find than barcode_001.png. If the barcode data contains characters that aren't safe for filenames (slashes, colons), replace them with dashes.
Folder Structure
For large batches, organize by category or batch date:
barcodes/
2026-03-inventory/
INV-0001.png
INV-0002.png
...
2026-03-products/
012345678905.png
012345678912.png
...
Backup Your Data
Always keep the source CSV alongside the generated barcodes. If you need to regenerate (different size, different format, or reprints), the CSV is your single source of truth.
Choosing the Right Barcode Format for Bulk
| Use Case | Format | Why |
|---|---|---|
| Internal inventory | Code 128 | Handles any alphanumeric data, compact, universal scanner support |
| Retail products | UPC-A or EAN-13 | Required by retailers, needs GS1 registration |
| Shipping cases | ITF-14 | Designed for corrugated cardboard, reads through rough printing |
| Small items | Data Matrix | Compact 2D format for tight spaces |
| URLs or marketing | QR Code | Scannable by any phone camera |
| Healthcare / serialization | GS1 Data Matrix | Structured data with GTIN, lot, expiry, serial |
For most internal-use bulk barcode projects, Code 128 is the right choice. It's flexible, compact, and works with every scanner.
Performance and Limits
How long does bulk generation actually take?
| Method | 100 Barcodes | 1,000 Barcodes | 10,000 Barcodes |
|---|---|---|---|
| Online generator (manual) | ~30 min | Not practical | Not practical |
| Label software (CSV import) | ~5 min | ~10 min | ~30 min |
| Python script | ~3 sec | ~20 sec | ~3 min |
| Zint command line | ~2 sec | ~15 sec | ~2 min |
Scripts are by far the fastest. But label software wins if you need the barcodes on printed labels rather than as standalone image files, because it combines generation and layout in one step.
Related Guides
- Free Barcode Generator — create individual barcodes in any format
- How to Print Barcode Labels — print labels on any printer
- How to Create Inventory Barcodes — set up barcode-based inventory tracking
- How to Create Barcode in Excel — generate barcodes from Excel data