A web UI for label creation and printing on a Brother QL-710W on Linux
I posted recently about getting my Brother QL-710W working correctly on an Intel NUC running Debian 12.
This works fine for printing via CUPS, but I couldn’t get printing working from my phone (Android) or Sandra’s phone (iOS).
But now I have a solution: the brother_ql_web
software.
This is a python utility, which exposes a webserver for label creation (with an API), and libraries for talking to the label printer.
It is on Github, but I was lazy and went with the PyPi route:
sudo apt install pipx -y
pipx install brother_ql_web
It needs a config file (config.json
), and there is an example/
I made a couple of tweaks to the label size, the font size, and the font, as I found that the default font didn’t handle newlines. I also specified the path to the printer
{
"server": {
"port": 8013,
"host": "",
"log_level": "WARNING",
"additional_font_folder": ""
},
"printer": {
"model": "QL-710W",
"printer": "file:///dev/usb/lp0"
},
"label": {
"default_size": "29x90",
"default_orientation": "standard",
"default_font_size": 50,
"default_fonts": [
{"family": "Lato Medium", "style": "Regular"},
{"family": "Linux Libertine", "style": "Regular"},
{"family": "DejaVu Serif", "style": "Book"}
]
},
"website": {
"html_title": "Label Designer",
"page_title": "Brother QL Label Designer",
"page_headline": "Design your label and print it…"
}
}
Add the user who is going to be running this to the printer group:
sudo usermod -G lp -a neil
After making sure that it worked from the command line (brother_ql_web --configuration $HOME/config.json
), I set up a simple systemd service, to make it run on boot and to keep it running:
sudo tee /etc/systemd/system/brother_ql_web.service <<EOF
[Unit]
Description=brother_ql_web
After=multi-user.target
[Service]
Type=simple
Restart=always
ExecStart=/home/neil/.local/bin/brother_ql_web --configuration /home/neil/config.json
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now brother_ql_web.service
So now I have a nice web interface to let me (and Sandra) create and print labels.
Updates
Custom font
I like the MonoRale (Raleway derivative) font. To get that present, and set as default, with brother_ql_web
, I put the font files into /usr/share/fonts/opentype/monorale
and then rebuilt the font cache with fc-cache -vvv
(the -vvv
to see what I was doing wrong initially).
The font then appeared in the drop down menu in the brother_ql_web
UI, and I added it to the config file, so that it is the default font.
Special character support
The version of brother_ql_web
in PyPi doesn’t handle special characters. I reported a bug and minutes later, the very generous maintainer fixed it. The fix doesn’t seem to be in PyPi yet, so you’ll need to use the Github repository version but, if you do that, you can use umlauts and other useful things.
You may also like:
- Getting a Brother QL-710W label printer working via CUPS on Debian
- Desktop Linux: the software I'm currently using
- Fixing apt yarn key deprecation warning in Debian 12
- Making my ThinkPad LED flash 'decoded.legal' in morse code
- Wireless printing and scanning with a Brother MFC L2750DW on Debian
- Mounting LUKS-encrypted disks by UUID
- I'm not sure that I can trust Bitwarden with my TOTP codes anymore
- Triggering a remote lamp automatically when I am on a call
- Disabling my ThinkPad's internal camera on boot
- Snikket, a self-contained XMPP distribution
- GSConnect (KDE Connect), WireGuard, and Debian 12 Bookworm
- Unlocking a LUKS-encrypted partition via ssh on Debian 12 Bookworm
- NetworkManager: automatically switch between Ethernet and Wi-Fi
- Fixing sogo's 'incorrect string value' error
- Updating the LUKS key derivation function on Debian