QR code error correction, tested live
Every QR code can repair itself. How much depends on its error correction level. Pick a level, damage the code, and a real QR decoder running in your browser tells you whether it still reads.
Version 0, 0 × 0. Level M can rebuild up to ~15% of its codewords. Blots that straddle several codewords cost more than their area suggests, so real limits land a little below the headline figure.
What the four levels mean
| Level | Recovers up to | Capacity (bytes, version 10) | Use it for |
|---|---|---|---|
| L | ~7% | 271 | Screens, long data, clean conditions |
| M | ~15% | 213 | Most printed material (the default) |
| Q | ~25% | 151 | Outdoor, warehouses, rough surfaces |
| H | ~30% | 119 | Logos in the centre, high-wear labels |
Capacities in byte mode from the ISO/IEC 18004 tables.
How a QR code repairs itself
Your data is split into 8-bit codewords, and a Reed–Solomon code, the same family of maths that protects CDs and deep-space probe signals, adds extra codewords computed from them. Level H adds enough to rebuild roughly 30% of the total. A scanner that finds a mismatch solves for the missing values instead of guessing.
Two details explain the results above. First, the percentage refers to codewords, not area: a blot that clips the edges of several codewords damages all of them, so random blots break codes sooner than one neat square of the same size. That's why a centred logo is the "cheapest" damage. Second, the three finder patterns in the corners aren't protected at all. That's why the simulator never covers them.
Error correction is also why the logo generator forces level H, and it's a reason to leave M alone for everyday print: each step up adds modules, which the size calculator shows as a bigger minimum print size.