Zum Hauptinhalt springen
Anleitung

QR-Code-Fehlerkorrektur erklärt (L, M, Q, H): Welche Stufe solltest du tatsächlich nutzen?

· 11 min Lesezeit

Nimm einen beliebigen QR-Code-Generator und du siehst vier Optionen, beschriftet mit L, M, Q und H. Die meisten Leute lassen die Voreinstellung stehen und machen weiter — bis der gedruckte Code aus der Druckerei uneinlesbar zurückkommt, oder ein Marketing-Team ein Logo in die Mitte setzt und der gesamte Code stirbt. Die Fehlerkorrekturstufe ist keine kosmetische Einstellung. Sie bestimmt, wie viel physischen Schaden ein Code überleben kann, und sie steht in direktem Tausch gegen die Datenmenge, die der Code aufnehmen kann.

Dieser Artikel erklärt, was diese Stufen tatsächlich innerhalb der QR-Spezifikation (ISO/IEC 18004) tun, wie sie die Kapazität mit echten Zahlen verändern, und wie du die richtige für deinen Anwendungsfall wählst.

Was Fehlerkorrektur tatsächlich ist

Ein QR-Code kodiert nicht nur deine Daten — er kodiert auch redundante Informationen, die es einem Leser erlauben, beschädigte oder unlesbare Teile des Codes zu rekonstruieren. Der Mechanismus ist die Reed–Solomon-Fehlerkorrektur, dieselbe Algorithmenfamilie, die auf CDs, DVDs, Blu-ray-Discs und in der Deep-Space-Kommunikation verwendet wird.

Wenn ein QR-Code erzeugt wird, wird die Datennutzlast in Blöcke aufgeteilt, und für jeden Block berechnet der Encoder einen Satz von Fehlerkorrektur-Codewörtern. Findet ein Leser später Module (die schwarzen und weißen Quadrate), die unlesbar sind — wegen eines Kratzers, eines Kaffeeflecks, schlechter Beleuchtung oder eines überlagerten Logos — nutzt er diese redundanten Codewörter, um die fehlenden mathematisch wiederherzustellen.

Reed–Solomon-Codes haben eine nützliche Eigenschaft: um t fehlerhafte Codewörter an unbekannten Positionen zu korrigieren, brauchst du 2t redundante Codewörter. (Kennst du die Positionen der beschädigten Codewörter — sogenannte „Löschungen” — behebt jedes Redundanz-Codewort einen.) Die Fehlerkorrekturstufe steuert schlicht, wie viel des gesamten Codewort-Budgets für Redundanz versus Nutzlast ausgegeben wird.

Die vier Stufen, in Zahlen

Die Spezifikation ISO/IEC 18004 definiert vier Fehlerkorrekturstufen mit diesen ungefähren Wiederherstellungsfähigkeiten — dem Anteil der Codewörter, die beschädigt sein dürfen und trotzdem vollständig wiederhergestellt werden:

StufeNameWiederherstellungsfähigkeit
LNiedrig~7% der Codewörter
MMittel~15% der Codewörter
QQuartil~25% der Codewörter
HHoch~30% der Codewörter

Zwei wichtige Nuancen, die der einfache Prozentsatz verbirgt:

  1. Der Prozentsatz gilt für Codewörter, nicht für die Modulfläche. Die populäre Faustregel „Stufe H übersteht 30% abgedeckten Code” ist in der Praxis ungefähr zutreffend, weil Schäden meist zusammenhängend auftreten, aber die formale Grenze bezieht sich auf beschädigte Codewörter. Räumlich geclusterter Schaden (wie ein Logo) ist oft einfacher zu überleben als dieselbe Anzahl zufällig verteilter Fehler, weil Löschungen billiger zu korrigieren sind als Fehler unbekannter Position.
  2. Höhere Stufen kosten Kapazität. Mehr Redundanz bedeutet weniger Platz für die Nutzlast bei derselben Version (Größe). Passen die Daten nicht, muss der Encoder auf eine größere Version springen — mehr Module, dichterer Druck, schwieriger aus der Ferne zu scannen.

Kapazität: Was dich die Stufen in der Praxis kosten

QR-Codes gibt es in 40 Größen, genannt Versionen. Version 1 ist 21×21 Module, und jede nachfolgende Version fügt 4 Module pro Seite hinzu, bis zu Version 40 mit 177×177. Die folgende Tabelle zeigt die maximalen Zeichenkapazitäten aus der Spezifikation für drei repräsentative Nutzlasttypen, über die vier Stufen. (Der Byte-Modus deckt beliebige UTF-8-ähnliche Binärdaten und typische URLs ab; der alphanumerische Modus deckt 0–9 A–Z Leerzeichen $%*+-./: ab; der numerische Modus ist nur Ziffern.)

VersionModuleStufeNumerischAlphanumerischByte
121×21L412517
121×21M342014
121×21Q271611
121×21H17107
537×37L255154106
537×37M20212284
537×37Q1448760
537×37H1066444
1057×57L652395271
1057×57M513311213
1057×57Q364221151
1057×57H288174119
2097×97L20611249858
2097×97M1600970666
2097×97Q1120679466
2097×97H861521358
40177×177L708942962953
40177×177M559633912331
40177×177Q399324201663
40177×177H305718521273

Lies dir Version 1 genau durch: der Wechsel von L zu H schneidet die Byte-Kapazität von 17 auf 7 herunter — eine Reduktion um 59%. Dieser Tausch lohnt sich für gewöhnlich beim Druck, aber er ist ein echter Preis. Eine lange URL, die in einem Code der Version 4 mit Stufe M bequem Platz hat, könnte mit Stufe H einen Code der Version 6 erzwingen, und größere Codes bedeuten kleinere Module bei derselben Druckgröße.

Kürzere Nutzlasten schlagen immer stärkere Fehlerkorrektur. Eine kurze URL in einem Code niedriger Version mit Stufe H wird fast jedes Mal besser scannen als eine lange URL in einem Code hoher Version mit Stufe L. Wenn du eine URL kodierst, verwende eine kurze Domain oder eine Weiterleitung. Das zählt mehr als jede andere Optimierung.

Druckgröße und Scanquote: Die 10:1-Regel

Fehlerkorrektur kann keinen Code retten, der schlicht zu klein zum Auflösen ist. Die weitverbreitete Feldregel ist das Verhältnis 10:1: die Scanquote sollte nicht mehr als etwa das Zehnfache der Codebreite betragen. Einige Quellen geben 10:1 als konservativ an und nennen erfolgreiche Scans näher an 15:1 mit guten Kameras und Beleuchtung, aber 10:1 ist die Zahl, gegen die du designst.

  • Visitenkarten-Code, 2 cm breit → zuverlässig bis ~20 cm
  • Poster-Code, 10 cm breit → zuverlässig bis ~1 m
  • Plakatwand-Code, 1 m breit → zuverlässig bis ~10 m

Zwei verwandte Einschränkungen:

  1. Modulgröße. Jedes Modul sollte mindestens ungefähr 0,4 mm groß sein (etwa 2 mils sind bei Weitem zu klein; 0,4 mm ist eine gängige Druck-Untergrenze), damit Telefonkameras es auflösen können. Für einen Code der Version 10 (57 Module) ist das eine Mindestdruckgröße von etwa 2,3 cm nur für den Datenbereich.
  2. Die Ruhezone. Die Spezifikation verlangt einen Rand von mindestens 4 Modulen weißem Raum um den Code. Das Beschneiden der Ruhezone ist einer der häufigsten Gründe, warum gedruckte Codes scheitern, und keine Fehlerkorrekturstufe behebt das — die Leser nutzen die Ruhezone, um die Kanten des Codes zu finden.

Warum Logos Stufe H verlangen

Ein Logo in die Mitte eines QR-Codes einzubetten ist der klassische Grund, warum Stufe H existiert. Das Logo bedeckt physisch Module und zerstört die darunterliegenden Codewörter. Das Wiederherstellungsbudget von ~30% der Stufe H ist das, was dies überlebbar macht.

Praktische Regeln für Logo-Überlagerung:

  • Verwende H. Immer. Bei M (~15%) frisst ein schon mäßig großes Logo den Großteil des Budgets.
  • Halte das Logo unter ~30% der Gesamtfläche des Codes — und vorzugsweise deutlich darunter, weil die abgedeckte Fläche selten sauber über Codewort-Blöcke verteilt ist. Ein Logo, das 20% der Fläche mit Stufe H abdeckt, ist ein komfortables Design; 28% ist Glücksspiel.
  • Bleibe in der Mitte. Die drei Finder-Muster (die großen Quadrate in den Ecken) und die Timing-/Ausrichtungsmuster tragen strukturelle Daten, die Fehlerkorrektur nicht auf gleiche Weise schützt. Zentrale Platzierung umgeht sie.
  • Teste auf echten Telefonen, bei echter Distanz, bei schlechtem Licht. Nicht nur dein Flaggschiff-Telefon auf dem Schreibtisch. Ältere Android-Geräte mit mittelmäßigen Kameras sind der Boden, für den du designst.

Beachte, dass Generatoren, die dich ein Logo auf einen Code legen lassen, ohne nach der Stufe zu fragen, implizit auf die Stufe wetten, die du anderswo gewählt hast. Wenn du L einstellst und ein Logo hinzufügst, hast du einen Code geschaffen, der oft, aber nicht immer scheitert — das schlimmstmögliche Ergebnis, weil er beiläufige Tests besteht und im Feld versagt.

Wie du tatsächlich wählst

Stufe L (~7%) — Reine Digitalkontexte, in denen das Bild perfekt gerendert wird: App-zu-App-Übergabe, Bildschirme, generierte Tickets, die auf einem Telefon angezeigt werden. Saubere Pixel bedeuten, dass kaum etwas schiefgehen kann, also investiere das Budget in Kapazität und kleine Größe. Selten die richtige Wahl anderswo.

Stufe M (~15%) — Die allgemeine Voreinstellung für sauberen Druck: Visitenkarten, Produktverpackungen, Dokumente. Übersteht normalen Handhabungsverschleiß, kleinere Druckfehler und Reflexionen. Die meisten Generator-Voreinstellungen landen hier, und das aus gutem Grund.

Stufe Q (~25%) — Raue physische Umgebungen ohne Logo-Überlagerung: Industrielabels, Lagerregale, Gerätekennzeichnungen, Außenbeschilderung, die Witterung ausgesetzt ist. Wenn die Oberfläche im normalen Gebrauch zerkratzt, verschmutzt oder teilweise verdeckt wird, ist Q das Arbeitstier.

Stufe H (~30%) — Logo-Überlagerung, sehr raue Umgebungen oder Situationen, in denen ein fehlgeschlagener Scan teuer ist (Zahlungscodes, sicherheitskritische Etiketten). Auch die richtige Wahl, wenn du sehr klein drucken musst und Kameras geringer Qualität erwartest.

Der Entscheidungsbaum komprimiert sich zu: digital → L oder M; sauberer Druck → M; raue Umgebung → Q; Logo oder kritische Zuverlässigkeit → H. Und unabhängig von der Stufe: halte die Nutzlast kurz, halte die Ruhezone ein und respektiere die 10:1-Distanzregel.

Überprüfe es selbst

Theorie ist gut, aber QR-Fehlerkorrektur lässt sich empirisch leicht testen. Generiere dieselbe URL auf jeder Stufe mit unserem QR-Code-Generator und vergleiche:

  1. Generiere den Code auf Stufe L, dann M, Q und H. Beachte den Anstieg der Moduldichte — diese visuelle Dichte ist die Redundanz.
  2. Drucke die Version mit Stufe H, decke die Mitte mit einer Münze oder einem Aufkleber ab (~20% der Fläche) und scanne sie. Sie sollte weiterhin funktionieren.
  3. Versuche dasselbe mit der Version auf Stufe L. Es wird nicht funktionieren.
  4. Nimm den Code mit Stufe H und decke schrittweise mehr Fläche ab, bis Scans scheitern — du wirst feststellen, dass die praktische Grenze nahe am theoretischen ~30% liegt.

Du wirst auch den Kapazitätstausch direkt sehen: füge eine lange URL ein und beobachte, welche Version (Größe) jede Stufe erfordert. Dieses Experiment lehrt den Kompromiss schneller als jede Tabelle.

Zusammenfassung

  • Fehlerkorrektur in QR-Codes ist Reed–Solomon-Redundanz; die Stufe legt fest, wie viel des Codewort-Budgets Redundanz ist: L ≈ 7%, M ≈ 15%, Q ≈ 25%, H ≈ 30% Wiederherstellung.
  • Höhere Stufen schneiden die Kapazität — bei Version 1 enthält H weniger als die Hälfte der Bytes, die L enthält.
  • Kürzere Nutzlasten schlagen stärkere Korrektur; kürze URLs, bevor du die Stufen anhebst.
  • Gestalte die Druckgröße mit der 10:1-Distanzregel und beschneide niemals die Ruhezone von 4 Modulen.
  • Logo-Überlagerung ⇒ Stufe H, Logo unter ~30% der Fläche, zentriert, auf billigen Telefonen getestet.

Generiere ein paar Varianten mit dem QR-Code-Generator und die richtige Stufe für deinen Anwendungsfall wird innerhalb von fünf Minuten offensichtlich sein.