Print to a Niimbot label printer without their app or their cloud (one HTML file, no backend)
Cheap Bluetooth label printers are great for a homelab: cable tags, shelf labels, drive labels. The problem is the vendor app, which is the only supported way to print, wants an account, and goes blank when their server has a bad day. I reverse-engineered the Bluetooth protocol and wrote a driver that runs in a browser tab. There is no backend and no build step: one JavaScript file plus a demo page you can serve off anything, including a static file server on the box next to you. Web Bluetooth needs HTTPS or localhost, and localhost counts, so a local server is enough. Nothing you print leaves your machine, and nothing phones home. Validated on seven models on real hardware: B1, B1 Pro, B2 Pro, M2-H, D11_H, D110 and N1. The driver reads the model id off the printer on connect and refuses to print if you selected a model or label size that does not match, which matters because several of these share a Bluetooth name at different resolutions. MIT, zero dependencies, also on npm if you want to embed it in something you already run. github.com/iscarelli/niimbot-web-bluetooth iscarelli.github.io/niimbot-web-bluetooth/demo If you are on Home Assistant, there is a separate custom integration by eigger (hass-niimbot) that does this from HA in Python. Mine is for the case where you want printing inside a web page you control. Disclosure since it comes up: I used an AI assistant while writing this, and the rules file governing how is committed at the repo root. Every number in the README was measured on hardware by a human looking at paper, and the docs mark each printer status field as observed, varies or inferred so you can see which is which.