Gratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teamsGratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teamsGratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teamsGratis abonnement, geen creditcard nodigDynamische QR-codes die je na het printen kunt aanpassenGDPR-conforme scananalysesGemaakt voor bureaus, freelancers en interne teams
Alle artikelen
Vectorillustratie van een QR-code met donkere modules op een lichte achtergrond, met een contrastschaal die het helderheidsverschil tussen module en achtergrond toont
Gids

Mag een QR-code elke kleur hebben? Contrast uitgelegd

Een QR-code kan je merkkleuren dragen en toch betrouwbaar scannen, maar alleen als de modules duidelijk donkerder zijn dan de achtergrond. Ontdek de echte contrastcijfers, welke kleuren saboteren en hoe je brandt zonder de scan te breken.

ScanKit

ScanKit · Organization

· 15 min. leestijd

Mag een QR-code elke kleur hebben?

Kort antwoord: bijna, maar net niet helemaal. Een QR-code kan jouw merkkleuren dragen en toch betrouwbaar scannen, zolang je één regel respecteert waar het formaat sinds zijn uitvinding op leunt. Scanners lezen geen kleur. Ze lezen het verschil in helderheid tussen de donkere modules (de kleine vierkantjes die de data bevatten) en de lichte achtergrond erachter. Krijg dat helderheidsverschil goed en je hebt veel creatieve ruimte. Krijg het verkeerd en de code wordt een decoratief vierkant dat niemand kan gebruiken.

Voor een bureau telt dit zwaarder dan voor een hobbyist. Je zet de code van een klant op verpakkingen, posters, autobelettering en etalages, vaak op klein formaat en in slecht licht, om gescand te worden door elk telefoonmodel van de afgelopen jaren. Een code die scant op de nieuwe iPhone van je ontwerper in de studio is niet hetzelfde als een code die scant op een vijf jaar oude Android in een schemerig café. Deze gids legt precies uit hoe kleur de scanbaarheid beïnvloedt, wat de echte contrastcijfers zijn (en welke veelgenoemde cijfers mythes zijn) en hoe je een code brandt zonder hem te breken.

Hoe een scanner jouw code echt ziet

Wanneer een telefooncamera naar een QR-code kijkt, maakt het niet uit of je modules marineblauw of bosgroen zijn. Het eerste wat de decodeersoftware doet, is de kleur weggooien. Het zet de afbeelding om naar één helderheidskanaal (luminantie) en binariseert die vervolgens: elke pixel wordt gedwongen om óf zwart óf wit te worden, op basis van of die boven of onder een drempelwaarde zit. Het QR-patroon overleeft deze stap alleen als je donkere modules aan de donkere kant van de drempel belanden en je achtergrond aan de lichte kant.

Dit is een hard, onderbouwd feit, geen richtlijn. Denso Wave, het bedrijf dat de QR-code uitvond, zegt het onomwonden: "Het lezen van QR-codes is gebaseerd op het verschil in de hoeveelheid licht die door de zwarte en witte gebieden wordt weerkaatst." Kleur is irrelevant, behalve voor zover het de helderheid verandert.

Het detail waar mensen over struikelen, is hoe die helderheid wordt berekend. De populaire open-source decoder ZXing benadert luminantie als (R + 2G + B) / 4, waarbij groen twee keer zo zwaar meeweegt als rood of blauw. Groen licht draagt dus veel bij aan de waargenomen helderheid, terwijl blauw heel weinig bijdraagt. Die ene formule verklaart de meeste kleurproblemen: een kleur die "donker genoeg" lijkt voor jouw oog, kan voor de binariser veel helderder of donkerder zijn dan je verwacht, omdat de wiskunde niet overeenkomt met de menselijke waarneming.

Betere decoders gaan nog een stap verder. ZXings HybridBinarizer kiest niet één drempel voor de hele afbeelding, maar berekent een lokale drempel over een raster van kleine blokken, en daarom gaat hij goed om met schaduwen en ongelijkmatige belichting. Maar het principe verandert niet: binnen elk gebied moeten je modules duidelijk donkerder zijn dan het papier. Als een verloop of een gekleurde achtergrond ergens midden in de code over die lokale drempel schuift, verdwijnen sommige modules.

De enige regel: donkere modules op een lichte achtergrond

Als je niets anders onthoudt, onthoud dan dit. De modules moeten donkerder zijn dan de achtergrond, en de canonieke, maximaal compatibele QR-code is zwart op wit. Denso Wave beveelt donker-op-licht expliciet aan, en het referentie-decodeeralgoritme van ISO/IEC 18004 gaat ervan uit.

Het omgekeerde, lichte modules op een donkere achtergrond (een "geïnverteerde" code), maakt geen deel uit van de verplichte specificatie. Of een geïnverteerde code scant, hangt volledig af van de decoder. Moderne telefooncamera's op iOS en veel Android-scanners lezen geïnverteerde codes. ZXing doet dat standaard niet, en veel oudere, ingebouwde en kassascanners kunnen het evenmin. Een geïnverteerde code is dus een gok: hij werkt misschien op het apparaat in jouw hand en faalt op een derde van de apparaten in het wild. Voor bureauwerk, waarbij je niet kunt bepalen welke scanner een lid van het publiek gebruikt, houd je de modules donkerder dan de achtergrond en neem je de gok volledig weg.

Dit hangt nauw samen met waarom een code kan falen om redenen die niets met kleur te maken hebben. Als je een code probeert te repareren die helemaal niet scant, behandelt onze gids over waarom een QR-code niet scant de andere gebruikelijke verdachten.

Wat de echte contrastcijfers zijn

Hier doet het internet je tekort. Er circuleren verschillende "minimale contrast"-cijfers, en die komen uit verschillende standaarden die verschillende dingen meten, dus er eentje noemen zonder context is zinloos. Laten we de harde feiten scheiden van de vuistregels.

  • Zwart op wit is ongeveer 21:1 op de WCAG-contrastschaal. Dit is de veilige basislijn waar iedereen tegen afzet, en hij scant in vrijwel elke omstandigheid. Dit is een hard feit.
  • Denso Wave beveelt een contrastverhouding van minimaal 2,0:1 aan, en meldt dat zelfs kleur-geïnverteerde codes op dat niveau prima leesbaar zijn. Dit komt van de uitvinder, dus behandel het als een harde ondergrens, niet als een streefwaarde.
  • Onafhankelijke telefoontests suggereren dat ongeveer 2:1 een realistische praktische ondergrens is: bij 2:1 slagen de meeste apparaten, tussen 1,5:1 en 1,9:1 beginnen sommige apps te falen, en onder ongeveer 1,3:1 is scannen onbetrouwbaar. Dit is empirisch, dus noem het een vuistregel.
  • Veel ontwerpgidsen noemen "minimaal 3:1, liefst 4:1" en schrijven het toe aan ISO. Wees hier voorzichtig: dat cijfer van 4:1 is best-practice-advies, en het lijkt verdacht veel op het WCAG-tekstcontrastcijfer (dat over mensen gaat die woorden lezen, niet over machines die codes lezen). Het is geen letterlijke QR-specificatie.

Dus wat moet je nu echt doen? Mik niet op de ondergrens. Mik hoog. De eerlijke formulering is: maximaliseer het luminantieverschil, behandel zwart-op-wit (21:1) als je referentie, en houd een comfortabele marge aan zodat de code slecht drukwerk, slecht licht en oude camera's overleeft. Een donkere merkkleur op een witte of zeer lichte achtergrond haalt meestal ruimschoots elk van deze drempels. Een middentoon op een middentoon niet.

Pas op voor één specifieke mythe: er is geen geloofwaardige bron voor statistieken als "X procent van de gekleurde QR-codes faalt bij het scannen", en "ISO schrijft 4:1 voor" klopt niet. ISO/IEC 18004 regelt hoe de code wordt gecodeerd; drukkwaliteit wordt apart beoordeeld onder ISO/IEC 15415, dat symboolcontrast als percentage meet, niet als een 4:1-verhouding.

Kleuren die je stilletjes saboteren

Sommige kleurkeuzes falen om redenen die je nooit zou raden door ernaar te kijken op een scherm.

Rode en oranje voorgronden zijn de klassieke valkuil. Veel conventionele barcodescanners (het soort bij de kassa) verlichten met een rode led rond 660 nanometer. Denso Wave waarschuwt dat als zowel de achtergrond als de code rood weerkaatst of absorbeert, de scanner ze niet uit elkaar kan houden. Rode inkt weerkaatst rood licht, dus voor een rood-verlichte scanner kan een rode module op wit papier net zo helder lijken als het papier zelf: nul contrast, geen leesactie. Zelfs voor een gewone kleurentelefooncamera zit verzadigd rood op wit op slechts ongeveer 4:1, wat grensgeval is. Vermijd rode modules op lichte achtergronden.

Pastelkleuren met laag contrast (lichtblauw, geel, lichtgroen als voorgrond) falen omdat de helderheidskloof onder de binarisatiedrempel valt. Ze zien er zacht en on-brand uit, en ze scannen niet.

Verlopen zijn riskant zodra ze ergens in de code de achtergrondhelderheid benaderen. Een verloop van donker marineblauw naar iets minder donker marineblauw op wit is meestal prima; een verloop dat vervaagt naar een bleke tint kruist de lokale drempel en laat modules wegvallen. Houd verlopen donker-naar-donker en ruim weg van de achtergrond.

Metallic-, folie- en reflecterende inkten veroorzaken een ander probleem: spiegelende schittering. Een felle weerkaatsing overbelicht de camera in plekken en vernietigt het lokale contrast precies daar waar de highlight valt. Ze fotograferen prachtig en scannen slecht, vooral op verpakkingen onder winkelverlichting.

Als je doel is om een logo of merkteken in de code te krijgen in plaats van hem alleen te kleuren, is dat een aparte vaardigheid met eigen regels. Zie een logo in een QR-code zetten zonder de scan te breken.

Foutcorrectie is geen contrastoplossing

Er is een verleidelijke shortcut: "Ik zet de foutcorrectie gewoon op niveau H en dan zijn mijn kleuren met laag contrast prima." Zo werkt het niet, en het verschil is belangrijk.

QR-foutcorrectie (niveaus L, M, Q en H, die respectievelijk ongeveer 7, 15, 25 en 30 procent van de codewoorden herstellen) gebruikt Reed-Solomon-codering om modules te herstellen die ontbreken, beschadigd of bedekt zijn: een kras, een veeg, een logo dat erbovenop ligt. Het compenseert geen globaal laag contrast. Als de hele afbeelding niet schoon kan worden gebinariseerd, kan de decoder de modules in de eerste plaats niet betrouwbaar lezen, dus is er niets voor de foutcorrectie om mee te werken. Laag contrast is geen schade. Hoge foutcorrectie verdraagt afdekking, geen vaagheid.

Erger nog, het verhogen van het foutcorrectieniveau voegt meer modules toe, waardoor elke module kleiner wordt bij een gegeven drukformaat, wat de leesbaarheid kan verminderen als de code klein wordt gedrukt. Kies het niveau om de juiste reden: gebruik H wanneer je een logo overheen legt of drukt op een plek waar het slijtage oploopt, en gebruik L of M voor schoon gebruik binnenshuis. We gaan dieper in onze gids over foutcorrectieniveaus van QR-codes.

Drukken verandert je kleuren, dus controleer na conversie

Een kleur die perfect scant op een scherm kan falen in druk, omdat schermen en drukpersen kleur op tegengestelde manieren opbouwen. Schermen zijn additief RGB; druk is subtractief CMYK. Wanneer jouw mooie schermkleur wordt omgezet naar CMYK, kan die verschuiven, en die verschuiving kan het contrast onder de scandrempel laten zakken. Converteer naar CMYK voordat je naar de drukker stuurt, en controleer daarna het contrast op de geconverteerde versie, niet op de schermversie.

Twee specifieke drukregels verdienen hun plek:

  • Gebruik gewoon zwart voor de modules: CMYK (0, 0, 0, 100), geen "rich black". Rich black legt cyaan, magenta en geel onder het zwart, wat misregistratie en inktdoorbloeding veroorzaakt waar de platen niet perfect uitlijnen. Doorgebloede randen vervagen de grens tussen module en achtergrond, precies de grens waar de scanner van afhankelijk is. Puur 100 procent zwart geeft schone modules met hoog contrast.
  • Houd rekening met het werkelijke papier en de afwerking. Crème, kraft of gekleurd papier verlaagt de achtergrondhelderheid en krimpt je contrast. Glanzende of gelamineerde afwerkingen voegen schittering toe. De witte preview op je monitor is niet het oppervlak waarop je code zal leven.

Exporteer drukcodes als vector (SVG of PDF) zodat de moduleranden scherp blijven op elk formaat. Onze volledige gids voor drukvoorbereiding behandelt vector, CMYK en resolutie in meer detail.

Vergeet de stille zone niet

De stille zone is de vrije marge rond de code, en ISO/IEC 18004 vereist dat die aan alle kanten vier modules breed is. Het is geen optionele decoratie; het is hoe de scanner de randen van het symbool lokaliseert. Hier gebeuren twee kleurfouten. Ten eerste tinten mensen de stille zone of laten ze een gekleurde achtergrond erin doorlopen, wat het contrast dat de scanner nodig heeft om de code te vinden om zeep helpt. Ten tweede plaatsen mensen de code op druk artwork zonder enige vrije marge. De stille zone moet dezelfde lichte, helderheidsrijke kleur houden als de achtergrond van de code. Gebrand artwork hoort erbuiten, niet erbinnen.

Test zoals de klanten van je klant zullen testen

De allernuttigste gewoonte is om de uiteindelijke gerenderde of gedrukte asset te testen, niet het ontwerpbestand, op echte apparaten. Specifiek:

  • Test op zowel iOS als Android, inclusief minstens één oudere telefoon, niet alleen de nieuwste in de studio.
  • Test met de native camera-app én een speciale scanner-app, omdat ze laag contrast en geïnverteerde codes verschillend verdragen.
  • Test in realistisch licht, inclusief schemerige en schuine omstandigheden, niet alleen onder studioverlichting.
  • Test op het kleinste formaat en de grootste afstand waarop de code echt gebruikt zal worden. Contrast en formaat beïnvloeden elkaar; een code met grensgevalcontrast die groot scant, kan klein falen. Zie hoe groot een QR-code moet zijn.

Voor een grote of risicovolle oplage proef je op het werkelijke substraat, en als het budget het toelaat, draai je een ISO/IEC 15415-verifier, die het symboolcontrast objectief beoordeelt in plaats van te vertrouwen op je oog.

Er is ook een toegankelijkheidshoek die de moeite waard is om in het oog te houden: hoog contrast helpt ook mensen met een visuele beperking om de code te vinden en erop te richten, niet alleen de scanner. Onze gids over toegankelijkheid van QR-codes behandelt plaatsing, formaat en contrast voor menselijke lezers.

Veelgestelde vragen

Mag een QR-code elke kleur hebben?

Bijna. De modules mogen elke kleur hebben die duidelijk donkerder is dan de achtergrond, en de achtergrond mag elke kleur hebben die duidelijk lichter is dan de modules. Wat je niet veilig kunt doen, is de code inverteren (licht op donker), een voorgrond gebruiken die niet noemenswaardig donkerder is dan de achtergrond, of rode modules op een lichte achtergrond gebruiken. Houd het helderheidsverschil hoog en je hebt volop ruimte.

Welke kleur moet een QR-code hebben voor de beste scanresultaten?

Donkere modules op een lichte achtergrond, idealiter zwart op wit, wat op ongeveer 21:1 contrast zit en in vrijwel elke omstandigheid scant. Als je merkkleur nodig hebt, gebruik dan een donkere, verzadigde merktoon (een diep marineblauw, bosgroen of houtskoolgrijs) op wit of een zeer lichte tint, en blijf ruim weg van de minimumdrempels.

Waarom scant mijn gekleurde QR-code niet?

De meest voorkomende oorzaak is onvoldoende helderheidscontrast tussen de modules en de achtergrond: een middentoon op een middentoon, een pastelkleurige voorgrond, of een geïnverteerde (licht-op-donker) code. Rode of oranje modules zijn een andere veelvoorkomende boosdoener, omdat rood-lichtscanners ze niet kunnen onderscheiden van een lichte achtergrond. Drukverschuivingen (RGB naar CMYK), glanzende schittering en een getinte stille zone breken ook overigens geldige codes.

Mag een QR-code wit op zwart zijn (geïnverteerd)?

Soms, maar het is een gok. Geïnverteerde codes maken geen deel uit van de verplichte QR-specificatie, dus ondersteuning hangt volledig af van de scanner. Moderne telefooncamera's lezen ze vaak; ZXing standaard en veel oudere of kassascanners niet. Voor alles wat naar het publiek gaat, houd je de modules donkerder dan de achtergrond.

Lost een hoger foutcorrectieniveau laag contrast op?

Nee. Foutcorrectie herstelt modules die ontbreken, beschadigd of bedekt zijn, niet een code die te laag in contrast is om überhaupt te binariseren. Contrast is een ander probleem dan schade. Los het contrast op; leun niet op foutcorrectie om een vaag kleurenschema te redden.

Waarom kan ik rode QR-codes beter vermijden?

Veel barcodescanners verlichten met een rode led, en rode inkt weerkaatst rood licht, dus een rode module op wit papier kan voor de scanner net zo helder lijken als het papier: geen contrast, geen leesactie. Rood op wit zit ook maar op ongeveer 4:1 zelfs voor een kleurencamera, wat weinig marge laat. Als rood essentieel is voor het merk, gebruik het dan in het artwork rond de code, niet voor de modules zelf.

De korte versie

Een QR-code kan jouw merkkleuren dragen, maar alleen omdat scanners helderheid lezen en geen kleur, en alleen als je de modules duidelijk donkerder houdt dan de achtergrond. Zwart op wit (rond 21:1) is de veilige referentie; de 2:1 van Denso Wave is de ondergrens, niet de streefwaarde, dus mik er ruim boven. Vermijd rode en oranje voorgronden, pastelkleuren met laag contrast, vervagende verlopen, metallic inkten en geïnverteerde codes. Verwacht niet dat foutcorrectie laag contrast redt, converteer naar CMYK en hercontroleer voor het drukken, houd de stille zone schoon, en test de uiteindelijke asset op echte apparaten op het echte formaat. Brand de code, en bewijs dan dat hij scant voordat hij ook maar in de buurt komt van de drukoplage van een klant.

Delen

Verder lezen