Skip to content

thermal-label/labelwriter

Repository files navigation

@thermal-label/labelwriter

TypeScript-first DYMO LabelWriter driver — Node USB/TCP and browser WebUSB.

CI codecov npm core npm node npm web License: MIT

LabelWriter 550 / 5XL users: These models enforce an NFC label lock — only genuine DYMO labels will print. This is a hardware restriction that cannot be bypassed. See the hardware guide before buying media.

Install

pnpm add @thermal-label/labelwriter-node    # Node USB/TCP
pnpm add @thermal-label/labelwriter-web     # Browser WebUSB

For ad-hoc printing from the terminal, install thermal-label-cli — it auto-detects every installed driver, no per-driver CLI needed.

Quick example (Node)

import { discovery } from '@thermal-label/labelwriter-node';
import { MEDIA } from '@thermal-label/labelwriter-core';

const printer = await discovery.openPrinter();
try {
  // image is RawImageData — { width, height, data } where data is RGBA bytes.
  await printer.print(image, MEDIA.ADDRESS_STANDARD);
} finally {
  await printer.close();
}

Quick example (Browser)

import { requestPrinter } from '@thermal-label/labelwriter-web';
import { MEDIA } from '@thermal-label/labelwriter-core';

const printer = await requestPrinter(); // call from a user gesture
try {
  await printer.print(image, MEDIA.ADDRESS_STANDARD);
} finally {
  await printer.close();
}

Supported hardware

22 devices — 1 verified · 0 partial · 0 broken · 21 untested

Model Key USB PID Transports Status
LabelWriter 4XL LW_4XL 0x001f USB ⏳ untested
LabelWriter 5XL LW_5XL 0x002a USB, TCP ⏳ untested
LabelWriter 300 LW_300 0x0009 USB, Serial ⏳ untested
LabelWriter 310 LW_310 0x0009 USB, Serial ⏳ untested
LabelWriter 330 LW_330 0x0007 USB, Serial ⏳ untested
LabelWriter 330 Turbo LW_330_TURBO 0x0008 USB, Serial ✅ verified
LabelWriter 400 LW_400 0x0019 USB ⏳ untested
LabelWriter 400 Turbo LW_400_TURBO 0x001a USB ⏳ untested
LabelWriter 450 LW_450 0x0020 USB ⏳ untested
LabelWriter 450 Duo LW_450_DUO 0x0023 USB ⏳ untested
LabelWriter 450 Turbo LW_450_TURBO 0x0021 USB ⏳ untested
LabelWriter 450 Twin Turbo LW_450_TWIN_TURBO 0x0022 USB ⏳ untested
LabelWriter 550 LW_550 0x0028 USB ⏳ untested
LabelWriter 550 Turbo LW_550_TURBO 0x0029 USB, TCP ⏳ untested
LabelWriter Duo - 96 LW_DUO_96 0x0017 USB ⏳ untested
LabelWriter Duo - 128 LW_DUO_128 0x001d USB ⏳ untested
LabelWriter EL40 LW_EL40 Serial ⏳ untested
LabelWriter EL60 LW_EL60 Serial ⏳ untested
LabelWriter SE450 LW_SE450 0x0400 USB, Serial ⏳ untested
LabelWriter Turbo LW_TURBO Serial ⏳ untested
LabelWriter Twin Turbo LW_TWIN_TURBO 0x0018 USB ⏳ untested
LabelWriter Wireless LW_WIRELESS 0x0031 USB, TCP ⏳ untested

Click any model to open its detail page on the docs site, where engines, supported media, and verification reports live. The same data backs the interactive cross-driver table.

Documentation

Full docs at https://thermal-label.github.io/labelwriter/.

Packages

Package Role
@thermal-label/labelwriter-core Protocol encoding, device + media registries. Browser + Node.
@thermal-label/labelwriter-node Node USB (libusb) and TCP transport.
@thermal-label/labelwriter-web Browser WebUSB transport.

The per-driver *-cli package was retired — use the unified thermal-label-cli instead.

Compatibility

Node ≥ 20.9 (Node 24 LTS recommended)
Browsers Chrome / Edge 89+, secure context (https:// or localhost)
Linux typically needs a udev rule for 0922:* to access without sudo
Devices LabelWriter 450 series (no NFC), 550 / 550 Turbo / 5XL (NFC-locked) — see hardware list
Peers @thermal-label/contracts, @thermal-label/transport, @mbtech-nl/bitmap
License MIT

Not affiliated with DYMO. Trademarks belong to their owners.

Contributing

See CONTRIBUTING/ on the org .github repo.

About

TypeScript-first DYMO LabelWriter label printer driver suite — Node.js USB/TCP, browser WebUSB, and CLI.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors