torn and scratched.
readable anyway.
why?
image: ai-generated (gpt-image-2)

try it: a piece of this code is missing

whoever designed this assumed it would be damaged, and paid for it in advance.
qr version 4, level h. checked with a decoder: blurred, rotated, shrunk to 260 px, saved as jpeg quality 45

errors are not bad luck, they are arithmetic

the question is not how to avoid errors. it is how to notice them.
at an error rate of 0.1 % per bit

the check as a box, twice

redundancy is bits that carry nothing new, and earn their place by what they rule out.

one bit that only says: even or odd

one extra bit per byte, and every single flipped bit shows.

where one bit is not enough

a check that misses half the cases is not a guarantee. it is a filter.

from one bit to a checksum

more check bits do not catch more errors. they let fewer slip past.

a fingerprint for a whole file

any amount of data in. always the same short number out.
sha-256, the hash your computer uses for downloads · computed 15 sept 2026

and one bit changes everything

no similarity survives. that is exactly what makes it a test.
grey: characters that happen to match · yellow: characters that differ

three checks, three jobs

the hash decides. the frame checksums are how you get there.

one flipped bit in the raw picture

a picture that displays proves nothing.
real file, 256 × 256 points · parrot: ai-generated (gpt-image-2)

the same bit, in the packed file

packed data has no air left. one wrong bit, and the rest is gone.
measured 15 sept 2026 · same picture, same kind of error, different format

try it: break a byte yourself

redundancy is paid in time

noticing is nearly free. repairing by repetition is not.

try it: where did the bits go?

repair without asking: say it three times

you can repair without a return channel. you pay for it on every bit, forever.

repair by asking: send that one again

on a slow link, asking again beats paying in advance.
which one do you build?
a return channel: check, and ask again when it fails
no way to ask back: send everything more than once, and pay every time
you have a return channel. use it, keep the check small, and put the time you save into speed.

today

1 errors are arithmetic, not bad luck: enough bits, and one goes wrong
2 redundancy is bits that carry nothing new and rule things out
3 parity catches odd flips, a checksum catches almost everything, the hash decides
4 a picture that displays proves nothing
5 noticing costs 1.6 %. repeating everything costs 200 %. asking again costs only when it breaks.
this one you can see.
the dangerous one
you cannot.
image: ai-generated (gpt-image-2)