How to add QR codes to an Excel spreadsheet
Excel has no built-in QR code function. The fastest way to get a scannable code onto every row is to generate the codes from your column data and embed them back into the workbook as images — which takes about three minutes for a file of any size, with no macros, add-ins or barcode fonts involved.
Open the Excel to QR generator →Before you start: prepare the sheet
Two things matter, and getting them wrong causes most of the problems people hit later.
- Row 1 must be your header row. The field names there become the list of columns you choose from, and in JSON mode they become the keys inside each code.
- One record per row, in the first worksheet. Merged cells and multi-row records confuse the row-to-code mapping, because every row produces exactly one QR code.
Blank rows are skipped automatically — if the selected columns are all empty for a row, no code is generated for it rather than an empty code being produced.
Step 1 — Decide what goes inside the code
This is the only decision that really matters, and it is worth a moment's thought. A QR code is not a database lookup: whatever you encode is the entire content of that code, readable by anyone who scans it. So encode the minimum that makes the code useful.
A common mistake is encoding every column "just in case". That produces dense, slow-scanning codes full of data nobody reads. If your scanning system can look records up by ID, encode only the ID.
Step 2 — Upload the file
Drag the .xlsx onto the generator, or click to browse. The header row is parsed immediately and each column appears as a checkbox, so you can confirm the file was read the way you expected before generating anything.
Step 3 — Pick the columns and the content format
Tick every column you want inside the code. If you select several, their values for that row are combined into one code. The format controls how they are combined:
| Format | Encoded result | Use when |
|---|---|---|
| Normal | E-1042 | Priya Sharma | Finance |
A person scans with a phone camera and reads the text |
| JSON | {"ID":"E-1042","Name":"Priya Sharma"} |
An app or script parses the scan into fields |
| CSV | E-1042,Priya Sharma,Finance |
Scanning software expects delimited values |
Step 4 — Generate and download
The generator adds a new column called QR Code at the end of your sheet, renders one QR image per row, and anchors each image to its own cell. Row heights are adjusted so the codes sit cleanly inside their cells instead of overlapping.
The download keeps your original filename with __QR appended, so
staff-list.xlsx comes back as staff-list__QR.xlsx. Everything else in the
sheet is untouched.
Printing the codes so they actually scan
Codes are generated at error-correction level H, the highest of the four levels, meaning roughly 30% of the code can be damaged and still read correctly. That buys a lot of tolerance for scuffed badges and worn labels, but it does not rescue bad printing. Three rules cover almost every scanning failure:
- Size. Keep printed codes at least 2 × 2 cm. Below that, phone cameras struggle even with perfect contrast.
- Contrast. Pure black on white. Coloured or inverted codes look nice and scan badly.
- Quiet zone. Leave clear white space around each code, roughly the width of four modules. Codes butted against a border are a frequent cause of failures.
Why not a macro, add-in or barcode font?
All three are common suggestions, and each has a real cost:
- VBA macros turn your file into an .xlsm that many organisations block by policy, and they break when the macro calls an external image API that later changes.
- Paid add-ins work, but every person who opens the file needs the add-in installed for the codes to render.
- Barcode fonts cannot produce QR codes at all. Fonts map one character to one glyph, which works for linear barcodes like Code 39 but not for a two-dimensional matrix. Anyone recommending a QR "font" is describing something that does not exist.
Embedding plain PNG images sidesteps all of this — the resulting file is an ordinary spreadsheet that opens anywhere, including LibreOffice and Google Sheets.
Frequently asked questions
Does Excel have a built-in QR code generator?
No. Excel has no native QR function. The usual workarounds are a VBA macro, a paid add-in, or a barcode font, all of which have drawbacks. Generating the codes outside Excel and embedding them as images avoids all three.
Why will my QR code not scan?
The three common causes are printing the code too small, low contrast between the code and its background, and no quiet zone. Keep printed codes at 2 cm or larger, print pure black on white, and leave clear white space around each code.
Can I use a barcode font instead?
Not for QR codes. Barcode fonts work for linear formats such as Code 39 because those encode one character per glyph. QR codes are two-dimensional matrices and cannot be produced by a font.
Will the QR images survive sorting and filtering?
Each image is anchored to its own cell, so it moves with its row when the sheet is sorted. Very large images spanning several rows can behave unpredictably, which is why the row height is set to match the code.
How much data can one QR code hold?
A QR code can hold up to about 4,296 alphanumeric characters in theory, but at high error correction and small print sizes the practical limit is far lower. Keeping the encoded text under roughly 300 characters keeps codes easy to scan.