Masking Tape Plotter

Make Beautiful Big Labels Practically for Free

Similar projects worth following
This is an appliance that plots labels on ordinary masking tape. It uses Hershey Fonts and GRBL and the stepper assembly from a DVD drive.
What makes it noteworthy (other that the fact that it is the first of its kind) is that the DVD drive assembly has not been used as a whole as in so many "tiny CNC machine" projects, but I designed a custom y-carriage with 3mm steel rods, bronze sinter bearings and a 3d-printed "nut". I used both FreeCAD and Blender as both apps have their specific strengths.
Inspiration was drawn from Eggbot and Axidraw, one could even say that this machine is the synthesis of those two.

This hack was only possible because the awesome hf2gcode utility written by Andreas Weber (Andy1978 on github). He went out of his way to implement the missing support for Umlauts, which are very important for labelling things in German.


I built essentially a drum plotter, but one that uses masking tape rolls as the drum. The hardest part was to construct a z-axis that had almost no friction so the pen could fall down using just gravity alone. That part I had to heat up with a heat gun to re-melt the plastic (PETG) so the sinter bronze bearings could settle and re-align themselves. Any way, it was only after completion of the mechanics that I realized that I should have just pivoted the whole y-carriage, so that is for a later iteration of this design. 

The y-axis is the only axis that gets homed by a limit switch, the x-axis goes through some funny motion where it's first zeroed and then retracted for 295mm. This is wacky and needs to be done better in a further iteration too.

Most of the parts were designed using the realthunder branch of FreeCAD, i learned a lot by doing so. I used Blender for the bit that contacts the lead screw's groove, as it was small and I had a concrete idea how to solve the problem of  designing the helical ridges in that small block of plastic that gets pressed against the lead screw by a strip of brass sheet metal. 

Oh yeah, the whole y-axis thing: I was intrigued by all those projects that used DVD drives to do CNC stuff, but all the wasted real estate by using the whole drive assembly as is was putting me off. So I studied how to replicate the DVD sled assembly, which meant buying sintered bronze bearings and integrating them into 3d-prints. In the end I had a very compact y-carriage whereas I would have had to support a humongous DVD-drive on top of that roll of masking tape. 

The z-axis was originally  just a printed tube in which a marker pen of a specific make could slide up and down without too much friction or wobble. But the PLA I used for the part soon contracted or some such and the pen was stuck. So I went to the effort of building a z-axis using two 3mm rods and bronze bearings being inspired by the axidraw plotter. 

Doing so greatly increased the precision and enabled the machine to plot almost microscopically small letters (2mm height) using a very sharp pencil in the tool holder. 

On the x-axis I am using a NEMA-17 stepper directly connected to the spool holder. As the 200 steps are nowhere close to the required angular resolution i simply went for the maximum amount microstepping (16x) and that worked out to be just about enough to not show visible artifacting. 

I initially used the machine connected to a laptop running inkscape with the Hershey-Text plugin for the creation of the "artwork" and bCNC for turning it into gcode and for sending the gcode to GRBL. This proved to be impractical for the long run, because I tended to forget how to operate all the different bits and pieces that made up the working system. It also forced my to make notes at the place where I needed to have a label and then walk through the house to the computer and design the label and plot it out and then I had to walk back with the sticky label in my hand to apply it.

So I needed a self contained solution. I first found a bit of code that generated SVG from a string of text that I then could turn into gcode by another utitlity and then I used a self written gcode sender (IIRC). This worked with a laptop, but on the types of SOCs that I had lying around (RPis and Odroids of the first generations) this was way too resource intensive because hersheytextjs used nodejs, which took way too long to start up on those anemic machines. 

So a bit later I found hf2gcode, which could directly produce gcode from a string of text. I also settled on an Odroid-C1 as I had some of those kicking around in a drawer together with matching 3.2inch LCD screens, so I only needed a keyboard and I was set. I chose a 2.4GHz wireless keyboard as I didn't want to deal with the headache of getting bluetooth running on the Odroid. 

I also wanted battery power for my machine, so I used 3 18650 cells in series with a 3s protection...

Read more »


x-blender - 796.39 kB - 05/08/2022 at 18:57



A bunch of scripts and arm executables that can be installed on an Ubuntu 20.04 install on an Odroid-C1 embedded computer with a 3.2 inch TFT display.

gzip - 14.11 kB - 05/07/2022 at 19:08



The main CAD-file for FreeCAD.

fcstd - 4.26 MB - 05/07/2022 at 19:06



A support for a hacked up pair of scissors that is held perpendicular to the tape.

x-blender - 845.88 kB - 05/07/2022 at 19:05



This is the part that grips the groove on the lead-screw.

x-blender - 795.14 kB - 05/07/2022 at 19:03


  • 1 × NEMA17 stepper motor standard China fare
  • 1 × 1 DVD drive stepper assembly from scrapped DVD drive or aliexpress
  • 4 × 3mm steel rods
  • 1 × sintered bronze bushings (3mm ID, 6mm OD) for Y and Z axis
  • 1 × mini RC servo

View all 16 components

  • Bart Dring is awesome

    michimartini05/29/2022 at 18:25 0 comments

    Bart Dring, the guy who made the pen servo patch for Grbl has not been resting on his laurels, but created a whole new Grbl derived CNC controller firmware called FluidNC, which has support for both RC-servos and Solenoids. 

  • more progress

    michimartini05/29/2022 at 18:20 0 comments

    Slow progress on a simplified version using a pivoting z-axis. I realized that it's quite hard to exactly reproduce the Grbl settings that I used on the first version. But there are now exciting new options with Grbl running on ESP8266 or ESP32. I could for example use a smartphone to have the gcode generated by a webservice and then upload the whole resulting gcode to Grbl via wifi. 

  • simplify, then add lightness

    michimartini05/12/2022 at 22:14 0 comments

    The y-axis is getting radically simpler:

    Yes, that's the whole thing. Gets rid of a whole lot of parts. Will have to see how this will hold up over time. 

    A marker pen is a very simple thing to make, So I made my own, adding lightness.  Edding sells replacement nibs, so that's what i used here. 

    The z-axis will change from the linear kind used now to a pivoting style, like on an egg-bot. 

View all 3 project logs

Enjoy this project?



Granvanoeli wrote 01/02/2024 at 13:21 point

Hello! This is an amazing project and I have been trying to make one myself! However I am having trouble with the servo with the Z axis. I can control X and Y no problem through UGS but I cannot manage to make the servo move. It is a known working servo and it is not plugged into the Z axis next to the others, it is connected to GND and 5V on the opposite side of the CNC shield (just below the power plug). It is also connected to Z+. I had to modify the cpu_map file for Arduino Nano by changing the pins number to make the X and Y work so I was thinking maybe I need to do something similar to get the Z axis working? Any help would be super appreciated!!

  Are you sure? yes | no

psylux wrote 07/05/2022 at 16:47 point

any chance to get clean STLs of the source files?

  Are you sure? yes | no

Paul McClay wrote 06/12/2022 at 02:51 point

Neat Z axis progression of increasing simplicity.

  Are you sure? yes | no

Frank Herrmann wrote 05/13/2022 at 14:40 point

For cutting I would perhaps take a laser, one with 0.5W should be enough. This you can then slowly lead from one side to the other :)

  Are you sure? yes | no

hernangarage wrote 05/12/2022 at 19:46 point

While we are in 2022, you are living on 3022.... 

  Are you sure? yes | no

greg.ewing wrote 05/12/2022 at 06:27 point

And it's DRM-free! Take that, Dymo!

  Are you sure? yes | no

Bumbee wrote 05/12/2022 at 02:13 point


You can also add an infrared pyroelectric sensor to control the lights on and off, which is fully automatic  

  Are you sure? yes | no

Benedikt Müssig wrote 05/11/2022 at 17:55 point

It would make sense to develop a new version that runs on 8-bit microcontroller and has the missing cutting and alignment functionality.

  Are you sure? yes | no

michimartini wrote 05/12/2022 at 22:01 point

Yes, the SBC is overkill, but was fastest to get going. Hey, it's progress from having to connect a full laptop. The problem with the 8bit micros is then how to input the text. There are no keyboards with uart or spi connection (ok, i hear there are some macbooks that use spi internally for the keyboard, ...). There are usb-host shields for Arduino, that might be a solution. Otherwise i would have to branch out to building custom keyboards dealing with the 8x8 matix stuff and all that fun stuff. Just too much at the moment, i am busy simplyfing the mechanics first. Then I think i will build one with a RPi zero and an oled display, because that is something you can buy today and works basically the same as what I have now.

  Are you sure? yes | no

michimartini wrote 05/13/2022 at 13:17 point

Scratch that remark about the RPi zero, those are now just as sold out as the rest of them. There is a BananaPi zero though, those you can still buy. 

  Are you sure? yes | no

Andreas Weber wrote 05/15/2022 at 18:15 point

libhf2gcode is designed to run on an Atmega 8-bit RISC, this was its initial purpose. See which has a 8x8 matrix keyboard, a HD44780 based LCD and supports text with multiple lines (and is ready 200ms after power-on...)

  Are you sure? yes | no

Xabi Spacebiker wrote 05/11/2022 at 16:04 point

This is fantastic, I love the idea. Congratulations !

  Are you sure? yes | no

Yves wrote 05/11/2022 at 16:01 point

I love this !  Soo original and absolutely for me.  I always use making tape to identify my stuff. Now just got to find time to build this.  

  Are you sure? yes | no

teraz wrote 05/10/2022 at 16:51 point

incredible idea

please add to gui icons, 💉 ⚓ 🦠 etc

  Are you sure? yes | no

michimartini wrote 05/10/2022 at 17:09 point

You mean the ability to plot arbitrary symbols? Yeah, i thought about automatically replacing things like [hk] with a plot of a hellokitty character for example. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates