HomeBlog › Print Labels from Google Sheets

How to Print Labels from Google Sheets: Barcodes, Product & Address Labels

Quick Answer

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

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:

SKUProductNamePriceBarcode
TSHIRT-BLK-MCotton T-Shirt, Black, M$14.900123456789012
MUG-CER-350Ceramic Mug 350ml$9.500123456789029
CBL-USB-C-1MUSB-C Cable 1m$6.000123456789036
Addresses and shipping labels

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.

PathBest whenHow it works
Zapier / Make automationData 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 & importYou print in batches now and then, or want to select rows by handDownload 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

Excel and CSV work the same way

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 columnBarcode type to use
12-digit retail product codeUPC-A
13-digit international product codeEAN-13
SKU / internal alphanumeric codeCode 128
URL, order ID, or asset linkQR 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

Leading zeros and check digits

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:

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

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

One label per row, mapped from your columns Barcodes & QR generated from a column Driverless on macOS & Windows

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.