Thermal QR Code Sticker Success!

I could not be happier with how this little thermal label printer turned out!  The highest use case I had for it was to create small QR codes I could stick in my various maker notebooks so that I could easily connect specific pages in my notebooks back to blog posts, essentially being able to embed unlimited digital resources into a simple page.

Basically, I arranged the QR codes and text in Inkscape, exported to a flat JPG, saved to my phone, and then printed.

The failed prints you see were printed at Dense, Medium, and then Light, but all came out useless. I realized it was because I had exported the image at 72 DPI, which meant that once the image was exported to either PNG or JPG, the image had gray aliasing between what should have been sharp black and white edges.  This caused the printer to treat the grays as black, which meant the black areas were obscuring the lighter areas, making it harder to scan the images.

I exported at 900 DPI and it printed on “Light” flawlessly. Each QR code sticker is only 12.5mm square, I can fit 8 of them per sticker sheet, and each includes a short label, and can be read by my phone very easily.  Now, I don’t think a 900 DPI image is required to print fine details, but I figured why the hell not give it a shot?

The first website QR code generator I tried was actually a sneaky website.  Rather than creating a QR code for the destination, it ran the URL’s through their own URL shortener, then output that QR code.  I chose that generator since it permits you to select the desired error correction level, but the result was basically useless to me.  If I wanted a QR code pointing to a short-code, I would have pointed it at my own short URL service.  While an unshortened URL will create a larger or more dense QR code, it has the benefit of being somewhat transparent.  When you scan an unshortened URL, your scanning app can show you the destination that would be hidden by a URL shortener.  I ended up using this website to generate the QR codes which allows you to specify the URL, choose from various error correction levels, and then download in a variety of formats.

I was able to pack detailed, unshortened, URLs into just 12.5 mm square plus 4.5 point font labels.  I might be able to print smaller than this, but I don’t have any pressing need to do that.  I’ve seen some suggestions a QR code should be printed at least 10mm square, and this is just above that limit.  However, I suspect those guidelines are for commercial use, whereas these codes are likely to be rarely scanned and don’t need to be optimized for widespread use – just for my own personal benefit.

Thermal Sticker Printer
  1. QR Codes and Avatars
  2. Sticker Printer
  3. Thermal QR Code Sticker Success!

Sticker Printer

I recently purchased a small thermal label / sticker printer after seeing what amazing things @Alpenglow was doing at Teardown 2025.  I quickly picked picked one up and posted a few notes.  The bluetooth connection was a little finicky, but Android app worked well enough.  I was able to print over USB without a lot of fuss, which was great.  I was surprised that I could do so much image manipulation within the app itself.

First few test prints

I was shocked at the speed and quality of these little prints.  One of the reasons I wanted to get this little sticker printer was to add QR codes to my notebooks.  I had experimented with using my laser printer to print on packing tape, masking tape, and scotch tape.  I probably have the pictures to match these experiments somewhere, but the methodology was print some rectangles for text on a sheet of printer paper, layer packing tape over those sections, put pieces of packing, masking, and scotch tape over the areas where I was going to print.  The packing tape became a melted mess, the masking tape held the design – but smudged quickly and easily, and surprisingly the design on the scotch tape held up.  Still it was a pretty big hassle and could easily gum up my sturdy Brother printed with melted plastic.

Where was I?  A sticker printer!!!  Okay, when I am working on a project, whether that’s fleshing it out on scratch paper, putting it in a notebook, or putting together a big blog post, I sometimes wish the transition between an analog page and a digital resource (image, download, link, etc) was a lot easier.

The sticker printer I purchased came with stickers that are about 1.5″ tall by 2.75″ wide.  I think this would be enough for me to create multiple QR codes with pre-defined links to be printed at once, then store them on a sheet tucked into a notebook flap.  When I need to “embed” a link, peel the sticker, apply to page, then update my YOURLS installation so the short URL points where I need it to go.  Here’s a mockup:

Sketch idea for multiple small QR codes on stickers for a “smart” notebook

I’ll play with the idea more tomorrow…

Thermal Sticker Printer
  1. QR Codes and Avatars
  2. Sticker Printer
  3. Thermal QR Code Sticker Success!

DIY Carved Eraser QR Code Stamp

After some modest success carving some neat designs into pink erasers, I tried making a QR code stamp.  It didn’t work well at all, with exactly just one impression working … sometimes.

The first attempt took a really long time and turned out terribly.  After a few days break, and some mental distance from the project, I returned with some new ideas and inspiration.

Here was my new approach and plan:

The Stamp

  1. Go Slow.  Proceeding slowly and methodically is always a good idea with sharp instruments.  I went fairly slowly the first time, but this time I would be even more methodical.
  2. Cutting.  Rather than using the carving blades for the QR code features, I switched to using a craft knife.  It was just too hard to cut precise lines with a V or U shaped blade, managing not just the direction and speed of the cut – but the depth as well – for both sides of the blade.  The craft blade let me focus on just one side at a time.  I used the blade to cut at about a 45 degree angle along one side, then other side.
  3. Don’t Cut Too Much.  I used calipers to measure the pixels cut into my first attempt as well as the stamped result.  I discovered \the stamp pixels were very slightly larger than their rubber counterparts.  This tells me it would be better to cut too little rubber – and cut more later if necessary.
  4. Removing Scraps.  Rather than sticking my big old fingers into the eraser or trying to pop it out with the blade, I used a pair of 3D printed tweezers to pluck them out.

The QR Code

  1. Optimize the QR Code.  There are several ways to optimize a QR code for eraser / stamp carving. 1.  I used as many of these methods as I could:
    1. “Pixel” Size.
      1. As you add more information into a QR code, the QR code generator will need to use more black and white units2 to encode the information.  After some tinkering it seems like the smallest QR code that can be generated is 441 total pixels, 21 wide by 21 tall.  The absolute largest QR code I could generate looks like one of those “magic eye” posters.  I didn’t even try to count how many pixels wide this thing was.  It’s 9,216 pixels, 96 wide by 96 tall.
      2. I was having a hard time carving a stamp 21 pixels wide into a 24.5 mm3 wide eraser, so the idea of carving more than 21 lines into an eraser by hand seemed not feasible.  The very next step up from the 21×21 grid would be a 25×25 grid, so I knew I had to find a way to limit the data, find the best error correction, and find a way to cut these small pixels and thin features.
    2. Proper Error Correction.
      1. QR Codes have built in “error correction” that allows the user’s scanning device to scan information from a partially formed, damaged, or obscured code.  These settings range from L (low), M (medium), Q (quality), and H (high quality) able to error correct from up to 7%, 15%, 25%, and 30% damage respectively.  Lowering the error correction allows you to create a smaller QR Code, but it will also be less robust.
      2. I fiddled with these settings a lot to find the maximum amount of data I could put into a QR code while still retaining a maximum size of 21×21 pixels.  I was able to encode about 16 characters in a L, 13 characters in a M, 10 characters in a Q, 6 characters in a H.  The code stores numeral easier and requires more pixels to store letters and special characters.
      3. My first attempt used an error correction level of L, but was basically unusable as there must have been more than 7% distortion.  This time, I decided to try for a very high level of error correction with the Q setting for 25%.
    3. Reducing Data.  This is where I used some tricks you may, or may not, be able to replicate.
      1. URL Shortener.  A TinyURL link to my Instagram page requires 29 characters.  Looking above, this would immediately suggest a 21×21 pixel QR code would not be possible.
      2. Trimming a Link.  After some fiddling, I realized that as long as the data encoded looked like a URL (as in some characters separated by a “.”), the QR code scanner would interpret it as a link.  This means we can skip the “http://” and “https://”, saving 7-8 characters!  Unfortunately, this still doesn’t let me encode the shortest URL that TinyURL could give me which requires 20 characters after discarding the “http” stuff.
      3. Maybe Just a Domain?  Maybe you just wanted to point someone to your website and not a big long link, shortened with a URL shortener.  Let’s work the numbers backwards.  Most commonly used domains end with “.com”, “.org”, “.biz” – with 4 characters each.  Using the information above, this means we could use a domain name with up to 12 characters for an L encoded QR code, 9 for an M, 6 for a Q, and just 2 for an H.  While it would be easy to find a 12 character domain, you’re stuck with only a 7% margin for your error correction.  A domain with 6 to 9 characters for Q and M would allow for 25% and 15% error correction.  You can still find 6 character “.com” domain, but… they’re unlikely to be very memorable.  This isn’t necessarily a problem.  You might be able to find a good short domain with an unmemorable name, but forwards the user to your real website.  The problem, of course, is that no one is going to want to click on that link.
      4. How About a custom URL Shortener?  It’s still possible to purchase a short URL, but they’re pricey.  I happened to buy a good one several years ago and have hung on tightly to it.  I slapped a YOURLS install on it, and have been using it ever since.  Using my own URL shortener means I can keep the URL down to just 9 characters – including the TLD!

Okay, back to carving.  I grabbed my headphones, put on some music, and took it very slowly – a little under two hours.  Here’s some progress photos:

Here’s how it looked (with some additional shots to show the original design overlaid):

I stamped this design 9 times – and all 9 were more or less easily scannable.  The neat thing about this design is that it points to a URL shortener I own, so not only is it about as tiny as possible, but I can change the destination if I ever needed – without having to spend two hours recarving an eraser stamp!

Eraser Stamp Carving
  1. Carved Eraser Stamping
  2. Further Adventures in Eraser Carving
  3. DIY Carved Eraser QR Code Stamp
  1. I won’t get too much into the weeds on the actual method of generating QR codes, mostly because I haven’t studied the math in it, but I did find a great article which has a lot of good background info and explanations []
  2. I’ll call them “pixels” from this point forward []
  3. Just barely under an inch []

Further Adventures in Eraser Carving

I thought it would be neat to try cutting a QR code stamp.  (Skip to the end to see the one time I was able to get the stamp to work)

Getting the pattern ready for carving
Getting the pattern ready for carving

The obvious problem is this would require an incredibly detailed and precise approach to carving.  To get the smallest QR code that can still contain a URL, it would be limited to 16 characters, the lowest error correction (7%) rate, and would still have 21×21 pixels (441 total).  After a little testing, I realized the code needs a little white space around the QR code to read properly.  This means 23×23 pixels all carved into a less than 1″ square area.  I know from the design of the eraser carving station that the eraser is 24.5 mm wide… so each pixel is roughly 1mm square.

I tried several things that definitely did not work well:

    • Printing the design in one of my templates, trimmed, colored in with a pencil, taped in place, then rubbed onto the eraser to transfer the design.
    • This didn’t really work very well since the pencil trace to rubbing process introduces a lot of error.  I tested this by trying to scan the reversed drawing on the eraser.  Didn’t work at all.
    • The 1mm wide pixels would have been a nightmare to cut with even the smallest carving blade, so I switched to my craft blade.  The blade is so sharp and incisions so thin, that many times it was difficult to see where or whether I had made a cut.  Once I switched from a vertical cut to a 45 degree angle, it seemed to get a little bit easier and cleaner.
    • After I was about a quarter done I tried using a fine tip sharpie to color in the pixels.  After a lot of hassle, I could get this to scan, so I kept going.
    • The darkened pattern was still a bit messy and my cutting wasn’t significantly better.
    • I flipped the eraser over and tried a new tactic.  I taped a template to the eraser and tried to cut the design through the paper.  This didn’t work well because when I cut very small pixels out of the design, the paper quickly lost cohesion and then became useless.
    • Finally I pulled up a large picture of the QR code on my laptop and tried to keep to the design as best I could.  It wasn’t pretty – but I was done.

The results were less than stellar.  The leftover ink from the sharpie discolored the inkpad a little and got transferred onto the first few stamp impressions.  Out of a dozen different impressions, only one could be scanned by my phone.

Darkened with a sharpie, partially carved
Darkened with a sharpie, partially carved

If I tried this again (and, let’s be honest, I probably will) I would use the template / pencil transfer method just to place “landmarks” and then refer back to the large display on the laptop.

Stamp, stamp, stamp
Stamp, stamp, stamp

Lastly, I was able to get just one impression that could be scanned:

One single scannable stamp impression
One single scannable stamp impression

The reason the bit of paper is a little oddly shaped is that I had stamped onto a piece of scrap cardstock.  I’d stamped on other pieces of paper, cards, and even on that same piece of cardstock.  This was the one time it worked.

Eraser Stamp Carving
  1. Carved Eraser Stamping
  2. Further Adventures in Eraser Carving
  3. DIY Carved Eraser QR Code Stamp