Google Sheets' own Print menu only prints the grid on A4 — it can't produce individual thermal labels. To turn a sheet into real labels you feed the data into a label app. With LabelInn you either (1) connect the sheet live through the official Zapier or Make modules, or (2) export the sheet to CSV/XLSX and import it as a data source. Then you map each column to a label field, add barcodes or QR codes bound to a column, and print one label per row in bulk. There is no built-in native Google Sheets connector — use the Zapier/Make or import path.
You've got a Google Sheet full of products, orders, or addresses, and you want each row to come out as a printed label — a barcode on a product tag, a name and address on a 4×6 shipping label, an asset code on a QR sticker. If you've tried File → Print, you already know it just prints the spreadsheet grid, not labels. This guide walks through the reliable way to print labels from Google Sheets: prepare the columns, get the data into a label tool, map columns to the design, and print one clean label per row — barcodes included.
The mental model is simple: a label run is a mail merge. You build one label design, then let each spreadsheet row fill it in. Row 1 becomes label 1, row 2 becomes label 2, and so on. The only real work is getting the sheet columns clean and mapping them to the right spots on the label. Let's do it step by step.
Want each row on the sheet to become a printed label? LabelInn maps your Google Sheet columns to a label design and prints one label per row — barcodes and QR generated from a column, driverless on macOS and Windows. Try free for 14 days →
What "Printing from Google Sheets" Actually Means
- You need one label per row, not the whole sheet on one page
- Columns like Product Name, Price, SKU, Address should land in specific places on the label
- A column of SKU / UPC / order numbers should become a scannable barcode or QR code
- You want it to print at the real label size (e.g. 50×25 mm or 4×6 in), not scaled onto A4
- Ideally the sheet stays the source of truth — edit the sheet, reprint, done
- It should work whether you have a Zebra, TSC, Toshiba, or Epson ColorWorks label printer
Step 1: Prepare Your Google Sheet Columns (Do This First)
90% of "my labels came out wrong" problems start in the spreadsheet, not the printer. A few minutes cleaning the sheet saves a lot of reprints. The goal is a tidy, machine-readable table: a header row, one record per row, nothing merged.
Put a clear header in row 1 — short, unique names like SKU, ProductName, Price, Barcode, Name, Address. These become your field names.
One record per row. Remove blank rows and merged cells — a merged cell breaks the "row = label" mapping.
Store barcode values as plain text so leading zeros survive. Select the column → Format → Number → Plain text before pasting UPC/EAN codes.
Keep the raw value for anything you'll turn into a barcode. Don't pre-format it with spaces or currency symbols — put the display text (like $9.99) in a separate column if you need it.
Here's a well-shaped product sheet you can adapt. Every column maps cleanly to one part of the label:
| SKU | ProductName | Price | Barcode |
|---|---|---|---|
| TSHIRT-BLK-M | Cotton T-Shirt, Black, M | $14.90 | 0123456789012 |
| MUG-CER-350 | Ceramic Mug 350ml | $9.50 | 0123456789029 |
| CBL-USB-C-1M | USB-C Cable 1m | $6.00 | 0123456789036 |
For address labels, split the address into columns — Name, Line1, City, Postcode, Country — rather than cramming everything into one cell. That lets you position and style each line on the label and keeps long addresses from overflowing.
Step 2: Get the Sheet Into LabelInn (Two Real Paths)
LabelInn does not have a built-in native Google Sheets connector, so you bring the sheet in one of two supported ways. Pick based on how often the data changes.
| Path | Best when | How it works |
|---|---|---|
| Zapier / Make automation | Data changes often; you want a print to fire automatically (new order row, updated stock) | A Google Sheets trigger in Zapier or Make runs the LabelInn module, which picks a design, fills the fields, and prints — no manual step |
| Export & import | You print in batches now and then, or want to select rows by hand | Download the sheet as CSV or XLSX and import it as a LabelInn data source, then map and print |
Path A: Connect the sheet with Zapier or Make (live automation)
In Zapier or Make, start a scenario with a Google Sheets trigger (e.g. "New or updated spreadsheet row")
Add the LabelInn action module and choose the label design you want to print
Map each sheet column into the module's per-variable fields (Product Name → the Name field, Barcode → the barcode field), set copies, and turn it on
Now a new or edited row can print a label automatically. See the walkthrough in Print Labels from Zapier.
Path B: Export the sheet and import it as a data source
In Google Sheets go to File → Download → Comma-separated values (.csv) or Microsoft Excel (.xlsx)
In LabelInn, open your label design and import the file as a data source — the header row becomes your list of fields
Confirm the columns loaded correctly (right count, no shifted headers), then continue to mapping
Under the hood, an exported Google Sheet is just a spreadsheet — the same import and mapping flow used for Excel applies. If you already keep master data in Excel, the process is identical; see Bulk Label Printing from Excel for the full data-source walkthrough.
Step 3: Map Columns to Label Fields (Build the Template Once)
This is the mail-merge step. You lay out the label visually, then bind each element to a column so it fills from whatever row you're printing. Do it once and the design is reusable for the whole sheet — and for the sheet next month.
Set the label size to match your physical media (e.g. 50×25 mm, 40×30 mm, or 4×6 in)
Drop in your text elements and bind each to a column by field name — ProductName, Price, Name, Address
Add a barcode or QR element and bind it to the code column (Step 4)
Preview a couple of rows to check that long values don't overflow, then adjust font size or enable auto-fit
A key detail: bind by field name, not by cell position. Because the mapping is name-based, if you add rows, reorder rows, or reprint next week's sheet, the template still fills correctly as long as the headers match. That's what makes it a true reusable label mail merge instead of a one-off.
Step 4: Add Barcodes & QR Codes from a Column
You don't need a barcode font or a spreadsheet formula. Keep the raw value in a column and let the label tool render the barcode at print time from each row's value. This is the reliable way to get scannable barcode labels from Google Sheets.
| What you have in the column | Barcode type to use |
|---|---|
| 12-digit retail product code | UPC-A |
| 13-digit international product code | EAN-13 |
| SKU / internal alphanumeric code | Code 128 |
| URL, order ID, or asset link | QR code |
Add a barcode element to the label and pick the symbology (UPC-A, EAN-13, Code 128, or QR)
Bind it to your code column — the value from each row generates that row's barcode
Give the barcode enough width and a quiet zone so scanners read it; avoid shrinking it to fit a tiny gap
Print one and scan it before running the full batch — verify the scanned value matches the sheet
UPC/EAN codes are the usual gotcha. If Google Sheets stripped a leading zero (treating 0123... as a number), the barcode encodes the wrong value. Format the column as plain text and re-paste. A quick scan test catches encoding mistakes before you've printed 300 stickers.
Step 5: Print One Label Per Row in Bulk
With the template mapped and barcodes bound, printing is the easy part. Choose the printer and label size, select which rows to print (all of them, or a filtered range), and run the batch. LabelInn renders a separate label for each selected row and streams them to the printer — 200 rows produce 200 labels, each at your chosen size.
Because LabelInn is driverless, it renders every label host-side and sends it to the printer in the printer's own command language rather than going through a Windows or macOS print driver. That keeps barcodes crisp and the size exact:
- Zebra printers receive native ZPL
- TSC (and rebadged clones) receive native TSPL
- Toshiba TEC receives native TPCL
- Epson ColorWorks receives its ESC/Label commands
- Honeywell, SATO, Argox, Bixolon, Citizen print via ZPL/TSPL emulation
The same run works identically on macOS and Windows, so a design and a Google Sheet on a Mac print the same labels as on a PC.
Bulk Printing Tips for Big Sheets
- Test one row first. Print a single label, check placement and scan the barcode, then run the batch.
- Filter before you print. Use a Google Sheets filter (e.g. only "in stock" or "unshipped") and export just those rows, so you don't print labels you don't need.
- Keep the sheet as the source of truth. Edit values in the sheet and re-export/re-sync — the template doesn't change, only the data.
- Watch for empty cells. A blank required field prints a blank spot; add a fallback value in the sheet or leave the element optional.
- Match label size to media exactly. A size mismatch is the classic cause of shifted or clipped labels — set it once in the design.
Why Not Just Print the Sheet Directly?
Google Sheets' print output is a document, not a label stream. It lays the grid onto A4 or Letter, scales to fit the page, and has no concept of a 50×25 mm die-cut label or a thermal printer's command language. You can't get one-label-per-row, correctly-sized, scannable barcode output that way — which is exactly the gap a driverless label app fills. It treats each row as a record, merges it into a real label design, and speaks directly to your thermal printer.
Turn Your Google Sheet Into Printed Labels
Connect a Google Sheet through the LabelInn Zapier or Make modules, or export it and import as a data source. Map columns to a label design, add barcodes bound to a column, and print in bulk — LabelInn speaks ZPL, TSPL, TPCL, and ESC/Label directly to your printer. Free tier available; paid plans from $14.90/month.
Try LabelInn Free for 14 Days →Frequently Asked Questions
Can I print labels directly from Google Sheets?
Not through the spreadsheet's Print menu — that prints the grid on A4, not individual labels. Feed the data into a label app instead: connect the sheet through the LabelInn Zapier or Make modules, or export it to CSV/XLSX and import it as a data source, then map columns to a design and print one label per row.
How do I mail-merge labels from a Google Sheet?
Build one label design, bind each element to a column (Name, Address, Price), then run a bulk print so every row becomes one merged label. Unlike a Word mail merge onto A4 sheet labels, this prints directly to a thermal label printer at the correct size.
How do I make barcodes from a Google Sheets column?
Keep the raw code (SKU, UPC, order ID) in a column as plain text, add a barcode or QR element to the label, and bind it to that column. The barcode is generated from each row's value at print time — no barcode font or spreadsheet formula needed. Format the column as plain text so leading zeros survive.
Is there a native Google Sheets connector in LabelInn?
No built-in native connector. You connect a sheet two ways: through the official LabelInn Zapier or Make modules (a Google Sheets trigger fires a print), or by exporting the sheet to CSV/XLSX and importing it as a data source. Both give column-to-field mapping and one-per-row bulk printing.
How do I print one label per row instead of the whole sheet?
Import or connect the sheet, bind a label design to the columns, then choose bulk print and select the rows. LabelInn renders a separate label for each selected row at your label size, so 200 rows produce 200 labels — not the grid on one page.
Does this work on a Mac?
Yes. LabelInn is driverless and runs on macOS and Windows, sending each label to the printer in its own language (ZPL, TSPL, TPCL, or ESC/Label). You can print a label run from a Google Sheet on a Mac without a vendor driver.