Ein QR-Code im Videospot braucht ein Drittel des Bildschirms. Er bekommt eine Ecke

vom KoloQR-TeamRecherche

Ein an der Wand hängender Fernseher in einem Wohnzimmer zeigt einen Sportspot: rechts ein Foto von Fußballspielern, die sich unter Flutlicht im Stadion untergehakt haben, links die Schlagzeile "Join a Team. Be Part of Something Greater." über der Zeile "Scan to find teams" und einem runden QR-Code in Gelb und Schwarz.

Ein Handy, das einen QR-Code vom Fernseher liest, sieht nicht dein Artwork. Es sieht ein paar Dutzend Pixel eines Kamerabildes, und wie viele es davon bekommt, entscheidet genau eine Größe: der Winkel, den der Code vom Sofa aus einnimmt. Wir haben einen Prüfstand gebaut, der die ganze Kette durchläuft - 1080p-Master, Kompression, eine leicht verdrehte Handkamera in realem Sitzabstand, Bewegungsschmierer - und gemessen, wo die Leserate abstürzt. Aus normaler Wohnzimmerentfernung wurde ein Code, der ein Fünftel der Bildhöhe einnimmt, in 6 % der Versuche dekodiert. Ein Viertel der Bildhöhe: 95 %. Die Ecke, die jeder Videospot benutzt, kam auf null, und daran ändern weder Standzeit noch Fehlerkorrektur noch Kreation etwas, weil der Fehler passiert, bevor das erste Bild gelesen ist.

Die wichtigsten Punkte

  • Wir haben eine Dekodierschwelle von 2,5 Pixeln pro Modul gemessen - stehendes, komprimiertes, leicht verdrehtes Bild, mit den ersten vereinzelten Treffern bei 2,0 und der Mehrheit bei 2,25. Googles eigene ML-Kit-Dokumentation verlangt mindestens 2 Pixel pro Modul, Prüfstand und Hersteller liegen also ein Viertelpixel auseinander.
  • Die Bildschirmgröße kürzt sich heraus. Weil Menschen weiter weg von großen Fernsehern sitzen, ist die Antwort ein Bruchteil der Bildhöhe und kein Maß in Zentimetern - und es ist derselbe Bruchteil bei 43 Zoll, bei 77 Zoll und auf einem Laptop.
  • Aus normaler Wohnzimmerentfernung - ein 55-Zöller in etwa 2,7 m - wurde ein Code bei 20 % der Bildhöhe in 6 % der Fälle gelesen, bei 25 % in 95 % der Fälle und bei 30 % jedes Mal. Unter 15 % wurde in keiner der getesteten Entfernungen irgendetwas gelesen.
  • Kompression spielt kaum eine Rolle, Bewegung dagegen eine enorme. Das Master auf JPEG-Qualität 40 zu quetschen veränderte die Leserate um ein bis zwei Punkte; ein Schmierer von einem halben Kamerapixel während einer einzigen Belichtung brachte einen Code, der zu 99 % gelesen wurde, auf null.
  • Die zwei Dinge, mit denen Spots ihren eigenen Code unbemerkt verkleinern, sind angehängte UTM-Parameter und eine hochgedrehte Fehlerkorrektur. Beide fügen bei gleicher physischer Größe Module hinzu. Ein vollständiger Tracking-String brachte einen Code von 100 % auf 48 %; Fehlerkorrekturstufe H brachte denselben Code von 99 % auf 74 %.

Der Code in der Ecke scheitert, bevor jemand zum Handy greift

Die Standardplatzierung ist die untere rechte Ecke der Abbinder, so bemessen, dass sie höflich neben Logo und Rechtszeile passt - acht bis zwölf Prozent der Bildhöhe, im Bild für die drei bis fünf Sekunden, die der Abbinder dauert. Das wird als Layoutentscheidung behandelt, in Begriffen von Überfrachtung und Markenhierarchie diskutiert und von Leuten abgenommen, die den Code am Monitor im Schnittraum alle erfolgreich gescannt haben.

Es ist keine Layoutentscheidung. Es ist eine Auflösungsentscheidung, und die Rechnung dahinter steht fest, bevor irgendwer im Raum eine Meinung hat. Ein Handy, das einen Fernseher fotografiert, nimmt den ganzen Raum auf; der Fernseher ist ein Bruchteil dieses Bildes, der Code ein Bruchteil des Fernsehers, und das Raster des Codes wird dann in 25 bis 53 Kästchen pro Kante geteilt. Was am Ende ankommt, ist eine Handvoll Pixel pro Kästchen, und unterhalb einer bestimmten Handvoll wird gar nichts mehr dekodiert - nicht langsam, nicht manchmal, nicht mit einer besseren App.

Übersehen wird das immer wieder, weil jede Prüfung während der Produktion im falschen Abstand stattfindet. Der Code wird am Schnittmonitor auf Armlänge gescannt, am Review-Link auf einem Laptop aus 60 cm und auf einem Handy, das 30 cm vor einem anderen Handy gehalten wird. Geometrisch hat keine dieser drei Situationen irgendetwas mit einem Sofa zu tun, und alle drei bestehen die Prüfung. Die einzige Bedingung, unter der der Spot tatsächlich gesehen wird, ist die, die niemand testet, weil man sich dafür in ein Wohnzimmer stellen müsste.

Also rechnet dieser Text die Sache durch und misst sie dann nach. Die Frage ist nicht, ob QR-Codes in die Videowerbung gehören - das ist Geschmackssache, und die Antwort hängt wahrscheinlich von der Marke ab. Die Frage ist, wie groß ein Code sein muss, damit sich die Geschmacksdebatte überhaupt lohnt.

Was wir gemessen haben und was es dir nicht sagen kann

Der Prüfstand durchläuft die gesamte Kette in Software. Ein Code wird mit 12 Pixeln pro Modul und der in ISO/IEC 18004 festgelegten Ruhezone von vier Modulen gerendert, in ein 1080p-Master auf die Größe skaliert, die er im fertigen Spot hätte, komprimiert, gerahmt, aus dem Winkel gedreht, auf die Pixelzahl heruntergerechnet, die eine Handykamera aus dem angegebenen Sitzabstand von ihm einfangen würde, für die Bewegung während der Belichtung verschmiert und an einen Dekoder übergeben. Jede Zahl unten ist der Anteil der Versuche, die dekodiert wurden.

Jede Zelle sind 216 Versuche: zwölf verschiedene Nutzdaten, sechs Winkel zwischen einem und elf Grad aus der Achse und drei Ein-Pixel-Variationen der erfassten Größe. Diese Zahl gibt es wegen eines Fehlers, den man zugeben sollte. Die erste Fassung des Prüfstands gab dem Dekoder ein perfekt rechtwinkliges, rastergenaues Bild, und er dekodierte fröhlich einen Code mit einem Pixel pro Modul - ein Ergebnis, das echte Arithmetik und zugleich völliger Unsinn ist, weil es einen Abtastzufall misst, den eine Hand mit einem Handy nie reproduzieren wird. Die Drehung ist das, was jedes Modul in eine beliebige Subpixel-Phase setzt, und sie verschob die Schwelle um mehr als das Doppelte.

Der Dekoder ist absichtlich der schwache

Der Dekoder ist jsQR, die JavaScript-Portierung des ZXing-Kerns - dieselbe Dekoderfamilie, deren Binarizer wir für die Kontrastmessungen im Quelltext gelesen haben. Apples Vision-Framework und Googles ML Kit sind das, was die meisten Codes tatsächlich liest, beide sind geschlossen, und eine Zahl aus einem der beiden ist eine Zahl, die keine Leserin und kein Leser überprüfen kann. jsQR ist außerdem mit ziemlicher Sicherheit der schwächste der drei: keine Machine-Learning-Stufe, keine Mehrbild-Akkumulation, keine Superresolution.

Damit lohnt sich eine Kalibrierung. Unsere Schwelle im sauberen Bild lag bei 2,5 Pixeln pro Modul, und Googles ML-Kit-Dokumentation zum Barcode-Scannen verlangt einen Code, dessen „kleinste sinnvolle Einheit“ „mindestens 2 Pixel breit und bei zweidimensionalen Codes 2 Pixel hoch“ ist. Dass ein schwächerer Dekoder ein Viertelpixel über dem veröffentlichten Herstellerminimum landet, ist ungefähr die beste Übereinstimmung, auf die ein solcher Aufbau hoffen kann - und der Grund, warum die Größentabelle weiter unten als ungefähr richtig zu lesen ist und nicht als um einen Faktor zu pessimistisch.

Was der Prüfstand auslässt

  • Echte Handys. Für diese Messung wurde kein iPhone und kein Android-Gerät auf einen Fernseher gerichtet. Optische Stabilisierung, Mehrbild-Fusion und die zwei geschlossenen Dekoder arbeiten alle für die Lesenden, und keines davon ist modelliert.
  • Videokodierung über mehrere Bilder. Kompression ist hier JPEG auf einem Einzelbild und steht stellvertretend für ein intracodiertes Bild. Ein stehender Code über einer stehenden Einstellung kostet einen echten Encoder nach dem ersten Bild fast nichts; ein Code über bewegtem Material wird permanent neu codiert. Da Kompression sich ohnehin als fast irrelevant erwies, fällt das weniger ins Gewicht, als es aussieht.
  • Panel und Sensor, die gegeneinander schlagen. Eine Kamera, die ein Display fotografiert, kann Moiré erzeugen, und ein 24p-Master auf einem 60-Hz-Panel, abgetastet von einem Rolling Shutter, kann Streifen zeigen. Beides ist real, beides schadet, und keines ist simuliert.
  • Spiegelungen, Raumlicht und schräge Blickwinkel. Alle drei ziehen ab, und alle drei gehören zur Kontrastarbeit und nicht hierher.
  • Menschen. Wie lange jemand braucht, um einen Code zu bemerken, das Handy zu finden und es auszurichten, kann ein Prüfstand nicht messen. Der entsprechende Abschnitt unten ist als Schätzung gekennzeichnet.

Alle diese Auslassungen gehen bis auf die erste in dieselbe Richtung: Der Prüfstand ist härter zum Code als ein stehendes Foto und milder als ein Wohnzimmer. Ehrlich zusammengefasst: Diese Zahlen lokalisieren die Kante, und das Zehn-Minuten-Protokoll am Ende dieses Textes ist der Weg, herauszufinden, auf welcher Seite deine Kampagne liegt.

Die Schwelle liegt bei zweieinhalb Pixeln pro Modul

Pixel pro Modul ist die Zahl der Kamerapixel, die auf ein Kästchen im Raster eines QR-Codes fallen, und sie ist die Größe, aus der jede andere Variable eines Scans bezahlt wird. Kontrast, Unschärfe, Kompression, Tonwertzuwachs und Kamerarauschen verringern am Ende alle dasselbe: die Sicherheit, mit der ein Dekoder sagen kann, auf welcher Seite der Schwarz-Weiß-Grenze ein Kästchen lag. Unterhalb einer bestimmten Abtastdichte bleibt keine Sicherheit mehr zum Ausgeben.

Pixel pro ModulSauberKomprimiert (JPEG q40)
1,500 %0 %
1,750 %0 %
2,008 %7 %
2,2569 %68 %
2,5099 %100 %
2,75100 %100 %
3,00100 %100 %
Leserate über 216 Versuche pro Zelle, ein bis elf Grad aus der Achse. Die Kante ist keinen halben Pixel breit: 2,0 Pixel pro Modul sind ein Fehlschlag, 2,5 sind eine Gewissheit.

Zwei Dinge in dieser Tabelle sind mehr wert als die Schwelle selbst. Das erste ist, wie schmal der Übergang ist. Es gibt keinen langen Ausläufer grenzwertiger Codes, die geduldige Nutzerinnen und Nutzer doch noch scannen: Zwischen 2,0 und 2,5 Pixeln pro Modul geht die Leserate von 8 % auf 99 %. Ein Code hat die Abtastdichte oder er hat sie nicht, und zwischen diesen beiden Zuständen liegt ein Viertelpixel pro Modul.

Das zweite ist die zweite Spalte. Das Master auf JPEG-Qualität 40 zu komprimieren - sichtbar verlustbehaftet, weit unter allem, was ein Sender oder eine Plattform ausliefern würde - veränderte das Ergebnis um ein bis zwei Punkte in beide Richtungen und verschob die Kante kein einziges Mal. Das gehört klar gesagt, denn „Videokompression frisst QR-Codes“ ist die Standarderklärung dafür, warum sie im Fernsehen scheitern, und in dieser Messung stimmt sie schlicht nicht. Nicht die Kompression bringt diese Codes um. Die Abtastung tut es.

Daraus folgt, dass sich das ganze Problem auf eine Frage reduziert: Wie viele Kamerapixel bekommt der Code? Das ist keine Eigenschaft des Artworks, des Dateiformats oder des Encoders. Es ist eine Eigenschaft des Winkels, den der Code im Auge der Zuschauerin einnimmt, und das ist Geometrie - und Geometrie hat den Anstand, vorhersagbar zu sein.

Die Bildschirmgröße kürzt sich heraus, übrig bleibt der Winkel

Die Kamera eines Handys ist eine rektilineare Projektion: Eine Querstrecke in bekannter Entfernung wird über eine einzige Konstante in Pixel umgerechnet. Für ein horizontales Bildfeld von 70 Grad - ein 26-mm-Äquivalent sind 69,4 Grad, und Handy-Hauptkameras liegen seit Jahren im Rahmen eines Grades davon - beträgt diese Konstante 1.371 Pixel pro Radiant auf einem 1920 Pixel breiten Bild. Damit fällt die ganze Kette in eine Zeile Arithmetik zusammen:

Pixel pro Modul = 1371 × f ÷ (k × N), wobei f die Höhe des Codes als Anteil der Bildhöhe ist, k der Sitzabstand in Bildhöhen und N die Zahl der Module über die Breite des Codes einschließlich seiner vier Module Ruhezone.

Interessant an diesem Ausdruck ist, was darin fehlt. Es kommt keine Bildschirmgröße vor und keine Entfernung in Metern, nur ihr Verhältnis. Das ist keine Vereinfachung, das ist die tatsächliche Physik: Ein 77-Zoll-Fernseher nimmt vom hinteren Ende eines großen Raums denselben Winkel ein wie ein 43-Zöller in einem kleinen, und die Kamera weiß nicht und interessiert sich nicht dafür, welchen von beiden sie ansieht. Die Antwort auf „wie groß muss der Code sein“ ist deshalb ein Prozentsatz des Bildschirms, und derselbe Prozentsatz gilt überall.

Es heißt außerdem, dass k aus veröffentlichten Empfehlungen zum Blickwinkel bestimmt statt geraten werden kann. THX empfiehlt einen horizontalen Blickwinkel von etwa 40 Grad, was bei einem 16:9-Bild einem Abstand von 2,4 Bildhöhen entspricht. Die SMPTE-Empfehlung von 30 Grad ergibt 3,3 Bildhöhen. Beides sind Empfehlungen für Leute, denen Bildqualität wichtig ist; gewöhnliche Wohnzimmer sitzen weiter hinten als beide, und deshalb reichen die Tabellen unten bis vier Bildhöhen - ein 55-Zöller in etwa 2,7 m.

Die 1920 in dieser Konstante verdienen einen eigenen Vorbehalt, denn sie sind die günstige Annahme. Der Analyse-Stream ist der Videopuffer mit reduzierter Auflösung, auf dem die Code-Erkennung eines Handys tatsächlich arbeitet, und das ist nicht das Foto in voller Auflösung, das die Kamera aufnehmen könnte. Googles ML-Kit-Dokumentation empfiehlt, ihn mit „1280x720 oder 1920x1080“ zu füttern, und merkt an, dass darunter nur funktioniert, wenn man „verlangt, dass der Barcode den größten Teil des Eingabebildes ausmacht“. Alles Folgende nimmt die bessere der beiden an. Bei 1280 x 720 wird jede Zahl der nächsten Tabelle um ein Drittel schlechter.

Wie groß der Code tatsächlich sein muss

Die Arithmetik steht, jetzt die Messung. Jede Zeile ist eine Codehöhe als Prozentsatz der Bildhöhe; jedes Spaltenpaar ist ein Sitzabstand in Bildhöhen, mit der resultierenden Abtastdichte und der Leserate, die aus dem Prüfstand kam. Die Nutzdaten sind eine 25 Zeichen lange URL bei Fehlerkorrektur M, also Version 3 - 29 Module, mit Ruhezone 37 über die Breite. Alles steht still, ist komprimiert und liegt ein bis elf Grad aus der Achse.

Codehöhe (% des Bildes)Im 1080p-Masterk = 2 px/Modulk = 2 Ratek = 3 px/Modulk = 3 Ratek = 4 px/Modulk = 4 Rate
8 %86 px1,490 %1,000 %0,730 %
10 %108 px1,862 %1,240 %0,920 %
12,5 %135 px2,3282 %1,540 %1,160 %
15 %162 px2,78100 %1,864 %1,380 %
17,5 %189 px3,24100 %2,1670 %1,620 %
20 %216 px3,70100 %2,4691 %1,866 %
25 %270 px4,62100 %3,0899 %2,3295 %
30 %324 px5,57100 %3,70100 %2,78100 %
35 %378 px6,49100 %4,32100 %3,24100 %
216 Dekodierversuche pro Zelle. k ist der Sitzabstand in Bildhöhen: k = 2,4 ist die THX-Empfehlung, k = 3,3 die von SMPTE, und k = 4 ein gewöhnliches Wohnzimmer - ein 55-Zöller in 2,7 m. Die mittlere Spalte ist die Größe des Codes im 1080p-Master, und die ist nie die bindende Beschränkung.

Lies die Spalte k = 4, denn dort sitzen die meisten Menschen. Ein Code bei einem Fünftel der Bildhöhe wurde sechsmal von hundert gelesen. Ein Code bei einem Viertel der Bildhöhe wurde fünfundneunzigmal von hundert gelesen. Der gesamte nutzbare Bereich dieser Gestaltungsentscheidung liegt zwischen 20 % und 30 % der Bildhöhe, und die übliche Ecke liegt nicht bloß am unteren Rand dieses Bereichs - sie liegt um den Faktor zwei bis drei außerhalb der Tabelle.

Beachte auch, was die Master-Spalte tut, nämlich nichts. Ein Code bei 20 % der Bildhöhe ist in der 1080p-Datei 216 Pixel breit, bequem über der Schwelle; der Code wird nicht im Schnitt, in der Farbkorrektur oder beim Encoding zerstört. Er wird von der Entfernung zwischen Sofa und Fernseher zerstört, und die kann kein Postproduktionsprozess verbessern. Das ist dasselbe Argument, das die Auslegung eines gedruckten Codes auf seinen Scanabstand für Papier macht, und hier ist es strenger, weil die Zuschauerin nicht an den Bildschirm herantreten kann.

Auch die Folgerung aus der Spalte k = 2 lohnt sich, weil sie die Schnittraum-Illusion genau erklärt. Bei zwei Bildhöhen - ein 55-Zöller in 1,4 m, was ungefähr so viel einnimmt wie ein Schreibtischmonitor auf Armlänge - wird ein Code bei 12,5 % der Bildhöhe zu 82 % gelesen. Das ist die Prüfung, die alle machen, und sie besteht. Die Abtastdichte fällt direkt proportional zur Entfernung, und das Sofa steht ein bis zwei Meter hinter der Stelle, an der geprüft wurde.

Bewegung erledigt es schneller als Größe

Kompression stellte sich als unwichtig heraus, Größe als enorm wichtig. Bewegung ist schlimmer als beides. Der Prüfstand legt einen linearen Schmierer auf den Sensor - eine Boxfaltung in Bewegungsrichtung, was Bewegung während einer Belichtung mit einem Bild tatsächlich anstellt, statt der symmetrischen Gaußunschärfe, die eine Blur-Funktion anwenden würde - und misst, wie weit der Code während einer Belichtung über den Sensor wandern darf, bevor die Leserate zusammenbricht.

Codehöhe (% des Bildes)Pixel pro ModulSteht0,25 px0,5 px0,75 px1,0 px1,5 px
25 %3,0899 %86 %0 %0 %0 %0 %
30 %3,70100 %97 %0 %0 %0 %0 %
40 %4,95100 %100 %100 %0 %0 %0 %
60 %7,41100 %100 %100 %100 %1 %0 %
Bei k = 3, komprimiert. Die Spaltenüberschrift ist die Strecke, die der Code während einer einzigen Belichtung über den Kamerasensor gleitet. In allen vier Zeilen liegt der Zusammenbruch an derselben Stelle, gemessen in den Einheiten des Codes selbst - etwa einem Achtel Modul - und genau deshalb kauft ein größerer Code echte Toleranz und nicht bloß den Anschein davon.

Die Toleranz liegt bei etwa einem Achtel Modul, in Kamerapixeln also je nach Codegröße zwischen einem Viertelpixel und einem Pixel. Es lohnt sich, das in etwas zu übersetzen, mit dem eine Regie arbeiten kann. Ein Kamerapixel sind 0,042 Bogengrad. Bei 1/60 s Belichtung - ein Handy in einem schwach beleuchteten Raum, das auf einen hellen Bildschirm belichtet - ist ein Viertelpixel eine Winkelgeschwindigkeit von etwa 0,6 Grad pro Sekunde. Das ist eine einigermaßen ruhig gehaltene Hand, und es ist keine Hand, die sich über ein Sofa streckt.

Auf die Bewegung des Codes selbst angewandt ist dieselbe Rechnung brutal. Bei drei Bildhöhen entspricht eine Bildhöhe 457 Kamerapixeln, ein über den Bildschirm driftender Code hat bei 1/60 s Belichtung also ein Budget von rund einem Dreißigstel Bildhöhe pro Sekunde. Ein Code, der in zwei Sekunden elegant hereinfährt, eine langsame Kamerafahrt auf den Abbinder, eine Handkamera hinter einem eingebauten Code, ein Abprallen, eine Drehung, ein Aufskalieren: Sie alle liegen für die gesamte Dauer der Bewegung ein bis zwei Größenordnungen außerhalb dieses Budgets. Der Code ist Dekoration, bis er stehen bleibt.

Warum die Leseraten Wahrscheinlichkeiten sind und die Größentabelle nicht

In diesen beiden Tabellen versteckt sich eine Unterscheidung, die wichtiger ist als beide zusammen. Ein zu kleiner Code scheitert deterministisch: Jedes Bild ist dasselbe Bild, dreißigmal pro Sekunde, und keines dekodiert. Ein ausreichend großer, aber bewegter Code scheitert zufällig: Die meisten Bilder sind verschmiert, manche nicht, und der Scan klappt in dem Moment, in dem ein sauberes Bild eintrifft.

Standzeit ist also keine Allzwecklösung, sondern die Lösung für genau einen Fehlermodus. Drei zusätzliche Sekunden kaufen neunzig weitere Versuche gegen ein Bewegungsproblem und kaufen überhaupt nichts gegen ein Abtastproblem. Das ist das Nützlichste in diesem Text für alle, die ein Produktionsbriefing schreiben: Ist der Code groß genug und steht er still, wird er fast sofort gelesen; ist er zu klein, wird er nicht gelesen, auch wenn du ihn den ganzen Werbeblock stehen lässt.

Zwei Arten, wie ein Spot seinen eigenen Code unbemerkt verkleinert

Alles bisher ging von einer 25 Zeichen langen URL bei Fehlerkorrektur M aus. Beide Annahmen werden regelmäßig gebrochen, und zwar von Leuten, die helfen wollen, und beide brechen auf dieselbe Weise: Sie fügen Module hinzu, der Code behält seine physische Größe auf dem Bildschirm, und jedes Modul wird kleiner.

Der Tracking-String

Die Kampagnen-URL kommt von der Mediaagentur mit angehängten Messparametern, denn so wird die Kampagne attribuiert. Niemand schaut nach, was das mit dem Raster macht.

Die URLZeichenVersionModulePixel pro ModulLeserate
Eine kurze Weiterleitung auf einer eigenen Domain122254,15100 %
Eine kurze URL mit ausgeschriebenem Schema273293,70100 %
Eine lesbare Kampagnen-URL464333,3493 %
Dieselbe mit UTM-Parametern936412,8077 %
Dieselbe mit vollständigem Tracking-String1579532,2548 %
Alle fünf bei 30 % der Bildhöhe, k = 3, stehend und komprimiert - ein großzügig bemessener Code, der jede Schwelle in diesem Text übertrifft. Das Einzige, was sich ändert, sind die Nutzdaten. 60 Versuche pro Zeile.

Ein vollständiger Tracking-String halbiert die Leserate eines ansonsten korrekt bemessenen Codes. Er tut das genau in dem Moment, in dem das Marketingteam sich am meisten bemüht, die Kampagne zu messen, was ihn zu einem guten Kandidaten für das selbstschädigendste Muster des ganzen Themas macht. Die Lösung ist nicht, auf Attribution zu verzichten: Sie besteht darin, einen kurzen Pfad auf einer eigenen Domain vor die Parameter zu setzen und sie bei der Weiterleitung anzuhängen, wo sie nichts kosten. Was eine gemietete Weiterleitung über die Lebensdauer einer Kampagne wirklich kostet ist ein eigenes Argument, und es endet bei derselben Empfehlung.

Die Fehlerkorrektur hochdrehen

Der andere Reflex ist, die Fehlerkorrekturstufe anzuheben, nach der Theorie, eine schwerer lesbare Situation verlange nach mehr Redundanz. Es ist der falsche Hebel und sogar aktiv schädlich, aus demselben Grund, aus dem er bei niedrigem Kontrast falsch ist: Er erzeugt Redundanz, indem er Module hinzufügt, und Module sind das Knappe.

FehlerkorrekturVersionModuleRate bei 25 % des BildesRate bei 30 % des Bildes
L225100 %100 %
M32999 %100 %
Q32999 %100 %
H43374 %92 %
Dieselben Nutzdaten auf jeder Stufe, bei k = 3, stehend und komprimiert. L und M kosten nichts, H kostet bei der Größe, die die meisten Spots verwenden würden, 25 Punkte, weil es eine ganze Version für Redundanz ausgibt, die der Bildschirm nie gebraucht hätte.

H gibt es für Codes, die schmutzig werden, einreißen, überdruckt oder teilweise von einem Logo verdeckt werden. Ein Code auf einem Fernseher ist nichts davon - er wird pixelgenau ausgeliefert und dann unterabgetastet, und Unterabtastung ist kein Schaden, den die Fehlerkorrekturblöcke reparieren können, weil sie verhindert, dass die Module überhaupt gelesen werden. Nimm auf dem Bildschirm L oder M und stecke die gesparten Module in die Größe der einzelnen. Der vollständige Kompromiss zwischen Wiederherstellungskapazität und Modulgröße gilt hier unverändert; Bildschirme stehen einfach an dem Ende, an dem Redundanz am wenigsten wert ist.

Zeit ist das Budget, das niemand aufschreibt

Dieser Abschnitt ist eine Schätzung und keine Messung, und das gehört vor die Zahlen und nicht dahinter. Nichts am Prüfstand kann messen, wie lange ein Mensch braucht, um auf einen Fernseher zu reagieren, und diese Studie haben wir nicht gemacht.

Die Abfolge, die eine Zuschauerin durchlaufen muss, ist nicht kurz. Den Code bemerken und entscheiden, dass er es wert ist, dauert ein bis zwei Sekunden. Handy holen und entsperren: zwei bis vier. Zur Kamera kommen: ein bis drei weitere, mehr, wenn das Handy dort aufgeht, wo es zuletzt war. Den Fernseher ins Bild nehmen, den Autofokus einrasten lassen und stillhalten: zwei bis vier mehr. Das sind sechs bis dreizehn Sekunden aus dem Stand, gegen einen Abbinder, der üblicherweise drei bis fünf Sekunden steht.

Es gibt eine echte Entlastung, und die verdient Anerkennung: Ein großer Teil des Fernsehens wird von Leuten geschaut, die das Handy ohnehin in der Hand haben, was das Holen und das meiste Entsperren streicht. Vermutlich ist genau das der Grund, warum überhaupt jemand dachte, QR-Codes würden im Fernsehen funktionieren. Es ist ein starkes Argument dafür, dass es das Format gibt, und es ist kein Argument für drei Sekunden, denn die letzten beiden Schritte - zur Kamera kommen, dann zielen und stillhalten - verkürzt ein Handy in der Hand nicht.

Unsere eigene Empfehlung, ausdrücklich als Meinung: Acht Sekunden eines stehenden, richtig bemessenen Codes sind das Minimum, das man briefen sollte, und wenn die Kreation keine acht Sekunden hergibt, dann hat die Kreation entschieden, dass der Code Dekoration ist. Das ist eine legitime Entscheidung. Sie sollte nur nicht versehentlich getroffen und hinterher als Scanrate gemessen werden.

Der Spot, an den sich alle erinnern, hat sich an die Arithmetik gehalten

Es gibt ein berühmtes Gegenbeispiel zu all dem, und es ist genau deshalb berühmt, weil es ausnahmslos alles gemacht hat, was dieser Text empfiehlt. Im Februar 2022 schaltete Coinbase einen sechzig Sekunden langen Super-Bowl-Spot, der aus nichts anderem bestand als einem farbwechselnden QR-Code, der über einen ansonsten schwarzen Bildschirm trudelte. Variety und CNN berichteten damals darüber, und CNN über den Teil, an den sich alle erinnern: Die Landingpage bekam so viel Traffic, dass die App umfiel.

Halte das neben die Tabellen oben. Der Code war groß, weil ihm das ganze Bild gehörte. Er war allein, also konkurrierte nichts um die Aufmerksamkeit der Zuschauer oder um die Bits des Encoders. Er stand sechzig Sekunden statt vier, also rund 1.800 Kamerabilder, in denen ein Dekoder ein sauberes finden konnte. Und er driftete langsam, statt zu schneiden oder zu skalieren, was einen bewegten Code innerhalb des Schmierbudgets pro Belichtung hält, in das eine schnelle Bewegung nicht passt.

Das Einzige, wovon dieser Text abraten würde, ist der Farbwechsel, und selbst der ist weniger leichtsinnig, als er aussieht: Die Palette blieb durchgehend dunkel auf hell oder hell auf dunkel, statt zwei Mitteltöne zu paaren, und genau das ist die Unterscheidung, die tatsächlich entscheidet, ob ein farbiger Code eine Kamera übersteht. Was er nicht getan hat: einen kleinen Code für vier Sekunden in eine Ecke setzen.

Die Schlussfolgerung ist nicht, dass jede Marke sechzig Super-Bowl-Sekunden kaufen sollte. Sie ist, dass ausgerechnet der Spot, der immer als Beweis dafür zitiert wird, dass QR-Codes im Fernsehen funktionieren, sein gesamtes kreatives Budget dafür ausgegeben hat, der Physik zu genügen. Als Präzedenzfall für einen Eckcode auf einem Abbinder zitiert, beweist er das Gegenteil dessen, wofür er üblicherweise herhalten muss.

Stell es in zehn Minuten auf deinem eigenen Fernseher nach

Alle Zahlen oben sind Zahlen für eine simulierte Kamera und einen Dekoder, der schwächer ist als die in den Hosentaschen der Leute. Die Zahl, die für eine konkrete Kampagne zählt, ist die, die deren fertige Datei auf einem echten Bildschirm von einem echten Sofa aus liefert, und die bekommst du in zehn Minuten.

  1. Spiel die ausgelieferte Datei ab, nicht das Master. Bring das echte Deliverable auf den echten Fernseher: casten, vom Stick laden oder als nicht gelistetes Video auf der Zielplattform hochladen. Ein ProRes-Master auf einem kalibrierten Monitor zu sichten ist die Prüfung, die längst bestanden ist und dir nichts gesagt hat.
  2. Setz dich dahin, wo Leute sitzen, und notier das Verhältnis. Miss den Abstand vom Bildschirm zum Sofa, miss die Bildhöhe und teile. Dieses Verhältnis ist das k aus allen Tabellen oben, und es ist die Zahl, mit der du dein Ergebnis mit ihnen vergleichen kannst. Alles zwischen drei und viereinhalb ist ein gewöhnlicher Raum.
  3. Scanne mit zwei nativen Kamera-Apps. Einmal iOS, einmal Android, mit der eingebauten Kamera statt mit einer Scanner-App. Scanner-Apps sind toleranter als die nativen und lassen Codes durch, die dein Publikum nicht lesen kann. Gib jedem Handy fünf Sekunden, so viel gibt der Abbinder auch.
  4. Mach es nachlässig. Einhändig, aus einer schlaffen Haltung, ohne den Ellbogen irgendwo aufzustützen. Das sorgfältige Ergebnis ist nicht das Ergebnis: Ein Viertel Kamerapixel Bewegung während einer Belichtung ist das gesamte Bewegungsbudget, und Aufstützen ist mehr wert als das.
  5. Mach die Kontrolle, bevor du irgendetwas schließt. Geh hin und scanne dasselbe eingefrorene Bild aus einem Meter. Scheitert das, liegt das Problem an Kontrast, Ruhezone oder Nutzdaten und nicht an der Größe, und den Code zu vergrößern wird es nicht lösen.
  6. In Fünf-Prozent-Schritten hochgehen, bis es zweimal klappt, dann noch einen Schritt. Exportiere neu mit dem Code fünf Prozent der Bildhöhe größer und wiederhole, bis beide Handys ihn vom Sofa aus zweimal hintereinander scannen. Dann geh noch einen Schritt weiter. Dieser letzte Schritt ist der Spielraum für die Handys, Räume und Augen, die im Test nicht vorkamen.

Wenn dabei herauskommt, dass der Code ein Drittel des Bildschirms braucht, dann ist das die echte Antwort - und sie ist vor dem Dreh mehr wert als nach dem Kampagnenreport.

Was stattdessen in den Spot gehört

Die Empfehlung, mit der dieser Text endet, ist schmaler als seine Überschrift. QR-Codes in der Videowerbung sind nicht nutzlos - sie sind teuer, in Bildfläche und in Sekunden, und fast jeder Spot, der einen benutzt, weigert sich, einen der beiden Preise zu zahlen, und schiebt es hinterher auf das Format.

  • Wenn du einen Code einsetzt, gib ihm ein Viertel bis ein Drittel der Bildhöhe und acht stehende Sekunden. Praktisch heißt das: Der Code ist der Abbinder und keine Verzierung darauf. Das ist die ganze Empfehlung; alles andere hier folgt daraus.
  • Halte die Nutzdaten unter etwa 25 Zeichen. Ein kurzer Pfad auf einer eigenen Domain, mit den Tracking-Parametern an der Weiterleitung statt im Code. Das ist mehr wert als jede andere Einzeländerung, weil es Module zurückkauft, ohne irgendwo etwas zu kosten.
  • Nimm Fehlerkorrektur L oder M, nicht H. Auf einem Bildschirm wird der Code unbeschädigt ausgeliefert und dann unterabgetastet, und gegen Unterabtastung hilft Redundanz nicht.
  • Beweg ihn nicht, skaliere ihn nicht, dreh ihn nicht und lass ihn nicht hereinfahren. Bewegung hat ein Budget von deutlich unter einem Kamerapixel pro Belichtung, und jede Animation liegt Größenordnungen darüber. Animiere alles andere auf der Karte.
  • Wird der Spot überwiegend auf dem Handy gesehen, nimm gar keinen Code. Der Bildschirm, der den Spot abspielt, ist der Bildschirm, der ihn lesen müsste, und ein zweites Gerät gibt es nicht. Nimm das antippbare Format, das die Plattform anbietet.
  • Überleg dir stattdessen eine kurze gesprochene und geschriebene URL. Eine einprägsame Domain, vorgelesen und als Text gezeigt, hat keine minimale Winkelgröße, übersteht Bewegung, funktioniert auf einem Handybildschirm und verlangt niemandem ab, etwas ruhig zu halten. Sie konvertiert pro Kontakt schlechter und scheitert weniger absolut, und für einen Vier-Sekunden-Abbinder ist dieser Tausch meist richtig herum.
  • Das Kino ist die Ausnahme, die man kennen sollte. Dieselbe Arithmetik, die die Ecke eines Fernsehers ausschließt, ist im Kinosaal großzügig, wo die Leinwand von jedem Platz aus einen weit größeren Winkel einnimmt. Ein Code, der zu Hause aussichtslos wäre, darf auf einer Kinoleinwand bescheiden sein.

Eine ehrliche Anmerkung zu unserem eigenen Werkzeug, weil dieser Text gerade etwas empfohlen hat, was es nicht kann. KoloQR, ein kostenloser QR-Code-Generator mit runden und frei geformten QR-Codes, legt die Fehlerkorrektur auf Stufe H fest, weil er in der Mitte des Rasters eine Fläche für ein Logo freiräumt und H diese Fläche bezahlt. Für einen gedruckten Code mit einer Marke in der Mitte ist das die richtige Voreinstellung und für einen Bildschirm die falsche, also trägt ein aus dem Generator für einen Videospot exportierter Code eine Version mehr, als er braucht. Bei einem Drittel der Bildhöhe kostet das nichts Messbares; bei einem Fünftel ist es Teil des Grundes, warum ein Fünftel nicht funktioniert.

Die Grenze von alldem ist die oben genannte: Wir haben eine Software-Kette gemessen, kein Wohnzimmer. Dafür wurde kein Handy auf einen Fernseher gerichtet, und der Dekoder, den wir verwendet haben, ist schwächer als die, die deinen Spot tatsächlich lesen werden - die echte Kante liegt also eher unterhalb der Zahlen dieser Tabellen als darüber. Wozu die Tabellen taugen, ist die Auskunft, auf welcher Seite davon ein Eckcode liegt, und das ist nicht knapp.

Erstelle deinen QR-Code

Kostenlos, ohne Konto und ohne Wasserzeichen. Wähle eine Form, füge ein Logo hinzu, prüfe den Kontrast und exportiere SVG, PDF, EPS oder PNG - ein statischer Code ohne Abo dahinter.

QR-Code erstellen

Questions? Answered

Etwa ein Viertel bis ein Drittel der Bildhöhe. In unseren Messungen wurde ein Code bei 25 % der Bildhöhe aus normaler Wohnzimmerentfernung zu 95 % gelesen und einer bei 30 % jedes Mal, während einer bei 20 % zu 6 % gelesen wurde und alles Kleinere gar nicht. Die Antwort ist ein Bruchteil und kein Maß in Zentimetern, weil Menschen weiter weg von großen Fernsehern sitzen - derselbe Prozentsatz gilt also auf jedem Bildschirm.

Weil die Kamera nicht genug Pixel auf jedes Kästchen des Coderasters bekommt. Ein Dekoder braucht rund zweieinhalb Kamerapixel pro Modul, und ein eckengroßer Code auf einem Fernseher aus drei Metern liefert etwa eines. Dieses Scheitern ist nicht graduell - der Übergang von funktioniert zu aussichtslos umfasst etwa ein Viertelpixel pro Modul -, der Code wird also sofort gelesen oder nie, egal wie lange du das Handy draufhältst.

Deutlich weniger, als man annimmt. Wir haben das Master auf JPEG-Qualität 40 komprimiert, weit unter allem, was ein Sender oder eine Streamingplattform ausliefern würde, und die Leserate bewegte sich um ein bis zwei Punkte, ohne dass sich die Fehlerschwelle überhaupt verschob. Was QR-Codes im Fernsehen zerstört, ist nicht der Encoder, sondern der Abstand zwischen Bildschirm und Zuschauerin, und den repariert keine Bitrate.

Mindestens acht Sekunden, als Meinung und nicht als Messung. Eine Zuschauerin muss den Code bemerken, ein Handy finden, es entsperren, zur Kamera kommen, den Fernseher ins Bild nehmen und stillhalten - das sind aus dem Stand sechs bis dreizehn Sekunden gegen einen Abbinder, der meist drei bis fünf dauert. Zusätzliche Zeit hilft nur, wenn der Code schon groß genug ist: Standzeit kauft mehr Versuche gegen ein Bewegungsproblem und nichts gegen ein Größenproblem.

Nur sehr langsam. Das Bewegungsbudget liegt bei etwa einem Achtel Modul Schmierer während einer einzigen Belichtung, bei einem typisch bemessenen Code also zwischen einem Viertelpixel und einem Kamerapixel - grob einem Dreißigstel Bildhöhe pro Sekunde Drift. Einfahrten, Kamerafahrten, Aufskalierungen und Drehungen liegen ein bis zwei Größenordnungen darüber, ein Code ist also für die gesamte Animation Dekoration und wird erst scanbar, wenn er stehen bleibt.

Nein - setz sie herunter. Fehlerkorrektur erzeugt Redundanz durch zusätzliche Module, und bei fester Größe auf dem Bildschirm heißen mehr Module weniger Kamerapixel auf jedem einzelnen. In unseren Messungen wurden dieselben Nutzdaten auf Stufe H zu 74 % gelesen, wo L und M zu 100 % gelesen wurden, weil H eine ganze Version dafür ausgibt, Schäden zu reparieren, die ein Bildschirm nie zufügt. Unterabtastung ist kein Schaden, den Fehlerkorrektur reparieren kann, weil sie das Lesen der Module von vornherein verhindert.

Erheblich, bei den Größen, die Videospots verwenden. Eine 46 Zeichen lange Kampagnen-URL ist ein Code mit 33 Modulen; dieselbe URL mit vollständigem Tracking-String sind 157 Zeichen und 53 Module, und bei fester Größe auf dem Bildschirm brachte das die Leserate in unserem Test von 93 % auf 48 %. Setz einen kurzen Pfad auf einer eigenen Domain in den Code und häng die Parameter an der Weiterleitung an, wo sie gratis sind.

Selten, und zwar aus einem Grund, der nichts mit der Größe zu tun hat. Das meiste Social-Video wird auf dem Handy geschaut, und der Bildschirm, der den Spot abspielt, ist derselbe, der den Code lesen müsste - es gibt kein zweites Gerät zum Draufhalten. Wo die Plattform einen antippbaren Link anbietet, ist der schlicht besser; ein Code ergibt nur für Social-Video Sinn, das tatsächlich auf einem Fernseher oder einem Desktop-Bildschirm läuft.

Das Kino ist der freundliche Fall. Die Arithmetik hängt nur vom Winkel ab, den die Fläche vom Platz aus einnimmt, und eine Kinoleinwand nimmt von jedem Sitz aus einen weit größeren Winkel ein als ein Fernseher vom Sofa - ein bescheidener Code funktioniert dort gut. Werbetafeln schwanken enorm und müssen einzeln durchgerechnet werden: Ein Code auf einer großen Fläche fünfzig Meter über dem Gehweg kann einen kleineren Winkel einnehmen als ein handygroßer Code auf Armlänge.

Spiel die ausgelieferte Datei auf einem echten Fernseher ab, setz dich dahin, wo das Publikum sitzen wird, und scanne sie mit der eingebauten Kamera-App eines iOS- und eines Android-Handys, nachlässig und einhändig gehalten. Gib jedem Handy dieselben paar Sekunden, die der Abbinder einer Zuschauerin gibt. Jeder Test an einem Schnittmonitor oder Laptop besteht, weil diese Abstände zwei- bis dreimal kürzer sind als ein Sofa - und genau deshalb überlebt das Problem die Produktion.

Warum KoloQR?

  • Erstelle QR-Codes für Websites, Speisekarten, Wi-Fi, PDFs und Visitenkarten
  • Passe Farben, Logos und einzigartige Formen an
  • Lade hochwertige PNG- und SVG-Dateien herunter
  • Für Print und Digital gemacht
QR-Code erstellen
Ein einfacher schwarzer QR-Code neben demselben Code, umgestaltet als Kreis mit Markenfarben