A Linux labeling program for Brother P-touch series

What is it?

B-Label is a label editor that is known to work with two very common Brother brand USB label printers, PT-1230PC and PT-2430PC and handhelds based on those two models. It only works on devices that have continuous roll fed media and it won't work with models that print on separate pre-sized stickers. It may work on models not listed here, but I give you no guarantees as Brother has multiple times made tweaks to their protocol and so broken compatibility with newer models. This software is in no way sponsored by or supported by Brother.

Short history

I bought my first Brother label printer in 2010 on a vague promise that it was supported on Linux. While he CUPS driver for the larger QL-series does work with this device, using it wasn't very practical and trying to make the stickers with GIMP was cumbersome and slow compared to Brother's Windows software.

The CUPS driver had limitations when it comes to printing on the PT series and I started looking into implementing the printing side on my own, bypassing the CUPS driver altogether. While looking the the device's protocol, I came across similar effort by a fellow Linux hacker, who had written a short C program to directly output raw data into the printer.

I hacked together a simple shell script that let the user input two lines of text, saved that as a PNG file and fed it to the program. As the whole thing evolved, I reimplemented the printing part in Perl and as at the time I was learning GTK, I implemented the GUI with then current GTK2.

The program we have here is the third reincarnation, originally written in 2019 with GTK3 Perl as many major distros have deprecated GTK2.

Supported devices



Switch your printer into "extended" mode, by flipping the small toggle switch behind it to position "E"

Install it into CUPS as generic text-only printer (Manufacturer "Generic", model "Generic Text-Only printer" or similar).

Install the software. For Debian based distributions such as Debian itself, Ubuntu or Mint, you can either download the latest package directly from here or add my repository and always get the latest version:

You'll find the source code tar package here.

Other distributions typically assimilate the sources into their packaging systems when the maintainers find the time.

Happy labeling! :)


I can't use the whole height of the tape!

The print heads aren't really as wide as the tape. Please look at this picture for true size of the print head of 12mm and 24mm models compared to the tape. Technically you can use the 24mm model to print the whole area of the 12mm tape, but as per Brother's documentation I advice against printing outside the tape, it may damage the print head.

The font edges aren't smooth in the printout!

These are truly black and white devices and as such have no greyscales on them. There's either a black pixel there or nothing.

Your program wastes tape! I get over 2cm of empty tape with each print!

This happens because of a hardware "feature" of the printer. Take a look at this picture. Notice how the beginning of the tape and the printing head are 2cm away from each other? The device works by printing onto a transparent plastic tape, which then gets rolled onto a second tape at the end. This way the printed text is laminated between the tapes and won't wear unless the transparent plastic top player wears off first. The downside of this is that the printing has to be done before the two layers of tape are put together, which happens at the last roller. This again causes about 2cm of empty tape at the beginning of each print. I've heard many conspiracy theories about Brother wanting to sell more tape, but short of having the lamination to happen outside the tape cartridge, this isn't going to change. The competing products print on top of the tape and as such the printing will wear off easier.

I need the tape size to be detected automatically!

Our communication is one-way and we can't query the device for the inserted tape like the Windows program does. Then again, you can have the whole office or home print with one printer my way.

There are more tape sizes than what your program lists. Where's the 9mm tape in the program, what about 18mm?

12mm and 9mm tapes are practically the same thing. 9mm is exactly as wide as the PT-1230PC's printing head. For 9mm tape, select 12mm from B-Label. Ditto with 24mm and 18mm, go with 24mm. Should you encounter other sizes, I need to have my hands on the tape to determine its size and position. If you can't afford to send me one, use blabel-print.pl to print out the file called test-picture.png, it should be in /usr/share/blabel/ directory. Take a photo of the outcome and the tape cartridge's label and send those to me. I'll see what I can do.

The cutting option does not work in PT-1230PC!

This model has no hardware to cut the tape automatically. The firmware however understands the cut command and will cause the printer to print a dotted line where the larger model would have made the cut. I have no control over the line's appearance in B-Label.

Contacting me

You can mail me at blabel@sendnospam.info.