Tutorial

Print Zebra labels from a Google Sheet in 5 minutes

← Back to Blog

Print Zebra labels from a Google Sheet in 5 minutes

Published: · 7 min read · Tutorial

If you've ever needed to print 50 or 500 product stickers, shipping labels, or inventory tags from a spreadsheet, you know the pain: design 50 labels by hand, or learn complicated mail-merge software, or write ZPL by hand. None of that is fun.

This tutorial walks through the modern way: design one label with placeholders, point mylabelmaker at your Google Sheet, hit Print. It takes about five minutes the first time. Here's exactly what to do.

What you'll need

Step 1, open mylabelmaker and start a label

1

Open the editor in your browser

Go to app.mylabelmaker.com. There's no signup. The editor loads with a blank label.

Pick the right label size from the size pill in the top toolbar. If you don't know exactly what stock you have, click Auto-detect from printer in the printer settings popover (the gear icon next to the printer name) and mylabelmaker will read the size straight off your Zebra.

Zebra ZD420 (USB) 4" x 6" Print
The artboard toolbar: printer picker, label-size picker, grid + background settings, then Print. The gear icon next to the printer name opens the printer settings popover.

Step 2, design your base label with placeholders

2

Add the elements that change per row, with {{tokens}}

Click Text in the left rail to drop a text element on the canvas. Double-click it to edit. Instead of typing actual text like "Acme Widget", type a placeholder like {{name}}. The double curly braces are how mylabelmaker recognizes the token.

Do the same for any element that changes per row: a barcode whose value is {{sku}}, a QR whose URL is https://example.com/product/{{slug}}, a text with ${{price}}, and so on.

Tip. You don't have to type the brackets by hand. Click the Variables button in the left rail to open the panel, then click any token chip under "From your data" once you've loaded the sheet (Step 4), or use the {{ }} icon inside the barcode and QR inputs to drop a token at the cursor.

What about elements that don't change? A logo, a "Made in USA" line, a decorative border, those stay as normal text or images. Only the parts that differ per row need tokens.

Step 3, publish your Google Sheet as CSV

3

In Google Sheets: File → Share → Publish to the web

Open your sheet. The top row should be your column names (these become your tokens: name, sku, price, etc.). Every row below is one label.

Go to File → Share → Publish to the web. In the dialog, pick the sheet/tab you want, then change the dropdown from "Web page" to Comma-separated values (.csv). Click Publish, confirm, and copy the URL Google gives you.

Heads-up. "Publish to the web" is different from "Share". Anyone with the published URL can read the data. Don't publish a sheet that contains customer PII unless you understand who can see it. For private data, use the Paste CSV tab in the next step instead.

Step 4, paste the URL into the Variables panel

4

Open Variables, switch to "Google Sheet", paste the URL

Back in mylabelmaker, click Variables in the left rail. The panel opens to the right. Switch the source tab to Google Sheet and paste your URL into the field. After about a second, the editor fetches the sheet, parses it, and shows a green "Loaded N rows" status.

Two things happen automatically:

  • Your column names appear as one-click chips at the top of the panel. Click any chip to insert that token at the cursor in your last-edited text, barcode, or QR field.
  • A row navigator strip appears below the canvas, showing "Row 1 / N" with first / prev / next / last buttons and a slider. The canvas now shows row 1's substituted label live.
Variables FROM YOUR DATA {{sku}} {{name}} {{price}} DATA SOURCE Google Sheet Paste CSV Upload https://docs.google.com/.../pub?output=csv Loaded 42 rows · sku, name, price Acme Widget $9.99 · SKU-001 ⏮ ◀ Row 1 / 42 ▶ ⏭
Variables panel with token chips (left) and the row navigator that appears below the canvas (right). Use the chips to insert tokens, then step through rows to preview.

Step 5, preview each row and edit any value

5

Verify a few rows before you commit ink

Click the navigator's next/prev arrows or drag the slider to jump through your data. The canvas re-renders each row's label in real time. This is the single best way to catch a token typo or an unexpected long product name that overflows your label.

If a row has a value you want to fix without going back to Google Sheets, click Edit row in the navigator. A popover opens with one input per column. Typing a new value re-renders the canvas immediately. Your edit stays on that row, so you can navigate away and back without losing it.

Step 6, print every row

6

The Print button is now "Print N rows"

When the navigator is showing, mylabelmaker reassigns the artboard's Print button: clicking it prints one substituted label for every row in your sheet. There's no per-label count modal — the row count is the count.

Hit Print. The progress bar updates as each label goes out. The printer status line surfaces "head open" or "out of paper" instantly if anything goes wrong, so you're not staring at a queue wondering what happened.

Tip. Want to print just one row to test? Use the navigator to navigate to that row, then use the Options menu's Copy ZPL to copy just that label's ZPL, or temporarily clear the data with the Clear button in the Variables panel and use the normal Print flow. Once you're happy, reload the sheet and batch-print the lot.

Recap

  1. Open app.mylabelmaker.com, pick your label size.
  2. Design your base label, replacing dynamic parts with {{column_name}} tokens.
  3. In Google Sheets: File → Share → Publish to the web → CSV, copy the URL.
  4. In mylabelmaker, click Variables, switch to the Google Sheet tab, paste the URL.
  5. Step through rows in the navigator to verify.
  6. Hit Print, the artboard's Print button is now "Print N rows".

Ready to try it?

The whole workflow is free. No signup, no install on the editor side. Just open the app, paste your sheet, hit Print.

Open mylabelmaker

Related reading