Label Studio
- Introduction
- Opening the Label Studio
- The Workspace
- Template Builder
- The Thermal Label Toggle
- Layout Builder
- The Layer Stack
- Position and Size
- Element Types
- Fragments
- Label Data
- Default Data, Built-in Data, and Images
- Saving Templates and Layouts
- Generating and Previewing
- Settings
- Quick Print
- Import, Export, and Debug
- Next Steps
Introduction¶
The T3 Label Studio is the visual label builder inside the T3 Chrome Extension. It lets you design a label, fill it with Metrc data, preview the result, and download a print-ready PDF without writing any configuration by hand.
Everything the Label Studio produces is ordinary T3 Labels configuration. The Studio is a front end over the same label generation API you can call directly, so any label you build here can be reproduced from a script, and any configuration you already have can be loaded into the Studio to keep editing visually.
This page is a reference for the interface. If you would rather follow a guided build from scratch, start with the T3 Label Tutorial.
Opening the Label Studio¶
- Log in to Metrc with the T3 Chrome Extension installed.
- Open the T3 menu and choose Label Studio.
Two buttons get you started:
- SHOW ME AN EXAMPLE loads a complete working label so you can see how the pieces fit together.
- START FRESH clears everything and gives you a blank 3x1 label to build on.
The Workspace¶
The Studio is split into a set of tabs on the left and a live PDF preview on the right.
Three primary tabs carry the main workflow:
| Tab | Purpose |
|---|---|
| TEMPLATE BUILDER | The physical label: its size, padding, and how labels are arranged on a page |
| LAYOUT BUILDER | What is printed on each label |
| LABEL DATA | The list of records to print, one label per record |
A row of secondary tabs holds everything else:
| Tab | Purpose |
|---|---|
| My Templates | Templates you have saved |
| My Layouts | Layouts you have saved |
| Default Data | Values shared by every label |
| Built-in Data | Text and images T3 provides under the t3. namespace |
| Images | Your own uploaded images |
| Settings | Copies, rotation, and printer tuning |
| Quick Print | Defaults used by one-click printing elsewhere in T3 |
| Import/Export | Move a whole configuration to or from a file |
| Debug | Raw configuration, for troubleshooting |
The preview column on the right stays visible while you work. It regenerates as you make changes, so you can see the effect of an edit immediately.
Template Builder¶
A template describes the physical label and the sheet it sits on. It says nothing about content — that is the layout's job. The same layout can be printed on any template, which is what makes it easy to move a design from a thermal roll to a sheet of Avery labels.
The top controls set the label itself:
- Label Width and Label Height, in inches.
- Label Padding X and Label Padding Y, the unprintable margin inside each label. Padding is useful when your printer cannot reliably reach the very edge of a label.
The controls below describe the page the labels are arranged on: Page Size X/Y, Page Margin Left/Top, X Gap, Y Gap, Number of Columns, and Number of Rows. When a page holds more than one label, a page layout preview appears showing the grid.
Each control maps to one field in the template config. For the underlying field names and worked examples, see Label Templates.
The Thermal Label Toggle¶
Most thermal printers print one label per page, where the "page" is exactly the size of the label. The Thermal Label toggle is a shortcut for that arrangement.
Turning it on pins eight values at once: page size becomes the label size, columns and rows become 1, and all margins and gaps become 0. If any of those values would change, you are shown exactly what will be overwritten and asked to confirm first.
While the toggle is on:
- The eight page settings are locked, and a note explains why.
- Page Size X and Page Size Y follow the label dimensions automatically, so resizing the label resizes the page with it.
Turning the toggle off unlocks those settings and changes nothing else — your saved template is left exactly as it was. Uncheck it whenever you need to print on a sheet of labels rather than a roll.
Layout Builder¶
A layout is a stack of elements — text, barcodes, images, boxes — each positioned within the label. Layouts are responsive: positions are fractions of the label rather than fixed measurements, so the same layout adapts when printed on a different size.
The Layer Stack¶
The panel on the left lists every element in the layout. Elements later in the list are drawn on top of earlier ones.
| Control | What it does |
|---|---|
| + | Adds a layer. Choose the element type from the dropdown. |
| Copy | Duplicates the selected layer |
| Trash | Deletes the selected layer |
| Eye | Hides a layer without deleting it. Hidden layers are not printed. |
| Grip | Drag to reorder, which changes what is drawn on top |
Click any layer to edit it. Give layers a Layer description so the stack stays readable once a layout grows past a few elements.
Position and Size¶
Above the layer stack is a scale drawing of your label showing every element in place.
- Drag the middle of the selected element to move it.
- Drag an edge to resize it.
- Other layers are shown as outlines. Click one to select it.
You can also type exact values using the X Start, X End, Y Start and Y End fields in the element editor. These are fractions of the printable area, shown as percentages, where Y starts at the bottom of the label.
Dragging and typing do the same thing — both write the xStartFraction / xEndFraction / yStartFraction / yEndFraction values described in Position and Sizing.
Element Types¶
| Type | Renders |
|---|---|
| Text | A paragraph of text, with font, size, alignment and spacing controls |
| Code 128 Barcode | A 1D barcode |
| Code 39 Barcode | An alternative 1D barcode format |
| QR Code | A scannable QR code |
| Image | An image from the Images tab or the T3 built-ins |
| Box | A rectangle, with stroke and fill color, width and opacity |
| Table | A table defined with simple HTML |
| Fragment | Another saved layout, embedded inside this one |
Each of these corresponds to an elementType in the layout config — TEXT, CODE128_BARCODE, FRAGMENT, and so on. Label Layouts documents every element type and each of its styling fields.
Text and Table elements share the paragraph controls, including Paragraph text resize strategy:
- Allow Overflow — text may spill outside its box
- Truncate Text — text is cut off at the boundary
- Shrink Text — the font shrinks until the text fits
The Value template field accepts Jinja templating, so {{ package.label }} prints the current record's tag. Use Insert Field to browse the fields available in your loaded data. See Value Templates for the full syntax.
Fragments¶
A Fragment element embeds one saved layout inside another. A compliance warning panel, a barcode with its tag underneath, or a facility footer can be designed once and reused across every label that needs it.
To add one, create a Fragment layer and pick a saved layout. The preview draws the fragment's contents in place, so you can see what you are embedding rather than an empty box.
Three things are worth knowing:
- Editing a fragment changes every label that embeds it. That is the point, and also the risk.
- Positions inside a fragment are relative to the fragment, not to the label. Moving or resizing the Fragment layer moves everything inside it.
- Font sizes do not scale. Text set at 10pt stays 10pt whether the fragment fills the label or sits in a narrow strip, because font sizes are absolute. Barcodes, QR codes and images do scale. If text must fit its box, set its resize strategy to Shrink Text.
Fragments can embed other fragments, up to five levels deep, though more than two levels is rarely useful. For how fragments are sent to the API, and the full list of limits, see Reusing Layouts With Fragments.
Label Data¶
The LABEL DATA tab supplies the list of records to print. One record produces one label, so a list of 30 packages prints 30 labels.
There are four sources:
| Source | Use it for |
|---|---|
| Load from Metrc | Pulling packages, plants or plant batches directly. Max 500 records. |
| Import from File | Uploading a CSV or JSON file |
| Manual Entry | Typing or pasting label data directly |
| Demo Packages | Sample data for exploring label features without touching real records |
Loading from Metrc offers Active Packages, In-Transit Packages, Active Superpackages, In-Transit Superpackages, Vegetative Plants, Flowering Plants and Active Plant Batches.
Once data is loaded, every field on the record is available to your value templates. For a package, that includes:
{{ package.label }}— the Metrc tag{{ package.item.name }}— the item name{{ package.item.strainName }}— the strain{{ package.quantity }}and{{ package.unitOfMeasureName }}— quantity and unit{{ package.metadata.totalThc }}and{{ package.metadata.totalCbd }}— extracted lab results, when present
Use Insert Field in the Layout Builder rather than typing these from memory — it lists exactly what your loaded data contains, with an example value beside each one.
Default Data, Built-in Data, and Images¶
Three secondary tabs round this out:
- Default Data holds values shared by every label, such as a facility address. These are available to templates the same way record data is. See Default Data.
- Built-in Data lists what T3 provides for free under the
t3.namespace — state warning images, compliance disclosures, and Poison Control Center contact info. For example,{{ t3.images["t3_logo.png"] }}renders the T3 logo. See Built-In Data. - Images is where you upload your own logos and graphics for use in Image elements.
Saving Templates and Layouts¶
Templates and layouts are saved separately, so a layout you design once can be printed on any template you have.
When a template or layout is loaded, a card at the top of the tab shows its name and status:
- Starter marks a built-in template or layout provided by T3. These are read-only. To change one, use Make a Copy to create your own editable version.
- Custom marks something you saved yourself.
- Auto-save saves your changes as you work. Turn it off if you would rather save deliberately with the Save button; the card shows Unsaved changes until you do.
- Make a Copy duplicates the current design under a new name.
- RESET clears the current selection and starts over.
Your saved work appears under My Templates and My Layouts, and in the starter autocomplete dropdowns. Saved templates and layouts are visible to Metrc users who have access to the same license, so a design made once can be shared across your team.
Generating and Previewing¶
Click GENERATE PDF to render your labels. The preview appears in the right column, and from there you can DOWNLOAD PDF or VIEW IN NEW TAB.
Useful controls beside the button:
- Draw borders outlines every element in the rendered PDF. This is the fastest way to understand why something is positioned oddly.
- Copies prints each label more than once.
- Rotate turns the layout on the page.
If a label cannot be rendered, the error panel explains what went wrong and which layer caused it. The most common cause is a Value template referencing a field that does not exist in your loaded data — the message names the field and suggests close matches. Click SHOW LAYER to jump straight to the element at fault. The tutorial's error walkthrough reads one of these messages field by field.
For printer setup, driver installation and troubleshooting, see Printing Label PDFs.
Settings¶
| Setting | What it does |
|---|---|
| Copies | How many copies of each label to generate |
| Reverse print order | Thermal printers print labels sequentially, but the spooled order is reversed (last to first). Enable this to print labels in the same order as they appear in the PDF. |
| Rotation | Degrees to rotate the layout. 90 prints sideways. |
| Barcode bar thickness | Adjust if you are using a low-DPI printer and printed barcodes are too thick or unscannable. Higher means thicker bars. 1.0 suits most thermal printers. |
| Label margin thickness | Adjust if your printer has trouble printing the exact center of labels. Higher means thicker margins. 1.0 suits most thermal printers. |
| Debug | Enables rendering debug output |
| Show help | Shows or hides the help cards in each tab |
These map to the rendering options documented under Settings.
Quick Print¶
Elsewhere in T3 you can print a label for a package, plant or plant batch in one click. The Quick Print tab sets which template and layout those shortcuts use, with a separate layout for each object type so a plant tag can differ from a package label.
Import, Export, and Debug¶
Import/Export writes your entire configuration — template, layout, data, default data, images and settings — to a single file, and loads it back. Use it to move a label design between facilities, hand a design to someone else, or keep a backup before a large change. You can choose which parts to include.
Debug shows the raw configuration behind the Studio. If you are asking for help with a label, the contents of this tab are the most useful thing to share.
Next Steps¶
- Follow the T3 Label Tutorial to build a label step by step
- Read the Label Layouts reference for every element field
- Read the Label Templates reference for template fields
- Set up your printer with Printing Label PDFs
- Call the same renderer directly with Generating Label PDFs