}
FreeQR
Back to Blog
QR-code Foutcorrectie: Waarom Beschadigde Codes Nog Steeds Werken

QR-code Foutcorrectie: Waarom Beschadigde Codes Nog Steeds Werken

Ontdek hoe foutcorrectie bij QR-codes werkt, de vier niveaus (L, M, Q, H) en waarom beschadigde codes nog steeds scanbaar zijn. Kies het juiste niveau met FreeQR.

Een QR-code van een restaurantmenu met een koffiekring over de hoek. Een tuinbord dat drie maanden in direct zonlicht heeft gestaan. Een magazijnlabel besmeurd met vet. Alle drie scannen ze gewoon.

Dat is geen geluk. Elke QR-code bevat redundante data waarmee scanners beschadigde of ontbrekende delen kunnen reconstrueren. De ISO/IEC 18004:2024 specificatie noemt dit QR-code foutcorrectie, en het maakt deel uit van het formaat sinds de eerste standaardisatie in 2000. Een traditionele barcode met dezelfde schade zou onleesbaar zijn.

Belangrijkste punten:

  • QR-codes gebruiken Reed-Solomon foutcorrectie om te herstellen van fysieke schade, conform ISO/IEC 18004:2024.

  • Vier niveaus: L (7%), M (15%), Q (25%), H (30%). Het percentage verwijst naar herstelbare codewoorden, niet naar fysiek oppervlak.

  • Hogere correctie betekent meer schadetolerantie, maar minder datacapaciteit.

  • QR-codes geven nooit verkeerde data. Ze falen op een veilige manier wanneer de schade de correctiecapaciteit overschrijdt.

  • Dynamische QR-codes slaan korte doorstuur-URL's op, dus niveau M biedt ruim voldoende marge voor de meeste toepassingen.

Wat is QR-code foutcorrectie?

Beschadigde QR-code modules rood gemarkeerd en door Reed-Solomon foutcorrectie groen hersteld

Zie het als reservedata die in de code zelf zijn ingebakken. Wanneer vuil, krassen of verbleking een deel van de zwart-witte modules vernietigt, gebruikt de scanner die reservedata om de ontbrekende stukken aan te vullen. De volledige boodschap komt nog steeds door, zelfs als er delen ontbreken.

De wiskunde erachter heet Reed-Solomon foutcorrectie. Irving S. Reed en Gustave Solomon publiceerden het in 1960 aan het MIT Lincoln Laboratory voor satellietcommunicatie, waar signaalruis verzonden data kan vervormen. Hetzelfde algoritme werd later gebruikt in cd's, dvd's, Blu-ray discs en de datasystemen van NASA's Voyager-sondes. Toen DENSO WAVE de QR-code in 1994 ontwierp, was Reed-Solomon een logische keuze. Het had de diepe ruimte al overleefd.

De QR-codestandaard specificeert vier foutcorrectieniveaus. Elk niveau bepaalt hoeveel redundante data de code bevat en, als directe afweging, hoeveel totale data de code kan opslaan.

De vier QR-code foutcorrectieniveaus

Elke QR-code wordt gegenereerd op een van de vier foutcorrectieniveaus. De onderstaande tabel toont wat elk niveau herstelt, hoeveel data het kan bevatten bij maximale grootte (Versie 40, de grootste QR-code in de specificatie) en waar het het beste bij past.

Niveau

Naam

Herstel

Max. capaciteit (V40)

Beste voor

L

Low

7%

2.953 bytes

Digitale schermen, schone omgevingen

M

Medium

15%

2.331 bytes

Binnendrukwerk, flyers, menu's (meest gebruikte standaard)

Q

Quartile

25%

1.663 bytes

Buitenborden, verpakking, slijtgevoelige oppervlakken

H

High

30%

1.273 bytes

Logo's over de code, industrieel, fabrieksomgevingen

Meer bescherming kost opslagruimte. Bij Versie 40 bevat niveau L 2.953 bytes. Niveau H bevat 1.273. Dat is een reductie van 57% in capaciteit ten gunste van schadebestendigheid.

De meeste generators staan standaard op niveau M. DENSO WAVE bevestigt dat het in de praktijk het vaakst gekozen niveau is. M kan kleine krassen, lichte verbleking en vingerafdrukken aan zonder de code groter te maken dan nodig.

Die ISO-percentages zijn echter theoretische maxima. In de praktijk falen codes meestal eerder. Software-engineer Huon Wilson testte 12.800 QR-codeconfiguraties met gesimuleerde schade en ontdekte dat niveau H-codes 60% meer geslaagde scans opleverden dan niveau L. De praktische faaldrempels lagen rond de 6% voor L, 12% voor M, 18% voor Q en 20% voor H. Schade in de echte wereld verdeelt zich niet gelijkmatig, waardoor de code eerder zijn limiet bereikt dan de specificatie suggereert.

Hoeveel schade kan een QR-code overleven?

QR-code met koffievlek in het midden scant nog, terwijl QR-code met gescheurde hoek faalt

De percentages in de tabel verwijzen naar codewoorden (eenheden van gecodeerde data), niet naar fysiek oppervlak. 15% van het oppervlak beschadigen betekent niet per se dat 15% van de codewoorden is aangetast. De reden ligt in hoe de data binnen het raster is gerangschikt.

Verweven van codewoorden

Bij grotere QR-codes wordt de gecodeerde data opgesplitst in meerdere Reed-Solomon blokken en vervolgens verweven voordat ze in het raster worden geplaatst. Een kras die diagonaal over de code loopt, vernietigt geen opeenvolgende codewoorden. In plaats daarvan beschadigt het hier een codewoord, slaat er drie over en beschadigt daar weer een ander. De schade wordt verspreid over meerdere correctieblokken in plaats van een enkel blok te overweldigen. Daarom is een lange kras vaak beter te overleven dan een diep gat op een enkel punt.

Foutdetectie versus foutcorrectie

Reed-Solomon kan twee keer zoveel fouten detecteren als het kan corrigeren. Bij niveau M corrigeert het algoritme tot 15% van de beschadigde codewoorden, maar het detecteert beschadiging in tot 30%. Wanneer de schade het correctiebudget overschrijdt maar binnen het detectiebereik valt, weet de scanner dat de data is aangetast en geeft niets terug.

Dit is een veiligheidsfunctie. Een beschadigde QR-code stuurt je nooit naar de verkeerde website en belast nooit de verkeerde rekening. De code werkt correct of geeft niets terug. Voor betaalcodes en authenticatietokens is dat onderscheid heel belangrijk.

De uitzondering: zoekpatronen

De drie grote vierkanten in de hoeken van elke QR-code zijn zoekpatronen. De scanner gebruikt ze om de code te lokaliseren en te orienteren. Ze worden niet beschermd door foutcorrectie zoals datamodules dat wel zijn. Als een scheur, vouw of sticker een van de drie hoeken bedekt, zal de code vrijwel zeker falen, ongeacht het correctieniveau. Geen enkele hoeveelheid redundantie redt een code met een ontbrekende hoek.

Welk foutcorrectieniveau moet je kiezen?

Dit is wat je kiest voor veelvoorkomende scenario's.

Binnendrukwerk (menu's, flyers, visitekaartjes): niveau M. Schone omgevingen met minimaal fysiek contact. M kan een incidentele vlek of vouw aan zonder de code groter te maken dan nodig.

Buiten of verweerde oppervlakken (tuinborden, bumperstickers, bushaltes): niveau Q of H. UV-verbleking, regen, fysiek contact van voorbijgangers. Deze codes hebben een groter foutcorrectiebudget nodig omdat schade zich over weken en maanden ophoopt.

Logo of QR-codes met huisstijl: niveau H. Een centraal logo bedekt bewust datamodules, doorgaans 20-30% van het oppervlak van de code. Het correctiebudget van 30% bij niveau H vangt dat op. Zonder dat budget gok je erop. Een studie van het AutoID Lab van de University of Memphis testte ontworpen QR-codes en vond dat de scanpercentages gemiddeld 61,5% waren, met een dieptepunt van 9,6%. Ongewijzigde codes haalden ~95%. De grootste oorzaak van falen was schade aan de zoekpatronen in de hoeken.

Digitale weergave (schermen, presentaties, e-mail): niveau L. Geen risico op fysieke schade. De code bestaat als pixels op een scherm. Niveau L houdt de code compact en snel te scannen.

Dynamische QR-codes: niveau M is meestal voldoende. Een dynamische QR-code slaat alleen een korte doorstuur-URL op (bijvoorbeeld freeqr.to/abc123), niet de volledige bestemmingsinhoud. Minder data betekent minder modules, wat betekent dat foutcorrectie proportioneel meer ruimte heeft om te werken.

In de designer van FreeQR zijn de vier foutcorrectie-instellingen gelabeld als Low, Medium, High en Highest (overeenkomend met L, M, Q en H). De standaardinstelling is Medium. Voeg een logo toe en de scanindicator laat zien of het logo te veel modules bedekt voor het geselecteerde niveau. Met dynamische codes kun je ook de bestemming wijzigen zonder opnieuw te printen.

Een kanttekening: foutcorrectie wordt ingesteld bij het genereren van de code. Je kunt het niet meer wijzigen na het printen. Als je niveau L kiest en de code later buiten plaatst, is de enige oplossing een nieuwe code op een hoger niveau. Bij twijfel, kies M.

Wil je zien hoe dit werkt? Maak gratis een QR-code aan op FreeQR en kies je foutcorrectieniveau.

Veelgestelde vragen

Wat is QR-code foutcorrectie?

Extra data die in een QR-code is ingebed waarmee scanners beschadigde of ontbrekende modules kunnen reconstrueren. Het mechanisme maakt gebruik van Reed-Solomon codes, een wiskundig algoritme dat oorspronkelijk is ontwikkeld voor satellietcommunicatie en later is opgenomen in de QR-codespecificatie (ISO/IEC 18004:2024).

Hoeveel van een QR-code kan beschadigd zijn en toch werken?

Tot 30% bij niveau H, 25% bij Q, 15% bij M en 7% bij L. Deze percentages verwijzen naar het aandeel herstelbare codewoorden, niet naar het fysieke oppervlak van de code. De werkelijke overlevingskans hangt af van waar de schade optreedt en hoe deze samenwerkt met het verweven van codewoorden.

Wat zijn de vier foutcorrectieniveaus?

L (Low, 7%), M (Medium, 15%), Q (Quartile, 25%) en H (High, 30%). De meeste generators staan standaard op M.

Welk foutcorrectieniveau moet ik gebruiken voor een logo?

Niveau H (30%). Een centraal logo bedekt doorgaans 20-30% van de modules van de code. Niveau H geeft de scanner genoeg redundante data om te reconstrueren wat het logo verbergt. Een lager niveau gebruiken met een logo brengt het risico met zich mee dat de code niet meer te scannen is.

Kan een beschadigde QR-code verkeerde informatie geven?

Nee. Wanneer de schade groter is dan wat het algoritme kan herstellen, geeft de scanner niets terug. Je krijgt een leeg resultaat, nooit een verkeerde URL of een verkeerd betaaladres. Reed-Solomon kan twee keer zoveel fouten detecteren als het kan corrigeren, dus de code weet wanneer de schade te groot is om betrouwbaar te zijn.


Geschreven door Andy Lee, QR-technologiespecialist bij FreeQR.