npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-dymo-printer

v1.0.2

Published

A lightweight, zero-dependency Node.js library for DYMO LabelWriter 400/450 series printers. Pure JavaScript, cross-platform, and functions without the DYMO SDK or Web Services.

Downloads

51

Readme

node-dymo-printer

A lightweight, zero-dependency Node.js library for DYMO LabelWriter 400/450 series printers. Pure JavaScript, cross-platform, and functions without the DYMO SDK or Web Services.

It has been tested to work on Windows 10, macOS (11+) and Ubuntu 21.10.

Developed for the DYMO LabelWriter 450, but might also work for other models.

Initialize

Prerequisites

  • Node v >= 18
  • NPM v >= 6
npm install node-dymo-printer

Quick Start

The following example finds the printer automatically and prints a standard label.

import { DymoServices, createImageWithText } from 'node-dymo-printer';

// Define label dimensions and create an image
const { imageWidth, imageHeight } = DymoServices.DYMO_LABELS['89mm x 36mm'];
const image = await createImageWithText(imageWidth, imageHeight, 0, 128, 'Hello World!');

// Print (empty config auto-detects the printer)
const printer = new DymoServices({});
await printer.print(image, 1);

Examples

See the demo.js files in the repository for detailed use cases:

  1. demo1.js: Auto-detect printer and print "Hello world!".
  2. demo2.js: Connect using specific printer details.
  3. demo3.js: List all installed printers.
  4. demo4.js: Load and print an image file.
// Create landscape image with the dimensions of the label and with the text "Hello World!".
const {imageWidth, imageHeight} = DymoServices.DYMO_LABELS['89mm x 36mm'];
const image = await createImageWithText(imageWidth, imageHeight, 0, 128, 'Hello World!');

// Print it, just one label.
// We use an empty config object, so dymoServices tries to find the label printer automagically.
await new DymoServices({}).print(image, 1);

Manual printer configuration

The printer configuration is optional. When initialized with an empty configuration object, it tries to find the DYMO Label Writer.

For manual configuration, those interfaces are supported: "NETWORK", "CUPS", "WINDOWS" and "DEVICE".

// Network example (Linux, Windows, macOS).
new DymoServices({
    interface: 'NETWORK',
    host: '192.168.1.145',
    port: 9100
});

// USB device example (linux).
new DymoServices({
    interface: 'DEVICE',
    device: '/dev/usb/lp0'
});

// CUPS example (macOS, linux).
new DymoServices({
    interface: 'CUPS',
    deviceId: 'DYMO_LabelWriter_450'
});

// Windows example.
new DymoServices({
    interface: 'WINDOWS',
    deviceId: 'DYMO LabelWriter 450'
});

On Linux, to grant access to device /dev/usb/lp0, execute the following command and restart the system:

# sudo adduser <username> lp

References and remarks

For image processing, this library makes use of Jimp. An image processing library for Node written entirely in JavaScript, with zero native dependencies.

For Windows, it uses an executable named RawPrint.exe to write directly to a printer bypassing the printer driver. For details about this project, see RawPrint

The source code to list all printers in Windows, is borrowed from this project: pdf-to-printer

DYMO LabelWriter 450 Series Printers Technical Reference Manual