How SR CODE works
SR CODE is an independent 2D code format. It is not a restyled QR code: the finders, module geometry, byte layout and decoder are all its own. Like QR, it can carry any short content; unlike QR, it was designed from the start to look branded and to survive noisy, blurry and partly damaged prints.
Scan reliability vs QR
Same URL, same printed size, same simulated camera. QR at error-correction level Q, decoded with jsQR; SR decoded with the SR core.
| Condition | SR CODE | QR |
|---|---|---|
| Clean / small / tiny | 100% | 99% |
| Strong blur | 100% | 88% |
| Heavy sensor noise | 100% | 21% |
| Stains on 8 % of the code | 100% | 79% |
| Stains on 15 % | 50% | 50% |
| One corner torn off | 96% | 0% |
| Blur + noise + tilt | 96% | 0% |
| Perspective tilt | 96% | 100% |
| Overall | 88% | 65% |
Honest caveats: QR is still slightly better under strong perspective, and a phone's built-in camera app reads QR without any website — SR Codes are scanned at /scan or in the SR Scanner app.
Format at a glance
- Sizes
- 14 versions, 21×21 to 73×73 modules; the smallest that fits is chosen automatically
- Capacity
- 8 to 370+ bytes of UTF-8 (links, text in any language, Wi-Fi, contacts…)
- Error correction
- Reed-Solomon, 40 % parity (repairs ≈20 % damaged bytes), interleaved blocks
- Integrity
- CRC-16 over the content — a mis-read is rejected, never shown
- Finders
- Three concentric rings (1:1:3:1:1) readable at any rotation + an orientation ring
- Geometry
- Four anchors → full perspective correction; a lost corner is rebuilt from the other three
- Placement
- Bytes laid out as compact 2×4 patches so a stain destroys as few bytes as possible
- Privacy
- Encoding and decoding run entirely in your browser; nothing is uploaded