Wie funktioniert ein QR-Code wirklich? Die Technik hinter dem Pixel-Mosaik
Ein kurzer Schwenk mit der Smartphone-Kamera genügt – und schon öffnet sich eine Website, das WLAN verbindet sich oder eine vCard wird im Adressbuch gespeichert. Was im Alltag wie Magie wirkt, ist eine extrem durchdachte Kombination aus Informatik, Mathematik und Optik.
Doch wie entsteht aus einer langen Internetadresse oder einem Text überhaupt dieses charakteristische Schwarz-Weiss-Muster? Wo sind die Daten im Code verborgen und warum erkennt die Kamera den Inhalt selbst dann, wenn der QR-Code schräg oder leicht beschädigt ist?
In diesem Artikel nehmen wir die Funktionsweise des Quick-Response-Codes (QR-Code) Schritt für Schritt auseinander.
1. Das Grundprinzip ist einfach: Aus Zeichen werden Nullen und Einsen.
Computer sprechen Binärsprache, d. h., sie verstehen ausschliesslich 0 und 1. Bevor eine Information als Muster im QR-Code dargestellt werden kann, muss sie daher zuerst in Bits umgewandelt werden.Um Speicherplatz zu sparen, nutzt die QR-Software verschiedene Codierungsmodi:
- Numerischer Modus: Für reine Ziffern (0–9). Sehr effizient, da jeweils drei Ziffern in zehn Bits zusammengefasst werden.
- Alphanumerischer Modus: Für Ziffern, Grossbuchstaben und ausgewählte Sonderzeichen.
- Byte-Modus: Für allgemeine Texte, Kleinbuchstaben, Umlaute (UTF-8) und URLs.
- Kanji-Modus: Speziell komprimiert für japanische Zeichen.
Ein Blick hinter die Kulissen zeigt, wie aus „QR” ein Binärcode wird.
Um zu verstehen, wie platzsparend ein QR-Code arbeitet, betrachten wir den alphanumerischen Modus. Jedes Zeichen erhält dabei einen festen Zahlenwert (A = 10, B = 11, ..., Q = 26, R = 27).
Damit nicht jeder Buchstabe einzeln abgespeichert werden muss, fasst der Algorithmus immer zwei Zeichen zusammen.
- Die Werte von Q (26) und R (27) werden verrechnet: $26 \times 45 + 27 = 1197$.
- Die Zahl 1197 wird als 11-Bit-Binärzahl dargestellt:
10010101101.
So werden aus den zwei Buchstaben QR genau 11 Bits aus Nullen und Einsen. Würde am Ende einer Kette ein Buchstabe einzeln übrig bleiben, wird er mit 6 Bits codiert (z. B. $Q \rightarrow 26 \rightarrow 011010$).
2. Der Weg vom Binärcode zum fertigen Bild-Muster
Sobald dein Text in eine Kette aus Nullen und Einsen übersetzt ist, wandert diese durch mehrere technische Veredelungsschritte:
Schritt A: Technische Zusatzdaten und Fehlerkorrektur
Die Kette aus Nullen und Einsen, die deine Inhalte enthält, besteht nicht nur daraus. Vor die Nutzdaten wird ein Header gesetzt. Dieser verrät dem Scanner: „Achtung, jetzt kommt ein Text im Byte-Modus mit einer Länge von 25 Zeichen!”
Anschliessend berechnet ein mathematisches Verfahren, die sogenannte Reed-Solomon-Fehlerkorrektur, zusätzliche Absicherungsbits. Diese stellen sicher, dass der Code selbst dann noch gelesen werden kann, wenn bis zu 30 % seiner Fläche verdeckt oder beschädigt sind (z. B. durch ein in der Mitte platziertes Firmenlogo).
Schritt B: Verteilung im Raster (Module)
Die einzelnen Quadrate im QR-Code heissen Module. Grundsätzlich gilt:
- 0 = weisses Modul
- 1 = schwarzes Modul
Die Bits werden jedoch nicht einfach zeilenweise von oben links nach unten rechts hineingeschrieben. Die Datenbelegung startet unten rechts und schlängelt sich in schmalen Zweier-Spalten abwechselnd nach oben und unten durch das Raster. Dabei werden reservierte Funktionsbereiche (wie die Ecken) automatisch übersprungen.
Deshalb kannst du im fertigen QR-Code niemals auf ein einzelnes schwarzes Quadrat zeigen und sagen: „Das hier ist das ‚h‘ in der Webadresse.“
Schritt C: Der Maskierungs-Trick (Warum 1 nicht immer schwarz ist)
Würden die Bits direkt gezeichnet, könnten zufällig grosse schwarze Blöcke, lange weisse Streifen oder irreführende Muster entstehen, die das Kameragehäuse verwirren.
Deshalb legt die Software ein Maskierungsmuster über die Matrix. Insgesamt gibt es acht standardisierte Masken. Durch eine mathematische XOR-Verknüpfung kehrt die Maske bestimmte Bits um:
- 0 wird zu 1 (Weiss wird Schwarz)
- 1 wird zu 0 (Schwarz wird Weiss)
Der Scanner erkennt anhand von Steuer-Bits im Header, welche Maske verwendet wurde, und rechnet diesen Schritt beim Auslesen im Bruchteil einer Sekunde wieder rückgängig.
3. Die Anatomie eines QR-Codes: Was bedeuten die einzelnen Muster?
Betrachtet man einen QR-Code genauer, wirkt er wie ein zufälliges Mosaik. In Wahrheit ist jedoch jedes einzelne Element streng nach ISO-Standard positioniert. Man kann sich den Aufbau wie die Anatomie eines Gesichts vorstellen. Bestimmte Merkmale liegen immer an der gleichen Stelle, damit das Smartphone den Code auf den ersten Blick erkennt.
Ein klassischer QR-Code gliedert sich in folgende Hauptzonen:
1. Die drei grossen Eckquadrate (Positionserkennungsmuster/Finder Patterns)
- Sie liegen oben links, oben rechts und unten links.
- Was sie tun: Sie sind das Auffälligste am QR-Code. Diese drei Ankerpunkte signalisieren der Kamera sofort: „Achtung, hier liegt ein QR-Code!” Sie verraten der Software blitzschnell die Position, die Grösse und den Neigungswinkel, sodass die Kamera erkennt, ob das Smartphone gerade oder schräg gehalten wird.
2. Die gestrichelten Verbindungslinien (Timing Patterns)
- Sie liegen unten rechts und verraten der Kamera, wo „oben“ und „unten“ ist.
- Was sie tun: Diese Linien bestehen aus abwechselnd schwarzen und weissen Modulen. Sie funktionieren wie ein Lineal für den Scanner: Anhand dieser Punkte zählt die Software aus, wie gross das Rastersystem ist (von Version 1 mit 21 × 21 Feldern bis Version 40 mit 177 × 177 Feldern).
3. Die kleinen inneren Quadrate (Ausrichtungsmuster/Alignment Patterns)
- Sie liegen im rechten unteren Bereich sowie bei komplexen Codes im gesamten Muster verteilt.
- Was sie tun: Diese kleineren Quadrate dienen als digitale Zielkreuze. Sie helfen dem Scanner, Verzerrungen auszugleichen, beispielsweise wenn der QR-Code auf einer gebogenen Cola-Dose gedruckt ist oder der Flyer zerknittert wurde.
4. Die Steuer-Zone (Format-Informationen)
- Sie liegen direkt angrenzend an die drei grossen Eck-Quadrate.
- Was sie tun: Hier liegen die technischen Anweisungen für den Scanner. In diesen wenigen Pixeln sind zwei entscheidende Informationen gespeichert: 1. Welche Fehlerkorrekturstufe (L, M, Q oder H) verwendet wird und welches Maskierungsmuster über die Daten gelegt wurde.
5. Der unsichtbare Schutzrahmen (Ruhezone/Quiet Zone)
- Er ist der komplett weisse, unbedruckte Rand um den gesamten QR-Code.
- Funktion: Damit die Kamera die äusseren Kanten des Codes sauber erfassen kann, benötigt sie einen Sicherheitsabstand zu Texten, Bildern oder Hintergrundgrafiken. Dieser Rand muss mindestens vier Module (Pixelbreiten) dick sein. Fehlt die Ruhezone, verweigert die Kamera häufig den Scan.
4. Was passiert beim Scan auf deinem Smartphone?
Wenn du deine Kamera auf einen QR-Code richtest, laufen im Hintergrund folgende Schritte ab:
- Suchlauf: Die Kamera scannt das Videobild nach den drei grossen Finder Patterns.
- Transformieren: Die Software berechnet die Perspektive und "entzerrt" ein eventuell schräg fotografiertes Bild digital.
- Demaskieren: Das Rastersystem liest die Format-Info aus, erkennt das Maskierungsmuster und hebt die Maske auf.
- Fehlerkorrektur anwenden: Eventuelle Kratzer, Unschärfen oder Verdecker werden mathematisch repariert.
- Decodieren: Die Nullen und Einsen werden nach den Modus-Regeln wieder in lesbaren Text, Zahlen oder Steuerbefehle umgewandelt.
- Aktion ausführen: Das Smartphone erkennt den Daten-Typ (z. B.
https://für eine URL,WIFI:für Zugangsdaten oderBEGIN:VCARDfür Kontakte) und schlägt die passende App vor.
Technical Deep-Dive: Die wichtigsten Fragen erklärt
Braucht man zum Scannen eines QR-Codes Internet?
Nein, für den Scan-Vorgang selbst nicht. Die Umwandlung der Pixel in Text erfolgt lokal auf deinem Smartphone. Wenn der Inhalt ein reiner Text, eine vCard oder WLAN-Zugangsdaten ist, funktioniert alles komplett offline. Erst wenn der Code eine Internetadresse (URL) enthält und du diese öffnen möchtest, benötigst du eine Datenverbindung.
Ist ein QR-Code verschlüsselt?
Nein. Ein QR-Code ist lediglich codiert, aber nicht verschlüsselt. Jeder universelle QR-Code-Scanner kann die darin enthaltenen Daten auslesen. Vertrauliche Informationen wie Passwörter, Bankdaten oder persönliche PINs sollten daher niemals ungeschützt in einem Standard-QR-Code gespeichert werden.
Warum sehen manche QR-Codes viel feiner und dichter aus als andere?
Je mehr Daten direkt im Code gespeichert werden – beispielsweise ein langer Text im Vergleich zu einem kurzen Link –, desto mehr Module werden benötigt. Der Code wechselt dann in eine höhere Version (von Version 1 mit 21 × 21 Modulen bis hin zu Version 40 mit 177 × 177 Modulen).
Statisch vs. Dynamisch: Warum dynamische Codes kompakter bleiben
- Statische QR-Codes: Speichern das finale Ziel (z. B. eine 150 Zeichen lange URL) direkt ab. Das Muster wird sehr dicht und schwerer scannbar.
- Dynamische QR-Codes: Speichern nur einen ultrakurzen Weiterleitungs-Link (z. B.
qrown.io/12da7). Der Code bleibt optisch extrem simpel, leicht scannbar und das eigentliche Ziel lässt sich auf dem Server jederzeit austauschen, ohne dass der Code neu gedruckt werden muss.
Checkliste für funktionierende QR-Codes
Wenn du eigene QR-Codes erstellst oder gestalten lässt, achte auf folgende Grundlagen:
- Kurze Links nutzen: Verwende dynamische QR-Codes, um die Modul-Dichte gering zu halten.
- Kontrast einhalten: Dunkles Muster auf hellem Grund wählen (Invertierte Codes machen manchen älteren Kameras Probleme).
- Ruhezone beachten: Mindestens 4 Module Randabstand zu Texten, Schnittkanten oder Grafiken lassen.
- Fehlerkorrektur anpassen: Bei der Integration von Logos im Code mindestens Fehlerkorrektur Level Q oder H wählen.
Häufige Fragen (FAQ)
Aus wie vielen Modulen besteht ein QR-Code?
Die kleinsten QR-Codes (Version 1) bestehen aus 21 × 21 Modulen, also 441 Feldern. Die grösste Variante (Version 40) hat ein Raster von 177 × 177 Modulen, also 31.329 Felder.
Kann ein QR-Code Viren oder Malware enthalten?
Ein QR-Code selbst enthält nur Text und kann keinen schädlichen Programmcode direkt ausführen. Er kann jedoch zu einer präparierten Phishing-Website oder einem schädlichen Download führen. Prüfe deshalb vor dem Öffnen immer die Domain-Vorschau deines Smartphones!
Welcher Modus spart am meisten Platz im QR-Code?
Am effizientesten ist der numerische Modus (reine Zahlen), gefolgt vom alphanumerischen Modus. Der Byte-Modus (für allgemeine URLs und Sonderzeichen) benötigt dagegen den meisten Speicherplatz pro Zeichen.