QR codes from box-drawing characters


▛▀▀▌▟▐▘▛▀▀▌
▌▓▌▌▜▗▘▌▓▌▌
▌▀▘▌▌▗▌▌▀▘▌
▀▀▀▘▙▙▌▀▀▀▘
▓▟▖▀▐▌ ▓▙▀▖
▚▀▖▘▄▗▘▞▄▗▘
▘▝▘▘▓▙▚▄▚▖▌
▛▀▀▌▀▚▟▐▛▀
▌▓▌▌▖▟▝▜▙▐▖
▌▀▘▌▞▌▚▄▌ ▘
▀▀▀▘▘▝▘▝▝▝

I’ve been increasingly interested in QR codes as of late, for reasons that Glenn Fleishman articulated far better than I could. I also just find them rather fascinating as a format. There’s a lot of redundancy to account for errors and damage (wonderfully demonstrated here), and a handful of possible masks that overlay all of the data means that the exact same data will have myriad possible representations. I’ve also been curious as to the most efficient ways to store and present the data (GIFs and 1 bit/pixel PNGs done at the pixel-level and then scaled up seem pretty good1), and got to wondering if Unicode Block Elements (2580-259F) would work. As above, they seem to, albeit with the entire block scaled to 60% vertical height and the line-height condensed. Also, Hack (the monospace font I use on this site) seems to render 2588, FULL BLOCK, as a quarter-sized block centered in the space that it should be filling up all of. So I substituted 2593, DARK SHADE, which works. Also, the squareness and contiguousness of the thing seems to be crucial for recognition, far more so than the integrity of the actual data within.

This was a truly pointless exercise, but hey, it’s a thing that can be done.


  1. Humorously, the GIF is less than half the byte size of this UTF-8 rendering, and the PNG only slightly larger than the GIF. ↩︎