// yaml in · label out

POST a label.
Peel it off.

Self-hosted, containerized label printing for Brother QL printers. A declarative YAML template and one HTTP call away from a printed, auto-dated label — in well under a second.

19 QL models 300 dpi 21 templates 8 languages
terminal — labelito
$ curl -X POST localhost:8765/print \
-d '{"template":"freezer-icon",
"fields":{"title":"Bolognese"}}'
→ rendered + printed on QL-810W
✓ 0.4s

Declarative, not clicky

A label is data. Define it once in YAML, print it forever.

Fail closed, speak plainly

Safe defaults, honest errors, no phantom success.

Yours to run

On your hardware, your network, your terms. No cloud.

Small on purpose

Does one thing well; refuses to sprawl.

// how it works

Define once. Print forever.

1 · templates/62-freezer-icon.yaml
name: freezer-icon
label: "62"
layout:
  - {type: icon, name: snowflake}
  - {type: title, text: "{{title}}"}
  - {type: line}
  - {type: text, text: "Frozen: {{date}}"}
2 · one HTTP call
POST /print
{
  "template": "freezer-icon",
  "fields": {
    "title": "Bolognese"
  }
}
{{date}} resolves at render time — callers never pass dates.
3 · a printed label
Bolognese sauce
2 portions
Frozen: 07/01/2026
✓ printed · 0.4s
// see it in action

Every shipped template, rendered.

Browse the gallery — 21 templates shown as the exact PNG each would print, with fields and a ready-to-run curl.

Browse the gallery
// what's inside

Live preview

/preview returns the exact PNG that would print — before you burn a label.

Computed dates

{{date+6m}} resolves at render time. Callers never pass dates.

Media guard

SNMP reads the loaded roll and 409s a mismatch instead of a blank label.

YAML studio

Author templates in the browser and hot-reload — no restart.

History & reprint

Every job recorded; replay any print with its original date.

Home Assistant

A single rest_command turns voice or automation into a printed label.

Ready in one docker compose up.

No cloud account. No app store. Your hardware, your network, your terms.

Quick start