thermark
Print labels without the vendor app. Local, scriptable QR codes, Wi-Fi stickers, inventory tags, and text for pocket thermal printers. No cloud or account needed to print.
Download for macOS or Linux · View the offline demo · Report your printer
Hardware-tested: B1 over Bluetooth LE. USB and other printer profiles are experimental. thermark prints monochrome labels; it does not support colour printing.
Install and print your first label
On macOS (Apple Silicon or Intel), install the prebuilt BLE binary:
For Linux, or macOS without Homebrew, use the
prebuilt downloads.
Choose ble for Bluetooth or full for experimental USB serial support.
No Rust compiler is needed for a prebuilt download.
For the current release from source, use Rust 1.99 or newer:
cargo install thermark --locked uses crates.io, whose version can lag GitHub.
The installation guide covers Linux prerequisites,
archive checksums, upgrades, and troubleshooting. Run thermark --version to
check the executable your shell found.
Turn on your B1, load 50×30 mm labels, and quit the vendor app. Then:
Setup selects the printer, checks readiness, saves defaults, then prints one
example.com QR label. Omit --test-print to configure without printing. Allow
your terminal Bluetooth access when prompted; see connection troubleshooting
if discovery fails.
Print a CSV batch
Create a CSV in your working directory; a source checkout is not required:
This prepares monochrome PNGs and a manifest without connecting to a printer. Use a fresh preview directory for each batch. Inspect the PNGs, then print the exact prepared pages with your configured printer:
After a stopped run, inspect the printed labels and journal before using
thermark job resume --job inventory-preview --label 50x30. Confirmed rows
are skipped; uncertain output requires physical review. See
CSV layouts and recovery for templates and resume controls.
Try it without a printer
This saves a real PNG locally without connecting to hardware. Scan its QR or inspect the layout before spending a label.
| Guest Wi-Fi | Inventory | URL + text |
|---|---|---|
![]() |
![]() |
![]() |
These are rendered previews using public demo data, not photographs of prints.
Explore eight copy-and-paste label recipes: Wi-Fi, inventory,
manuals, return instructions, badges, storage, packing, and batch labels.
Render the whole gallery with sh examples/render-recipes.sh from a source checkout.
Support
| Model family / path | Status |
|---|---|
| B1 over BLE | Hardware-tested |
| B1 over USB serial | Experimental; implemented and mock-tested |
| B1 Pro, B21 Pro, D11, D11_H, D110 | Experimental monochrome profiles |
| B18 | Geometry known; print task unresolved |
Printing with any profile/task/connection combination other than B1+B1 over
BLE requires --allow-experimental; offline previews and saved renders do not.
Multi-colour printheads and colour raster protocols are out of scope.
Common tasks
| Goal | Command |
|---|---|
| Configure a B1 without printing | thermark setup --label 50x30 |
| Check the saved printer | thermark doctor --use-config --json |
| List profiles and verification status | thermark tasks |
| Find a command's options | thermark <command> --help |
| Upgrade the Homebrew installation | brew update then brew upgrade kahwee/thermark/thermark |
Previews use the embedded DejaVu Sans font. Pass --font /path/to/font.ttf for
a different font. Use public demo credentials in shared Wi-Fi previews; real
labels belong outside the repository or under ignored local/prints/.
Documentation
- Installation, upgrades, and prerequisites
- Printing, previews, calibration, and troubleshooting
- Builds, tests, benchmarks, and security checks
- Release checklist and distribution updates
- CSV batches and reusable layouts
- First-print and batch hardware trial
- Contributing and hardware reports
- Hardware notes
- Architecture and prepared jobs
- Library API and release history
- Agent guidance
License
MIT
CI maintenance
GitHub Actions maintenance covers workflows, parallel checks, action versions, and weekly updates.


