Skip to content

About

I got curious about why QR codes look so dense, started reading the spec, and found that a large part of a typical code carries no meaning at all. This tool came out of that.

What it does

Paste a URL and it produces a QR code with as much black stripped out as possible. An ordinary code is around 47 percent black in the data area; this gets down to 12 percent depending on settings. You can also draw stripes or shapes into the blank space.

The method is written up in full in how the blank space works. In short, decoders ignore the padding region, so its bits are computed to cancel the mask and render white.

How it is built

The QR encoder is written from scratch with no dependencies, covering versions 1 to 10 and error levels L, M, Q and H. In strict spec mode it matches the reference `qrcode` library bit for bit across every one of those combinations.

Encoding, rendering, and the self-check that decodes the finished code all run in your browser. Nothing is sent to a server.

Things to watch

Emptied codes are more sensitive to poor conditions than ordinary ones. In dim light or at small print sizes they can fail. Test on real devices before using one somewhere that matters, and read making it scan reliably first.

The padding contents differ from what the spec prescribes. Real decoders never read that region, so it works, but it is not strict conformance. Strict spec mode is available in the tool if you need it.

Contact

Bug reports and suggestions are welcome on the contact page.