Waarom werkt mijn QR-code niet meer? Vier oorzaken
Een geprinte QR-code die niet meer werkt, heeft een van vier oorzaken. De link erin vertelt je welke, en of je het zelf kunt oplossen.
Wat is hier nieuw: Een gedateerde waarneming (18 oktober 2026): een uitgezette code op het korte domein van een grote generator antwoordt met HTTP 200 en een pagina "account uitgeschakeld" in plaats van een 404, zodat een statuscontrole hem gezond noemt. Plus een verdicttabel, gegenereerd met de regels van onze eigen QR-codecontrole, die iedereen op de controlepagina kan uitproberen.
Een QR-code die vroeger werkte, gaat bijna nooit stuk op het papier. Inkt verloopt niet. Als een geprinte code niet meer werkt, is een van de vier dingen gebeurd: het bedrijf achter de korte link heeft die link uitgezet, de pagina waar hij naartoe wijst is verhuisd, de print is niet leesbaar, of de code is met een typefout gemaakt. De link in de code vertelt je in minder dan een minuut welke het is, en alleen de eerste heb je niet zelf in de hand.
# De test van 30 seconden: lees de link in de code
Richt de camera van je telefoon op de code en kijk naar het voorbeeld voordat je tikt. Of upload een foto naar onze gratis QR-codecontrole, die hetzelfde toont en daarna elke doorverwijzing erachter volgt. Er zijn drie uitkomsten:
- Er verschijnt niets. De telefoon kan de code helemaal niet lezen. Dat is een printprobleem (oorzaak 3), en knoeien met links lost dat niet op.
- Je eigen adres verschijnt (
yourcafe.com/menu). De code is statisch: het adres is in de vierkantjes getekend, er zit niets tussen, en niemand kan hem uitzetten. Als hij faalt, ligt het aan de pagina (oorzaak 2) of zit er een typefout in het adres (oorzaak 4). - Een korte link op het domein van iemand anders verschijnt (een paar letters, een schuine streep, een korte code). De code is dynamisch: hij stuurt mensen eerst naar de generator, en de generator stuurt ze door naar de plek die de eigenaar heeft ingesteld. Als hij faalt, is de doorverwijzing hoogstwaarschijnlijk uitgezet (oorzaak 1).
Dat derde geval is het moeilijkst te diagnosticeren, om een reden die een eigen kopje verdient.
# Een uitgezette code opent nog steeds een pagina, met HTTP 200
Je zou verwachten dat een dode code een foutmelding geeft. Op 18 oktober 2026 hebben we een
uitgezette code op qrco.de gecontroleerd, het korte domein van QR Code Generator (QRCG van
Bitly). Er werd nergens naartoe doorgestuurd en er kwam ook geen fout terug. De korte link
antwoordde:
HTTP/2 200
content-type: text/html; charset=UTF-8
en de pagina die werd getoond bevatte één component,
<qrcg-web-component-error-account-disabled>, die een melding “account uitgeschakeld”
weergeeft. We publiceren het pad van de code zelf niet, want het is de code van iemand
anders.
Uit dat ene antwoord volgen drie dingen:
- De code is nog steeds te scannen. De telefoon van je klant opent een pagina, alleen niet de jouwe. Daarom luidt de gebruikelijke melding: “de QR-code werkt, maar er staat iets raars”.
- Een simpele linkcontrole noemt hem gezond. HTTP 200 betekent “OK”. Elke uptimemonitor of tool voor kapotte links die alleen statuscodes leest, markeert deze code als in orde. Je moet kijken naar wat de pagina zegt.
- De link wijst aan wie het kan oplossen. Het domein in de code (hier
qrco.de) is van de generator. Alleen die partij kan die link weer aanzetten.
Dit komt overeen met wat het helpcentrum van de generator zelf zegt over het einde van een gratis proefperiode: “Dynamic QR Codes are deactivated and point to a service page rather than the original destination.” Uitgezette pagina’s van andere generatoren zien er anders uit. Sommige sturen door naar een meldingspagina in plaats van er een te tonen op de korte link. Eén waarneming op één dag is een voorbeeld, geen onderzoek.
Onze controle zoekt precies hiernaar. Als de pagina aan het eind van de keten klinkt als een melding “deze code is gedeactiveerd”, te zien aan de titel, het adres of een kleine set zinnen in de HTML zoals “account disabled”, meldt hij dat, ook als de status 200 is.
# Oorzaak 1: de generator heeft zijn korte link uitgezet
Dit overkomt mensen die niets fout hebben gedaan. Een dynamische code loopt via de korte link van de generator, en die link werkt alleen zolang de generator hem aan laat staan. Veelvoorkomende aanleidingen, elk beschreven in de helppagina’s van de generatoren:
- Een gratis proefperiode is afgelopen. Bij sommige generatoren stoppen gratis dynamische codes met doorsturen als de proefperiode eindigt.
- Een abonnement is verlopen of een betaling is mislukt.
- De scanlimiet van een gratis abonnement is bereikt. Helpcentrum van QR TIGER: “Dynamic QR codes created with a Freemium account have a predetermined limit on the number of scans they can receive. Once this limit is reached, the QR code becomes inactive.”
- De code of het account is verwijderd, vaak door een collega die een dashboard opruimt, of doordat degene die het account bezat is vertrokken.
Zo merk je het: de link in de code staat op een domein dat niet van jou is, en de pagina waar je terechtkomt is een melding, een upgradeverzoek of een leeg scherm in plaats van jouw inhoud.
Wat je kunt doen: de geprinte code wijst naar het adres van het andere bedrijf, dus alleen zij kunnen hem weer aanzetten. Je echte keuzes zijn hem bij hen te heractiveren, of eenmalig opnieuw te printen met een code die niet stopt. Als je niet zeker weet welke van toepassing is, laat de QR-codecontrole zien van wie de korte link in de code is.
# Oorzaak 2: de pagina waar hij naartoe wijst is verhuisd of verwijderd
De code werkt perfect en brengt de bezoeker naar een pagina die er niet meer is. Door een
herontwerp van de website is /menu hernoemd naar /our-menu, een pdf is vervangen door een
bestand met een nieuwe naam, of de site zelf is verdwenen.
Zo merk je het: de link in de code is jouw adres (of een korte link die naar jouw adres
doorstuurt), en je komt op een pagina “niet gevonden”, meestal met HTTP 404. Begint het adres
met http:// en serveert de site alleen https://, dan tonen sommige telefoons ook een
waarschuwing of weigeren ze te laden.
Wat je kunt doen:
- Is de code statisch, zet dan op precies dat adres weer een pagina terug, of stel op je eigen website een doorverwijzing in van het oude naar het nieuwe adres. Je webhost of sitebouwer kan dat, en het lost alle geprinte exemplaren in één keer op.
- Is het een dynamische code die je nog beheert, verander dan de bestemming naar de nieuwe pagina. Niet opnieuw printen.
# Oorzaak 3: de print is niet leesbaar
Zo merk je het: de cameraweergave toont helemaal geen link, of leest de code alleen vanuit één bepaalde hoek en afstand. Probeer ook een andere telefoon: als een recente telefoon hem makkelijk leest en een oudere niet, zit hij op de grens in plaats van kapot te zijn.
De gebruikelijke boosdoeners:
- Te klein voor de inhoud. Een code is een raster van modules, en een langere link betekent meer modules in dezelfde ruimte. In onze metingen van printformaat geeft een korte link van 21 tekens bij foutcorrectieniveau M 25 modules breed en een productlink van 116 tekens 45. Bij dezelfde breedte van 25 mm zijn dat modules van 0,76 mm tegenover 0,47 mm.
- Geen stille zone. De standaard vraagt vier modules lege ruimte aan elke kant, en scanners gebruiken die om de randen van de code te vinden. Een rand, een foto of tekst die tegen de code aan staat is een veelvoorkomende oorzaak.
- Laag contrast. Donkere modules op een lichte achtergrond. Licht op donker, bleke kleuren of een code op een drukke afbeelding maken het de scanner moeilijker.
- Schade en ondergrond. Krassen, vervaging, vouwen, weerschijn van lamineren, of een code die om een bolle fles is gewikkeld.
Wat je kunt doen: opnieuw printen. Maak hem groter, geef hem zijn stille zone terug, en test de geprinte versie op de plek waar mensen gaan scannen, met de slechtste telefoon die je kunt vinden.
# Oorzaak 4: een statische code met een typefout
Een statische code is het adres getekend als vierkantjes, dus een typefout is meegetekend:
cafe.com/menu gecodeerd als cafe.com/mneu, of een verkeerd gespeld domein.
Zo merk je het: de link in de code is bijna, maar niet helemaal jouw adres. Een verkeerd pad geeft een pagina “niet gevonden” op je eigen site. Een verkeerd gespeld domein geeft meestal helemaal geen antwoord.
Wat je kunt doen: zit de typefout in het pad op je eigen site, voeg dan een doorverwijzing toe van het verkeerd gespelde pad naar de juiste pagina (dezelfde oplossing als bij oorzaak 2). Is het domein zelf verkeerd gespeld en is het niet van jou, dan kun je er zelf niets aan doen. Print opnieuw.
# Wat de controle concludeert, geval voor geval
Hier loopt dezelfde diagnose door de code achter onze QR-codecontrole,
over zeven voorbeeldantwoorden, een per situatie hierboven. Het ophalen is gesimuleerd (geen
echte codes, alleen voorbeelddomeinen), dus deze tabel laat zien wat de controle uit elk soort
antwoord concludeert, niet wat de code van een bepaald bedrijf vandaag doet. Geval 5 geeft de
body van het qrco.de-antwoord van 18 oktober weer.
| Geval | Link in de code | Stappen (status) | Verdict | Melding uitgezet |
|---|---|---|---|---|
| Statisch, pagina online | https://www.cafe.example/menu |
www.cafe.example (200) | static | nee |
| Statisch, pagina verhuisd | https://www.cafe.example/old-menu |
www.cafe.example (404) | broken | nee |
| Statisch, typefout in domein | https://www.cfae.example/menu |
www.cfae.example (onbereikbaar) | broken | nee |
| Korte link, aan | https://short.example/Ab12Cd |
short.example (301) → www.cafe.example (200) | redirect | nee |
| Korte code, pagina “account uitgeschakeld” | https://qr.example/Xy34Zw |
qr.example (200) | hosted | ja |
| Korte link, naar een pagina “gedeactiveerd” | https://short.example/Zz99Yy |
short.example (302) → generator.example (200) | redirect | ja |
| MostlyQR-code | https://mqr.sh/AB12CD |
mqr.sh (302) → www.cafe.example (200) | mostlyqr | nee |
Zo lees je het:
- static: geen andere site in de keten. Niets kan hem uitzetten; hij werkt zolang de pagina bestaat.
- redirect: de code loopt eerst via de korte link van een andere site. Die site bepaalt waar hij heen gaat, en haar domein is de eerste stap in de keten.
- hosted: geen doorverwijzing, maar de link is een korte code op een site die de pagina zelf serveert (geval 5). Tenzij die site van jou is, bepaalt degene die haar beheert wat de code doet.
- broken: de keten eindigt in een fout of antwoordt nooit.
- Melding uitgezet is een aparte markering bovenop het verdict. Kijk naar geval 5 en 6: beide geven 200 aan het eind van de keten, en de markering is het enige wat ze onderscheidt van een werkende code.
De tabel is gegenereerd, niet getypt: we hebben de eigen regels van de QR-codecontrole over elk voorbeeldantwoord laten lopen en de verdicts overgenomen. Je kunt elke echte code op dezelfde manier uitproberen op de controlepagina.
# Wat dit niet dekt
- Eén generator, één dag. Het
qrco.de-antwoord is één waarneming van 18 oktober 2026. Uitgezette codes van andere generatoren gedragen zich anders, en elk van hen kan veranderen wat de hunne doen. - De grenzen van de controle. Hij volgt hooguit acht stappen, geeft het na acht seconden op, leest alleen de eerste 64 KB van een pagina en herkent een melding aan de hand van een korte lijst zinnen. Een melding met andere bewoordingen krijgt wel een verdict, maar geen markering. En een verdict “redirect” zegt wie de code beheert. Het zegt niet dat de code kapot is.
- Printproblemen worden niet gediagnosticeerd door een linkcontrole. Als de telefoon de code niet kan lezen, is er geen link om te controleren. De controle kan alleen een duidelijke foto lezen.
# De korte versie
- Lees de link in de code met de cameraweergave of de QR-codecontrole.
- Er wordt niets gelezen: print hem groter opnieuw, met zijn stille zone, en test de papieren versie.
- Je eigen adres: repareer de pagina of voeg een doorverwijzing toe op je site. Is het domein verkeerd gespeld, print dan opnieuw.
- De korte link van iemand anders die op een melding uitkomt: alleen dat bedrijf kan hem weer aanzetten.
Als je uiteindelijk toch opnieuw print, kies dan bewust. Een statische code kan niet worden uitgezet, maar ook niet worden gewijzigd. Een dynamische QR-code kan na het printen worden gewijzigd, maar hangt af van het bedrijf erachter. De onze blijven doorsturen naar hun laatst opgeslagen bestemming, ook als je een betaald abonnement opzegt, zolang je je gratis account houdt en MostlyQR draait. Je kunt hier een vervanger maken; de eerste dynamische code is gratis, zonder kaart.
Veelgestelde vragen
Waarom werkt mijn QR-code niet meer terwijl er niets is veranderd?
Meestal omdat de code een korte link op het domein van de generator bevat in plaats van je eigen adres, en de generator die link heeft uitgezet: een gratis proefperiode is afgelopen, een abonnement is verlopen of de scanlimiet van een gratis abonnement is bereikt. Het geprinte patroon is in orde. Alleen het bedrijf dat het korte domein beheert kan de link weer aanzetten.
Hoe zie ik of mijn QR-code statisch of dynamisch is?
Kijk naar de link in de code, in de cameraweergave van je telefoon voordat je tikt of met een QR-codecontrole. Is het het adres van je eigen website, dan is de code statisch. Is het een korte link op het domein van een ander bedrijf, dan is de code dynamisch en bepaalt dat bedrijf waar hij naartoe gaat.
Kan een QR-code vanzelf verlopen?
Nee. Het geprinte patroon bevat geen datum. Een statische code werkt zolang de pagina bestaat waar hij naartoe wijst. Een dynamische code werkt zolang het bedrijf achter de korte link die link aan laat staan.
Mijn telefoon reageert helemaal niet op de QR-code. Wat is er mis?
Dat is een printprobleem, geen linkprobleem. De code is te klein voor de scanafstand, heeft te weinig contrast, is beschadigd of mist de lege rand (de stille zone) eromheen. Print hem groter, donker op licht, met vier modules lege ruimte aan elke kant, en test de geprinte versie in plaats van het bestand.