# How to make QR codes from a spreadsheet

> Upload your spreadsheet to UseQR's free bulk tool (.xlsx files work directly, no CSV export needed) map columns into the payload with merge fields like {{name}}, and download a ZIP of PNGs or SVGs, a grid PDF, or Avery label sheets. Every code is decode-verified before download.

Source: https://useqr.app/docs/how-to/how-to-make-qr-codes-from-a-spreadsheet · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## 1. Shape the sheet

One row per code, headers in the first row. Any columns you like: you will map them in
the next step:

| sku | url | label |
|---|---|---|
| A-1001 | https://example.com/p/a-1001 | Widget, small |
| A-1002 | https://example.com/p/a-1002 | Widget, large |

Keep payload values short: every character adds modules, and a bulk
run multiplies any excess by the whole row count.

## 2. Upload it: .xlsx works directly

Drop the file on the [bulk tool](/bulk). It reads **.xlsx workbooks natively** (first
sheet, first row as headers) as well as CSV. You can skip the export-to-CSV step and the
mangling that comes with it. Everything runs client-side; the spreadsheet never leaves
your browser, which matters if the rows are customer data.

If you do export CSV from Excel first, watch the classic traps:

- **Leading zeros vanish**, serials like `007` become `7` unless the column is formatted
  as text.
- **Dates get rewritten** into the locale format of whoever opened the file last.
- **Encoding**: choose "CSV UTF-8". Plain "CSV" from older Excel versions produces
  Windows-1252, and accented characters arrive corrupted.
- **Formulas** export as their current values: fine, but refresh them first.

## 3. Map columns with merge fields

You choose the code type once for the batch, then build the payload from your columns
using `{{column}}` merge fields, for example `https://example.com/p/{{sku}}` or just
`{{url}}`. Any column can also feed the filename and a printed caption, so
`A-1001.png` comes out identifiable instead of `qr-17.png`.

Need different *types* per row: some WiFi, some URLs? Do that through the
[batch API](/docs/developers/free-qr-code-api-no-key), where each item carries its own
type:

```bash
curl -X POST "https://useqr.app/api/v1/qr/batch" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"data":"https://example.com"},{"type":"wifi","fields":{"ssid":"CafeGuest"}}]}'
```

The API takes up to **1,000 items per call** (100 when rendering PNGs server-side), keyless
and free: see [bulk generation at scale](/docs/developers/bulk-qr-generation-at-scale)
for chunking patterns.

## 4. Pick the output

ZIP of PNGs or SVGs for design workflows, a grid PDF for guillotining, or Avery label
layouts for sticker stock, sizing and cutting details live in
making a sheet of QR code labels and
[Avery labels with QR codes](/docs/how-to/how-to-make-avery-labels-with-qr-codes).

## 5. Verify before you print

The bulk tool decode-verifies every generated code and flags failing rows. Do not skip
reviewing that report: a systematic error (an unescaped character, a truncated column) is
invisible in previews and expensive after 5,000 labels. The full run-and-proof workflow is
in [making QR codes in bulk](/docs/how-to/how-to-make-qr-codes-in-bulk).

## If you want the codes inside the spreadsheet instead

Sometimes you do not want files. You want a QR image sitting in column C next to each
row. That is a different technique (an `IMAGE()` formula calling the UseQR API), covered in
[Google Sheets](/docs/how-to/how-to-make-a-qr-code-in-google-sheets) and
[Excel](/docs/how-to/how-to-make-a-qr-code-in-excel).

Upload your sheet and run the batch: [open the bulk tool](/bulk).

## FAQ

### Can I generate QR codes directly from an Excel file?
Yes. UseQR's bulk tool reads .xlsx workbooks directly in the browser (first sheet, first row as headers), so no CSV export is needed. Map columns into the payload and download the batch.

### How do I turn each row of a spreadsheet into a QR code?
Upload the file to a bulk generator, choose the code type, and reference columns with merge fields such as {{url}} or {{sku}}. Each row becomes one code, named by any column you pick.

### How many QR codes can I make at once?
The bulk tool has no meaningful row limit for a browser session, and the keyless batch API accepts up to 1,000 items per call. Chunk larger jobs across calls. They are free.

### Is it safe to upload a spreadsheet with customer data?
UseQR processes the file client-side: rows are parsed and encoded in your browser and never uploaded. With any other tool, check where the file goes before it contains personal data.

## Try it

- https://useqr.app/bulk
- https://useqr.app/sticker-sheet
- https://useqr.app/validate
