Hoe werken QR-codes? Opbouw, foutcorrectie en capaciteit uitgelegd
Wat gebeurt er eigenlijk als je telefoon een QR-code leest? Een heldere uitleg over zoekpatronen, modules, versies, foutcorrectieniveaus en hoeveel data een QR-code kan bevatten.
Gepubliceerd 6 min. leestijd
QR-codes zijn overal — op restauranttafels, pakketjes, treinkaartjes, visitekaartjes en betaalterminals. Toch weten maar weinig mensen wat er in die zwart-witte vierkantjes verborgen zit, of waarom een code nog werkt als een deel ervan door een logo wordt bedekt. In deze gids leggen we in gewone taal uit hoe QR-codes werken.
Een korte geschiedenis
De QR-code (kort voor Quick Response code) werd in 1994 uitgevonden door Masahiro Hara bij Denso Wave, een Japans bedrijf binnen de Toyota-groep. Autofabrieken moesten onderdelen sneller kunnen volgen dan met eendimensionale barcodes mogelijk was. Een klassieke barcode slaat data maar in één richting op en bevat zo’n 20 tekens; een QR-code slaat data zowel horizontaal als verticaal op en kan er enkele duizenden bevatten.
Denso Wave nam patent op de technologie, maar besloot dat patent niet af te dwingen, en het formaat werd een internationale standaard (ISO/IEC 18004). Die openheid is de belangrijkste reden dat iedereen QR-codes gratis kan maken en lezen, op elk apparaat.
De opbouw van een QR-code
Elke QR-code is een vierkant raster van kleine cellen, modules genoemd. Elke module is donker of licht en staat voor één bit. Sommige delen van het raster hebben een vaste taak:
- Zoekpatronen (finder patterns) — de drie grote vierkanten in de hoeken. Hiermee vindt een scanner de code meteen en bepaalt hij hoe die gedraaid is, zelfs als de code ondersteboven staat of schuin is gefotografeerd.
- Uitlijningspatronen (alignment patterns) — kleinere vierkanten (vanaf versie 2) die vervorming helpen corrigeren als de code op een gebogen oppervlak is gedrukt of in perspectief wordt bekeken.
- Timingpatronen — afwisselend donkere en lichte lijnen tussen de zoekpatronen. Ze vertellen de scanner hoe groot elke module is.
- Formaatinformatie — stroken naast de zoekpatronen waarin het foutcorrectieniveau en het gebruikte maskerpatroon staan.
- Witrand (quiet zone) — de lege marge rond de code. Die hoort bij de specificatie: zonder witrand kan een scanner niet zien waar de code ophoudt en de achtergrond begint.
Al het overige bestaat uit data- en foutcorrectiecodewoorden, verweven over het hele raster.
Versies: waarom sommige codes dichter zijn
QR-codes bestaan in 40 formaten, versies genoemd. Versie 1 telt 21 × 21 modules; elke volgende versie voegt 4 modules per zijde toe, tot versie 40 met 177 × 177 modules. Hoe meer data je codeert, hoe hoger de versie en hoe kleiner elke module wordt bij hetzelfde printformaat.
Daarom levert een korte URL een strak, open patroon op, terwijl een lang blok tekst een dicht patroon geeft dat groter moet worden afgedrukt. Als je een code maakt met onze QR-code generator, toont het voorbeeld de versie en het aantal modules, zodat je de dichtheid in de gaten kunt houden.
Coderingsmodi en capaciteit
Een QR-code kiest de efficiëntste coderingsmodus voor je inhoud:
| Modus | Tekens | Max. capaciteit (versie 40, niveau L) |
|---|---|---|
| Numeriek | 0–9 | 7.089 cijfers |
| Alfanumeriek | 0–9, A–Z, spatie en $%*+-./: |
4.296 tekens |
| Byte | Willekeurige data, meestal UTF-8-tekst | 2.953 bytes |
| Kanji | Japanse tekens | 1.817 tekens |
Dat zijn theoretische maxima. In de praktijk blijven codes betrouwbaar scanbaar tot een paar honderd tekens. Wil je meer delen, codeer dan liever een korte link naar een webpagina.
Foutcorrectie: het geheim achter logo’s
QR-codes gebruiken Reed-Solomon-foutcorrectie, dezelfde wiskunde waardoor bekraste cd’s en dvd’s gewoon blijven afspelen. Er worden extra codewoorden toegevoegd, zodat de oorspronkelijke data kan worden hersteld, zelfs als een deel van de code beschadigd, vuil of afgedekt is. Er zijn vier niveaus:
- L (Laag) — herstelt ongeveer 7% van de beschadigde codewoorden
- M (Gemiddeld) — ongeveer 15%
- Q (Kwartiel) — ongeveer 25%
- H (Hoog) — ongeveer 30%
Hogere niveaus maken de code robuuster, maar ook groter, omdat er meer ruimte naar redundantie gaat. Precies dit maakt QR-codes met logo mogelijk: een logo in het midden ‘beschadigt’ bewust een deel van de code, en de foutcorrectie vult het gat weer op. Kies voor een logo niveau Q of H en houd het kleiner dan ongeveer een kwart van het oppervlak van de code.
Tip: foutcorrectie is geen vervanging voor goed contrast. Een code die te licht of te klein is, of geen witrand heeft, kan zelfs op niveau H onleesbaar zijn.
Maskering: patronen leesbaar houden
Ruwe data kan per ongeluk grote vlakken in één kleur opleveren, of vormen die op zoekpatronen lijken, en dat brengt scanners in de war. Om dat te voorkomen past de encoder een van acht maskerpatronen toe — wiskundige formules die bepaalde modules omdraaien — en kiest hij het patroon met de laagste ‘strafscore’. De scanner leest het maskernummer uit de formaatinformatie en draait het masker terug. Je hoeft nooit aan maskers te denken, maar ze verklaren waarom twee codes met bijna dezelfde inhoud er totaal anders uit kunnen zien.
Wat er gebeurt als je scant
Als je je camera op een QR-code richt, gaat de scanner zo te werk:
- Vinden — hij zoekt de drie zoekpatronen en berekent de positie, grootte en draaiing van de code.
- Perspectief corrigeren — met de uitlijningspatronen wordt een scheve code weer een plat raster.
- Bemonsteren — elke module wordt als donker of licht gelezen, met de timingpatronen als liniaal.
- Uitlezen — hij leest de formaatinformatie, verwijdert het masker en verzamelt de codewoorden.
- Herstellen — fouten worden gecorrigeerd met Reed-Solomon-decodering.
- Interpreteren — hij herkent de data (een link, wifi-gegevens, een contactkaart) en biedt de juiste actie aan.
Dat alles duurt maar een paar milliseconden. Probeer het zelf met onze online QR-code scanner, die deze stappen direct in je browser uitvoert op een geüploade afbeelding, een link of je camerabeeld.
Statische vs. dynamische QR-codes
Een statische QR-code bevat de uiteindelijke inhoud zelf: de URL, het wifi-wachtwoord of de tekst. Hij werkt voor altijd, heeft geen server nodig en kan niet worden gevolgd. Een dynamische QR-code bevat een korte doorverwijslink van een dienstverlener. Daarmee kun je de bestemming later wijzigen en scans tellen — maar de code werkt niet meer zodra het abonnement afloopt.
Elke code die je op QR.tools maakt, is statisch: gratis, privé en permanent. Wil je de bestemming later kunnen aanpassen? Laat de code dan verwijzen naar een pagina die je zelf beheert en werk die pagina bij.
Wat kan een QR-code bevatten?
Omdat een QR-code gewoon tekst opslaat, bepaalt het formaat van die tekst wat de telefoon ermee doet. Gestandaardiseerde formaten zijn onder meer:
- URL’s — open een website (
https://…) - Wifi — maak verbinding met een netwerk (
WIFI:T:WPA;S:…;P:…;;) — zie de wifi QR-code generator - vCard — sla een contact op — zie de vCard QR-code generator
- E-mail, sms en telefoon — start een bericht of gesprek met
mailto:,SMSTO:entel: - Agenda-items — voeg een evenement toe met een iCalendar-
VEVENT - Geolocaties — open een kaart met
geo:-coördinaten
De belangrijkste punten
- Een QR-code is een raster van modules met vaste zoek-, timing- en uitlijningspatronen rondom je data.
- Meer inhoud betekent een hogere versie, een dichter patroon en een groter minimaal printformaat.
- Foutcorrectie (L, M, Q, H) zorgt dat codes schade overleven — en maakt logo’s mogelijk.
- Statische codes zijn permanent en privé; dynamische codes zijn aanpasbaar, maar afhankelijk van een aanbieder.
Zelf aan de slag? Open de QR-code generator en maak in een paar seconden een code met je eigen kleuren en logo.
Klaar om je eigen QR-code te maken?
Ontwerp in een paar seconden een QR-code met je eigen logo en kleuren — gratis en zonder account.
Open de generator