QR-Codes erklärt: Kapazität, Fehlerkorrektur und Druckgröße
Ein QR-Code ist ein Raster aus schwarzen und weißen Quadraten, das Text speichert: meist einen Link, manchmal WLAN-Zugangsdaten, eine Telefonnummer oder eine Zahlungsaufforderung. Vorgestellt wurde er 1994 von Denso Wave, damals eine Sparte des Autoteileherstellers Denso, um Bauteile durch die eigenen Werke zu verfolgen; allgegenwärtig wurde er, als Smartphone-Kameras lernten, ihn zu lesen. Derselbe Code lässt sich auch dann noch lesen, wenn ein Teil davon verschmutzt oder verdeckt ist, und wie viel er fasst, hängt von drei Entscheidungen ab: wie viel Text, welche Art von Text und wie viel Beschädigung er überstehen muss. Dieser Ratgeber erklärt diese Entscheidungen und was sie für einen Code bedeuten, den man gleich drucken will.
Was im Raster steckt
Jedes Quadrat ist ein Modul. Die drei großen Quadrate in den Ecken sind die Suchmuster (Finder Patterns): Sie zeigen dem Lesegerät, wo sich der Code befindet und wie herum er liegt. Linien aus abwechselnd hellen und dunklen Modulen zwischen ihnen, die Taktmuster (Timing Patterns), geben den Rasterabstand vor, und ab Version 2 helfen kleinere Ausrichtungsquadrate, eine gewölbte oder schräge Oberfläche auszugleichen. Ein Streifen neben den Suchmustern hält die Fehlerkorrekturstufe und die Maske fest – eines von 8 Mustern, das über die Daten gelegt wird, damit sie nie große leere Flächen oder Formen bilden, die wie ein Suchmuster aussehen. Codes ab Version 7 speichern außerdem ihre Version. Alles Übrige sind Daten und Fehlerkorrektur.
Rund um den Code muss ein leerer Rand frei bleiben, die Ruhezone, auf jeder Seite vier Module breit. Ohne sie findet das Lesegerät womöglich nicht, wo der Code endet, und ein Code, der auf dem Bildschirm einwandfrei aussieht, kann versagen, sobald er vor einem unruhigen Hintergrund gedruckt wird.
Versionen: warum manche Codes dichter sind
Die Größe des Rasters heißt Version. Version 1 umfasst 21 × 21 Module, jede weitere Version fügt jeder Seite 4 Module hinzu, bis hin zu Version 40 mit 177 × 177. Ein Generator wählt die kleinste Version, in die der Text passt; mehr Text bedeutet also mehr und kleinere Module auf derselben Druckfläche. Diese Versionen brauchen einige typische Inhalte bei Stufe M, der häufigsten Wahl:
| Inhalt | Zeichen | Version bei Stufe M |
|---|---|---|
| https://ntools.xyz | 18 | 2 (25 × 25) |
| WLAN-Zugangsdaten mit einem 28-stelligen Passwort | 58 | 4 (33 × 33) |
| Ein langer Link mit fünf Tracking-Parametern | 126 | 8 (49 × 49) |
Der lange Link braucht fast doppelt so viele Module pro Seite wie der kurze. In derselben Größe gedruckt, ist jedes seiner Module nur etwas mehr als halb so breit, sodass man das Smartphone näher und ruhiger halten muss. Den Link zu kürzen ist der wirksamste Weg, einen Code leichter scannbar zu machen.
Wie viel ein QR-Code fassen kann
Ein QR-Code kodiert Text in einem von vier Modi. Der numerische Modus packt Ziffern am dichtesten. Der alphanumerische Modus umfasst 45 Zeichen: die Ziffern, die Großbuchstaben A bis Z, das Leerzeichen und $ % * + - . / :. Der Byte-Modus nimmt beliebige Daten auf und wird von fast jedem Link verwendet, weil Kleinbuchstaben nicht zum alphanumerischen Zeichenvorrat gehören. Der Kanji-Modus ist für japanischen Text gedacht.
Der Standardzeichensatz, den die Norm für den Byte-Modus vorsieht, ist ISO 8859-1, der nur westeuropäische Buchstaben abdeckt. Text in anderen Schriften oder mit Symbolen wie € schreiben die meisten Generatoren, auch der von nTools, als UTF-8, und das Lesegerät muss das erkennen – viele tun das, aber nicht alle. Der größte Code, Version 40, fasst:
| Stufe | Ziffern | Alphanumerisch | Bytes |
|---|---|---|---|
| L | 7.089 | 4.296 | 2.953 |
| M | 5.596 | 3.391 | 2.331 |
| Q | 3.993 | 2.420 | 1.663 |
| H | 3.057 | 1.852 | 1.273 |
Das sind Obergrenzen, keine Zielwerte. Ein Code der Version 40 hat 31.329 Module, und ein Smartphone kann ihn nur lesen, wenn er groß und scharf gedruckt ist. Für alles, was gedruckt wird, gilt: Kurze Inhalte halten den Code gut lesbar.
Fehlerkorrektur: L, M, Q und H
QR-Codes verwenden Reed-Solomon-Fehlerkorrektur, dieselbe Familie von Codes, die auch auf CDs zum Einsatz kommt. Ein Teil jedes Codes besteht aus redundanten Daten, aus denen das Lesegerät Fehlendes wiederherstellen kann. Es gibt vier Stufen, und jede kann etwa diesen Anteil der Daten wiederherstellen:
- L: etwa 7 %.
- M: etwa 15 %.
- Q: etwa 25 %.
- H: etwa 30 %.
Laut Denso Wave wird Stufe M am häufigsten gewählt, Q oder H für verschmutzte Umgebungen wie Fabriken und L für saubere Bedingungen und große Datenmengen. Der Preis einer höheren Stufe ist die Größe: Derselbe Link braucht bei Stufe H mehr Module als bei Stufe M. Die Prozentangaben beziehen sich auf Codewörter, also Blöcke aus 8 Bit, nicht auf Module; ein Kratzer quer über den Code kann daher mehr davon unbrauchbar machen, als seine Fläche vermuten lässt.
Ein Logo in der Mitte eines Codes funktioniert nur, weil die Fehlerkorrektur die Module rekonstruiert, die es verdeckt – es verbraucht also einen Teil dieser Reserve, bevor der Code überhaupt mit Schmutz oder Spiegelungen zu kämpfen hat. Wer ein Logo einfügt, sollte es klein halten, niemals die drei Eckquadrate oder die Ruhezone verdecken und das Ergebnis auf mehreren Smartphones testen.
Die richtige Druckgröße
Die Druckgröße ergibt sich aus der Zahl der Module plus 8 für die Ruhezone, multipliziert mit der Breite eines Moduls. Das Beispiel von Denso Wave selbst ist ein Code der Version 3, 29 Module breit, gedruckt mit Modulen von 0,254 mm: 7,4 mm für den Code und 9,4 mm mit Rand. So kleine Module eignen sich für einen speziellen Scanner, den man dicht an das Etikett hält; eine Smartphone-Kamera auf Armeslänge braucht deutlich größere.
Bei einer Druckbreite von 2 cm einschließlich Rand hat ein Code der Version 2 Module von etwa 0,61 mm Breite, ein Code der Version 8 dagegen Module von etwa 0,35 mm. Muss ein Code klein sein, sollte sein Inhalt kurz bleiben.
- Dunkle Module auf hellem Hintergrund mit starkem Kontrast drucken.
- Die vier Module breite Ruhezone frei von Text, Rahmen und Bildern halten.
- Glänzende Oberflächen und Faltstellen meiden, weil Spiegelungen oder ein Knick dort Module verdecken können.
- Den gedruckten Probeabzug testen, nicht die Bildschirmansicht – aus der tatsächlichen Entfernung und mit einem älteren Smartphone.
WLAN-QR-Codes
Ein WLAN-Code ist gewöhnlicher Text in einem Format, das Smartphone-Kameras erkennen. Bekannt gemacht hat dieses Format das Barcode-Projekt ZXing; zum QR-Standard selbst gehört es nicht:
WIFI:T:WPA;S:Casa;P:correct horse battery staple;H:false;;T ist die Sicherheitsart (etwa WPA, WEP oder nopass), S der Netzwerkname, P das Passwort und H die Angabe, ob das Netzwerk versteckt ist.
Die Zeichen \ ; , : und " werden im Namen oder im Passwort mit einem Backslash maskiert; der nTools-Generator erledigt das automatisch.
Das Passwort steht als lesbarer Text im Code: Wer den Code scannt oder fotografiert, hat das Passwort. Für einen Code an der Wand empfiehlt sich ein Gastnetzwerk.
Statische und dynamische Codes
Ein statischer Code enthält den Inhalt selbst, etwa den Link oder die WLAN-Zugangsdaten. Er läuft nie ab, hat keine Begrenzung der Scans und funktioniert ohne zwischengeschalteten Dienst; um den Inhalt zu ändern, druckt man einen neuen Code. Der nTools-Generator erzeugt statische Codes.
Ein dynamischer Code, wie ihn viele QR-Dienste verkaufen, enthält einen Kurzlink zu diesem Dienst, der dann auf die eigentliche Adresse weiterleitet. Das Ziel lässt sich später ändern, und die Scans lassen sich zählen, doch jeder Scan hängt vom Dienst ab: Endet das Abonnement oder schließt das Unternehmen, funktionieren die gedruckten Codes nicht mehr.
Sicher scannen
Ein QR-Code kann von sich aus nichts ausführen; er übergibt dem Smartphone nur Text, meist einen Link. Das Risiko liegt darin, wohin dieser Link führt. Die Federal Trade Commission, die US-Verbraucherschutzbehörde, warnt vor gefälschten Codes, die über echte geklebt werden, etwa an Parkscheinautomaten, und vor Codes in unerwarteten Nachrichten, die zu sofortigem Handeln drängen.
- Vor dem Öffnen die Adresse lesen, die das Smartphone anzeigt, und auf Schreibfehler achten.
- Vorsicht bei einem Code auf einem Aufkleber, der über einen anderen Code geklebt wurde.
- Keine Codes aus unerwarteten Nachrichten scannen, sondern stattdessen die Website des Unternehmens selbst aufrufen.
Häufige Fragen
Laufen QR-Codes ab?
Ein statischer Code läuft nie ab: Er enthält den Inhalt selbst. Ein dynamischer Code funktioniert nicht mehr, sobald der Dienst hinter seinem Kurzlink ihn nicht mehr weiterleitet.
Warum lässt sich ein QR-Code nicht scannen?
Die üblichen Ursachen sind ein Code, der für die Menge an Inhalt zu klein gedruckt ist, eine fehlende oder nicht freie Ruhezone, zu wenig Kontrast, Spiegelungen bzw. ein Knick oder ein Logo, das zu viel verdeckt. Ein kürzerer Inhalt macht jedes Modul größer.
Welche Fehlerkorrekturstufe sollte man wählen?
Stufe M passt für die meisten gedruckten Codes. Q oder H empfehlen sich, wenn der Code verschmutzt oder abgenutzt wird oder ein Logo trägt – dafür nimmt man in Kauf, dass er dichter wird.
Was macht der nTools-Generator?
Er erzeugt statische Codes der Stufe M, wählt die kleinste passende Version und fügt die vier Module breite Ruhezone hinzu. Der Code wird im Browser gezeichnet, und nichts von dem, was man eingibt, wird hochgeladen.
Weitere Ratgeber
- IP-Adressen erklärt: IPv4, IPv6 und die reservierten Bereiche
- DNS-Einträge erklärt: A, AAAA, CNAME, MX, TXT und NS
- Subnetze und CIDR erklärt: Präfixe, Masken und nutzbare Hosts
- Unix-Zeitstempel und Zeitzonen erklärt
- Bildformate erklärt: JPEG, PNG, WebP, AVIF und HEIC
- Passwortstärke erklärt: Länge, Entropie und Passphrasen
- UUIDs erklärt: v4, v7 und die Wahl der richtigen Version
- Prozente und Mehrwertsteuer erklärt: aufschlagen, herausrechnen, kombinieren