image of the developer

ellen wondra

software engineer. pet herder. crafty.

QR Cross-Stitch


Hey all! Last week, I sat down on my couch with my laptop (well, technically, a friend's laptop--THANK YOU, KERRI!!!) and made a lovely little QR code cross-stitch project! When you scan this QR code within the reach of my wifi network, you are logged on to my WiFi network! This is my write-up of that experience.

What is a QR code? 

QR code is an abbreviation of Quick Response code. It's an incredibly efficient way to store information, similar to a UPC barcode, but it scans more quickly and it can hold a lot more information. The information is stored as an image, typically a series of black squares on a white square background, though artists have been creating multicolored QR codes for years.

Squares on a white background is an image style that translates incredibly well to cross-stitch. I have been making nerdy and pixellated cross-stitched designs for years, so I decided to try a cross-stitched QR code.


this QR code takes you to this post!

What is cross-stitch?

Counted cross-stitch is a form of embroidery. It can be done on any type of fabric, but is often done on canvas. The artist makes a series of x-shaped stitches that are uniform in size and the stitches form a picture, like pixels on a screen. The artist also often outlines some of the shapes with non-uniform stitches, called "backstitching."

Retro cross-stitch of a swallow holding a banner that says "all you need is love" with some roses and hearts 

here's a project I finished recently!


The QR pattern: first iteration

The first step in generating the pattern was generating the QR code. Stitchfiddle ( actually creates QR cross stitch patterns for you, but it doesn't have the network login option, so I chose to generate the QR code at instead. I realized in the process of writing this blog post that I could have written the query string out and put the full query into the converter; hindsight is 20/20!

Since I didn't realize I had that option at the time, I generated the QR code at QRstuff, as mentioned above, and then used an online pattern generator to write out the pattern by hand, converting each colored in pixel on the QR code into a stitch. All you really need to make a cross-stitch pattern is a grid of squares and the ability to mark some of the squares off.

I'm not great at visualization (I actually have aphantasia--I literally can't make pictures with my head!) so I decided to stitch the QR code and then configure the text depending on how much space was left.

canvas with "network: The Burrow, password: alohomora" and a QR code

Here it is--it worked beautifully! The only surprise was that you had to hold the picture further away from your phone than seemed natural. I surmised that this is due to x-shaped "pixels" I had created. When I was scanning from close to the fabric, the scanner picked up the triangular whitespace and incorporated it into the data as mushy nonsense (it looks for squares, not triangles). When I held the fabric further away, it didn't pick up these tiny bits of whitespace; instead it read the picture as a whole. Impressionist paintings for QR readers!

Adding more stuff!

Woo! Working QR code! Time for some words, though--sometimes, guests have laptops, and most laptops don't support this network login feature. I went through and counted all the tiny squares between the pattern and the edge, we'll call this number x. I reserved around 10 pixels for allowance and around 7 for the border. leaving me with x - a - b, or x - 17.  I knew I wanted either two or four lines of text, so I picked an alphabet I liked online and spent some time with a pattern generator again, trying it both ways and checking the balance. I decided on the one I wanted, stitched it up, and then tried the QR code again.

It still worked!

Then, I took my border allowance and looked both online and in books to find a border pattern I liked that would be well-balanced. I found one I liked, modified it, and gave it a shot.

But then--disaster! The QR code stopped working!

The QR pattern: second iteration

When I added the border, I placed it too close to the QR code. Remember how we had to hold our phones kind of far away from the code in order for it to work? Well, if you held your phone far enough back for the pixels to render properly, the camera also picked up the border pattern and attempted to parse it as part of the QR code, which came out as gibberish. I had a dilemma--do I undo all of my hard work on the border and try to adjust the pattern so the code scans when you hold your phone far away, or should I try to fix my pixels so the code scans when you hold your phone close enough that it doesn't pick up the border?

I opted to attempt to fix the pixels themselves. Armed once again with my trusty needle and thread, I went through and outlined all of the pixels with an edge exposed to the whitespace in between. In some cases, this got a little hairy, as there wasn't a lot of space between them. I was concerned about the possibility of the excess thread covering up too much whitespace, upsetting the reading.

However, between my luck and my ingenuity, I made a pattern that worked! This beauty is sitting on my wall at home, waiting for guests to come take it for a spin. There are some things I would change if I do it again, but overall I am quite pleased with the results!

framed cross-stitch that says "network: The Burrow, password: alohomora", a QR code, and a floral border

qr code neat and nerdy cross-stitch crafts