Titelbild zum Artikel „Wie viel passt in einen QR-Code, und was ihn dicht macht“
Technologie

Wie viel passt in einen QR-Code, und was ihn dicht macht

5 Min. Lesezeit
QR-Code erstellen

Kodieren Sie das Wort "hallo", und Sie bekommen ein sauberes Raster aus 21 mal 21 Modulen, licht genug, um es auf Karopapier nachzuzeichnen. Kodieren Sie einen 300 Zeichen langen Kampagnenlink, und dasselbe Werkzeug liefert ein dichtes Dickicht, das mehrere Zentimeter Druckbreite braucht, bevor irgendein Telefon es liest. Gleicher Standard, gleicher Generator, zwei sehr verschiedene Objekte. Für deutsche Inhalte kommt ein Faktor dazu, der die Nutzlast unbemerkt aufbläht.

Die Frage nach der Kapazität wird meist mit einer Tabelle der Maximalwerte beantwortet. Diese Zahlen stimmen. Fast niemand erreicht sie.

Die veröffentlichten Obergrenzen

Beim größten Symbol, das die Spezifikation definiert — Version 40, mit der Fehlerkorrektur auf der niedrigsten Stufe (L) — fasst ein einzelner QR-Code:

  • 7.089 Ziffern
  • 4.296 alphanumerische Zeichen
  • 2.953 Bytes
  • 1.817 Kanji-Zeichen

Ein Symbol der Version 40 ist ein 177×177-Raster, also 31.329 einzelne Module. Damit eine Handykamera jedes Quadrat auflösen kann, braucht es mehrere Zentimeter Kantenlänge im Druck. Und Fehlerkorrektur L ist die Stufe, die am wenigsten Schaden verträgt. Der Code mit maximaler Kapazität ist also gleichzeitig die größte und die anfälligste Fassung seiner selbst — weshalb die Obergrenze eher Quizwissen als Entwurfsziel ist.

Die Zahl, die zählt, ist nicht das Maximum. Es ist, wie schnell Ihr Inhalt die Versionsleiter hinaufklettert.

Vier Kodierungsmodi, vier Dichten

Das Format packt Zeichen unterschiedlich, je nachdem, worum es sich handelt. Wenn Sie zuerst die zugrunde liegende Struktur wollen, behandelt was ein QR-Code eigentlich ist die Anatomie.

Numerisch verarbeitet die Ziffern 0 bis 9 und quetscht drei davon in 10 Bit. Der mit Abstand dichteste Modus, weshalb 7.089 die Schlagzeilenzahl ist.

Alphanumerisch deckt 45 Zeichen ab: Ziffern, Großbuchstaben A bis Z, Leerzeichen und den Satz $ % * + - . / sowie den Doppelpunkt. Zwei Zeichen reisen in 11 Bit.

Byte-Modus gibt volle 8 Bit pro Zeichen aus und nimmt alles, was in den Zeichensatz passt, typischerweise Latin-1 oder UTF-8. Kein Packtrick greift.

Kanji-Modus nutzt 13 Bit pro Shift-JIS-Zeichen, was günstiger ist, als dasselbe Zeichen als mehrere UTF-8-Bytes zu senden.

Sehen Sie sich den alphanumerischen Satz genau an. Keine Kleinbuchstaben. Kein Fragezeichen, kein Und-Zeichen, kein Gleichheitszeichen, kein Unterstrich, keine Tilde.

Warum ein Link fast immer im Byte-Modus landet

Nehmen Sie eine URL wie https://example.com/spring-sale?utm_source=flyer. Sie enthält Kleinbuchstaben, ein Fragezeichen, ein Gleichheitszeichen und einen Unterstrich. Nichts davon existiert im alphanumerischen Modus, also kippt der Kodierer diesen Inhalt in den Byte-Modus mit 8 Bit pro Zeichen. Jedes zusätzliche Zeichen kostet ein volles Byte.

Deshalb sind Tracking-Parameter teuer. Ein sauberer Link mit 40 Zeichen und derselbe Link mit vier UTM-Werten können sich um mehr als hundert Zeichen unterscheiden, und der zweite kann mehrere Versionen höher liegen.

Die Spezifikation erlaubt durchaus, Modi innerhalb eines Symbols zu mischen, und manche Kodierer schreiben Schema und Host groß, damit dieser Teil im alphanumerischen Modus reisen kann. Nützlich, aber begrenzt: Pfad und Abfrage unterscheiden Groß- und Kleinschreibung, kosten also weiterhin je ein Byte.

Versionen 1 bis 40 und die Größenleiter

Version 1 misst 21×21 Module. Jeder Schritt fügt vier Module je Seite hinzu: Version 2 ist 25×25, Version 10 ist 57×57, Version 20 ist 97×97, und Version 40 kommt bei 177×177 an.

Ihr Generator wählt die kleinste Version, die die Daten auf der von Ihnen gewählten Fehlerkorrekturstufe unterbringt. Fügen Sie ein paar Zeichen hinzu, und eine Weile ändert sich nichts. Fügen Sie ein paar weitere hinzu, und das Raster springt eine Stufe. An dieser Sprungstelle werden gedruckte Codes schwerer lesbar, denn bei fester physischer Größe bedeutet mehr Module, dass jedes Modul schmaler wird.

Fehlerkorrektur verbraucht dasselbe Raster

Redundanz ist kein kostenloser Speicher, der seitlich angeschraubt wird. Sie lebt in denselben Modulen wie Ihre Daten. Die vier Stufen stellen rund 7 Prozent (L), 15 Prozent (M), 25 Prozent (Q) und 30 Prozent (H) der Codewörter wieder her. Erhöhen Sie die Stufe, passt bei gleicher Version weniger Inhalt hinein — oder Sie werden auf eine größere hochgestuft.

In der Praxis: M ist eine vernünftige Vorgabe für den Druck. Wählen Sie H, wenn ein Logo die Mitte bedeckt oder die Oberfläche zerkratzt, nass oder viel angefasst wird. Behalten Sie L für Codes auf einem sauberen Bildschirm vor, die nie beschädigt werden und bei denen Sie darum kämpfen, das Raster klein zu halten.

Die Grenze, an die Sie wirklich stoßen

Niemandem gehen die Bytes aus. Ihnen gehen die Millimeter aus.

Das gängige Arbeitsverhältnis liegt bei etwa 10:1, Abstand zu Codebreite — ein Code, der aus drei Metern gelesen wird, sollte also etwa 30 Zentimeter breit sein. Bei fester physischer Größe verschmälert jede weitere Version jedes Modul, und sobald die Module sich der Auflösungsgrenze Ihres Druckverfahrens oder der scannenden Kamera nähern, beginnen Lesefehler an den Rändern des Licht- und Winkelbereichs. Die Größenregeln entscheiden weit mehr über die Funktionsfähigkeit Ihres Codes als jede Kapazitätstabelle.

Umlaute, Verwendungszweck und deutsche Wortlängen

Drei Eigenheiten deutscher Inhalte treiben die Datenmenge nach oben, und alle drei sieht man dem fertigen Muster nicht an.

Umlaute kosten doppelt. Im Byte-Modus wird der Inhalt als UTF-8 kodiert, und dort belegen ä, ö, ü und ß zwei Bytes statt einem. Ein Text mit vielen Umlauten braucht also mehr Platz als derselbe Text ohne, obwohl er gleich lang aussieht. Wer knapp an einer Versionsgrenze liegt, gewinnt durch das Weglassen von Umlauten in kodierten Adressen mehr als durch jede Designänderung. Welche Kodierung wann greift und welche Rolle die Angabe des Zeichensatzes spielt, steht in unserem Beitrag zur Zeichenkodierung und ECI.

Deutsche Wörter sind lang. Zusammengesetzte Begriffe in Adresspfaden, also Dinge wie Mitarbeiterschulungsanmeldung oder Instandhaltungsprotokoll, sind schnell doppelt so lang wie ihre englische Entsprechung. Das ist der Grund, warum eine deutsche Seite mit identischer Struktur ein dichteres Muster erzeugt als die englische. Kurze Pfade sind hier kein Stilthema, sondern eine technische Maßnahme.

Und der Verwendungszweck. Ein GiroCode nach dem EPC-Format trägt Empfängername, IBAN, Betrag und Verwendungszweck in festen Feldern. Der Verwendungszweck ist das Feld, in dem der Platz verloren geht, weil dort gern Rechnungsnummer, Kundennummer, Projekt und ein erklärender Satz landen. Halten Sie ihn auf ein Kürzel und eine Nummer, dann bleibt der Code licht und lässt sich auch auf einem Überweisungsträger noch klein drucken. Wie das Format aufgebaut ist, beschreibt unser Beitrag zum GiroCode.

Die Nutzlast klein halten

Kürzen Sie die Adresse, bevor Sie kodieren, und fangen Sie bei den Tracking-Parametern an, die niemand liest. Lassen Sie Umlaute aus dem kodierten Pfad heraus, auch wenn die Seite selbst deutsche Titel trägt. Führen Sie lange Links über einen Kurzlink, damit die kodierte Zeichenkette kompakt bleibt. Wo das Ziel lang ist oder sich ändern kann, hält ein dynamischer Code das gedruckte Muster dauerhaft licht, weil nur eine feste kurze Weiterleitung kodiert wird. Und wenn Sie jede Abhängigkeit vermeiden wollen, bringt Sie ein statischer Code auf einen kurzen Pfad Ihrer eigenen Domain fast zur gleichen Dichte.

Kontaktdaten verdienen eine eigene Warnung. Eine vollständige vCard mit Postanschrift, zwei Telefonnummern, Berufsbezeichnung und Foto-URL treibt Sie rasch in hohe Versionen. Ein Link auf eine Kontaktseite kodiert sich in einem Bruchteil des Platzes und bleibt bearbeitbar.

Fügen Sie Ihre längste echte URL in [den Generator](/) ein, dann eine gekürzte Fassung desselben Links, und legen Sie die beiden Ergebnisse nebeneinander. Der Unterschied in der Modulzahl ist das ganze Argument, und man sieht ihn in etwa dreißig Sekunden.

Diesen Artikel teilen