Excel QR Code & Google Sheets QR Code Generator

Neither app has a QR formula. Use your rows as the input instead — or try one code free below.

.xlsx, CSV or pasteWhole column at onceBulk on Plus & upOne code free here
STEP 1Enter the URL
STEP 2Customize Design
QR Code Preview
Classic
Bubble
Smooth
Sharp
Elegant
Dots
STEP 3Download your QR code
Can't be edited after download

Designing and previewing a code needs no account; saving the file needs a free one. Whole-column runs happen in the dashboard uploader — see how that works.

The short answer

There Is No QR Code Formula in Excel or Google Sheets

Not a hidden one, not a newer one. Neither application ships a worksheet function that produces a QR code, and neither ships a barcode function either.

Microsoft's alphabetical list of Excel worksheet functions contains no QR or barcode entry. Google's Sheets function list contains none. What both have is an IMAGE function that renders a picture from a web address — in Sheets it is documented as inserting an image into a cell, and in Excel it takes a source URL plus optional alt text and sizing. Every “QR code formula” tutorial you have read is really a tutorial about pointing that function at somebody else's image service.

Which is why they break. The endpoint those tutorials almost always use is Google's old chart image service, called as chart?cht=qr. We requested it directly on 30 July 2026 and it returned HTTP 404 — no image, just an error page. A sheet built on it shows empty or broken cells, and a workbook that worked when you built it can stop rendering without anyone touching the file.

No native function, either app

Checked against both official function lists. There is no QRCODE, and nothing barcode-shaped. An add-in or a font is a third-party product, not a spreadsheet feature.

The famous endpoint answers 404

The chart image service the IMAGE trick calls returned HTTP 404 when we requested it on 30 July 2026. Anything built on it is showing broken cells today.

Excel blocks redirecting sources

Microsoft's IMAGE documentation states a source URL that redirects is blocked for security reasons, and the source must use https. That rules out shortened image links in cells.

Step by step

How to Make QR Codes From a Spreadsheet Instead

The move that works is to stop generating inside the sheet and use the sheet as the input. Your rows already hold the links, SKUs, or asset IDs; the uploader turns each row into its own code and gives you the whole set back at once.

1

Lay the sheet out one code per row

One row per code, with the value to encode in its own column. Keep a title column too — that title is the name you will see for each code in your dashboard, so shelf_A12 beats row 47.

2

Get it out as .xlsx, CSV, or a paste

Excel workbooks upload as .xlsx directly — no conversion step. From Google Sheets, an export lives under File, then Download. Or select the rows and paste them in. Uploads are capped at 10MB, which is thousands of rows of text.

3

Pick the row type and the column

Choose which of the sixteen row types you are creating, then point the uploader at the column holding the value. Rows that cannot be built — a malformed link, a missing Wi-Fi SSID — are listed with their row numbers before anything is generated, so a bad export never turns into a bad print run.

4

Generate the whole column in one run

One QR code per row, and the file-size limit above is the only ceiling on a single run — there is no separate row count to work around. Batch upload runs on the Plus plan and up; the bulk QR code generator page covers the output formats and label sheets in detail.

Not sure your columns are shaped right? Every row type offers a starter file to download in both .csv and .xlsx, with the exact headers that type expects.

The free route

Need Barcodes From a Column, Free? That One Is Not Gated

Bulk QR codes — Plus and up

Uploading a spreadsheet and getting a QR code per row is a paid feature, and specifically a Plus-and-above one: Starter does not include it. That is from $16/month billed annually. Free and Starter accounts can still make codes one at a time.

  • .xlsx / CSV / paste, up to 10MB per upload
  • Dynamic rows are editable and tracked
  • Password-protected rows from Plus

See pricing

Bulk barcodes — free, no account

If what your labels actually need is a barcode rather than a QR code, our barcode generator takes a pasted column or a CSV and renders up to 500 rows in one batch. There is no account check and no plan check anywhere in that code path — the 500 is a browser-memory limit that is identical for everyone, and signing in does not raise it.

  • 500 rows, pasted column or CSV
  • ZIP of PNG or SVG, or a multi-page PDF
  • 14 symbologies incl. Code 128, EAN-13, Data Matrix, PDF417
  • The PDF from this tool is genuine vector

Open the barcode generator

The trade-off is worth being blunt about. Barcodes from that tool are static: the value lives in the symbol, so there is no redirect to repoint, no scan counts, and no editing once the labels are printed. It also holds no barcode API and no dynamic barcode format. If the destination will ever change, or you need to know how often a label was scanned, you want a dynamic QR code and therefore the paid batch path. If your codes are permanent part numbers on a shelf, the free barcode run is the better tool and costs nothing.

A detail that makes pasting out of a sheet work well: copying two or more columns puts tab-separated text on your clipboard, and the parser treats a tab as evidence of structure. If the first row looks like a heading — sku, gtin, barcode — it reads that heading to decide which column holds the codes, so a name,sku export encodes the SKUs and not the product names. You can override the choice either way.

Reference

What Each Spreadsheet Row Can Become

Sixteen row types can be created from a spreadsheet. Every template starts with a type column and a title column, then the fields below — that is the full header row, in that order. Whether a row is dynamic or static is fixed by its type, and it decides two things: dynamic rows can be repointed later and collect scan data, and only dynamic rows count against your account's QR quota.

Every dynamic type ends with the same two optional columns, and both are easy to miss when you build the sheet by hand. A value in password means a scanner has to type that passphrase before the redirect resolves; it runs on the same plans bulk itself does, so if the upload goes through, the column works. (The password on a Wi-Fi row is a different thing entirely — that one is the network key the code hands to the phone.) A name in folder files every matching row into that folder in your dashboard and creates it on the spot if it does not exist yet, which is the quickest way to keep a thousand-row batch sorted by campaign. Static rows carry no folder column, so a folder name on a Wi-Fi or Text row is dropped.

Row typeModeColumns after type and title
URLDynamicurl, password, folder
Google FormDynamicurl, password, folder
App StoresDynamiciosUrl, androidUrl, harmonyUrl, password, folder
FacebookDynamicurl, password, folder
InstagramDynamicurl, password, folder
YouTubeDynamicurl, password, folder
TikTokDynamicurl, password, folder
XDynamicurl, password, folder
PinterestDynamicurl, password, folder
LinktreeDynamicurl, password, folder
Wi-FiStaticssid, password, encryption
EmailStaticemail, subject, message
SMSStaticphone, message
TextStatictext
EventStaticlocation, start, end
GS1 Digital LinkStaticdomain, gtin, lot, serial, expiry, cpv

Two things a spreadsheet cannot do here

There is no vCard row type, so a column of names, titles, and phone numbers will not become a batch of contact cards — put each person's card or profile URL in a URL row instead. And there is no file row type, so a spreadsheet listing PDFs will not upload those PDFs; a file QR code is made one at a time.

Why it matters

A Formula-Made Code Is Frozen the Moment You Print It

It depends on someone else's server

A code drawn by an image endpoint exists only while that endpoint answers. The best-known one answers 404 today, which is how sheets full of broken cells happen.

The link is baked in

Whatever URL was in the cell is encoded in the picture. Change the destination and every label already printed is wrong — there is nothing to update.

A dynamic code separates the two

A dynamic row encodes a short redirect, so the printed code stays valid while the destination moves, and each code reports its own scans.

This is the whole reason spreadsheet formulas lost this job. Print 500 product labels from a formula and one changed landing page wastes all 500. Print them from dynamic rows and you repoint them from your dashboard. See how scan tracking works.

Who does this

Spreadsheets That Turn Into Code Runs

The pattern is always the same: a column that already identifies something, and a need to put that identifier on a physical thing. A product export becomes a code per SKU for packaging. An asset register becomes a code per item of equipment, which is the workflow QR code inventory management covers end to end. A unit list becomes a Wi-Fi code per rental. A guest list becomes a code per attendee.

Two practical notes before a big run. Print a handful first and scan them on more than one phone — a batch is the worst place to discover a sizing problem, and our QR code size guide gives the distances. And if the codes are going on labels, decide the label stock before you decide the output format, because that is what tells you whether you want vector or raster files.

Excel & Google Sheets QR Codes — Frequently Asked Questions

Get started

Turn your rows
into codes

Design one code free right here, with no account. When you are ready for the whole column, the dashboard uploader reads .xlsx, CSV, or pasted rows and builds one code per row on the Plus plan and up. Prefer free barcodes from a pasted column? That tool is ungated.

Running the whole batch? Bulk QR code generator · Barcodes from a column, free? Barcode generator · Tagging stock and equipment? QR code inventory management · Printing the results? QR code labels · Generating from code instead? QR code API.