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.