Skip to content
ImageDoctor

Bulk QR Code Generator

Turn a CSV, text or JSON list into hundreds of QR codes — validated, named and downloaded as a ZIP or PDF.

Your QR codes, barcodes, and uploaded data are processed locally in your browser.

1. Data

One row per code. Columns become {{variables}} for the content, text and file names.

Drop a CSV, TXT or JSON file

Up to 5,000 rows · 20 MB · read in your browser, never uploaded

2. Codes

What each row becomes.

QR content

Type {{column}} to use a value from each row.

Medium: rebuilds up to ~15% of a damaged or covered code. A good default for print. Higher levels make the code denser.

Colour the three corner squares separately.

4 mod

Empty border around the code, in modules. Scanners need about 4.

A logo sits on a cleared plate in the middle of the code. Transparent PNG or SVG logos look best.

3. Output

Layout, files and names.

px

Use {{index}} and any column, e.g. {{name}}. Duplicates are numbered.

Preview

Load data to preview a row.

Your codes will appear here.

4. Generate

Opens the label maker with your rows, so you can arrange text, images and codes freely.

Generating QR codes in bulk

Upload a CSV, a text file with one value per line, or JSON — or type straight into the table. Choose which columns become the QR content: a URL column, or any content type with fields filled from columns, such as Wi-Fi networks or contact cards.

Before anything is generated, every row is checked and summarised: missing names, invalid URLs, contents too long for a QR code, duplicates. Fix rows in place, remove them, or skip them — nothing is dropped silently.

Generation runs in background workers so the page stays responsive, with a real progress count, cancel, and retry for any row that fails. Download everything as a ZIP of PNG or SVG files, one PDF per code, or a print-ready PDF sheet.

Common questions

No. The file is read and processed in your browser; product and customer data never leaves your device.

Up to 5,000 rows per batch. Large batches depend on your device’s memory, so codes are generated a few at a time and each finished file is handed on before the next is made.

From a template such as {{index}}-{{name}}. Any column can be used, and duplicate names are numbered automatically.