zplCloud Blog
Online-ZPL-Viewer: ZPL-Etiketten ansehen, linten und verifizieren, bevor sie drucken
Ein Bild vom Etikett ist nur die erste von vier Prüfungen. So renderst du ZPL in der richtigen Auflösung, findest kaputten Code, beweist, dass der Barcode scannt, und fragst den Drucker selbst - kostenlos im Browser und als API für deinen Build.
Eine Vorschau ist nur die erste von vier Prüfungen
ZPL war nie dafür gedacht, von Menschen gelesen zu werden. Es ist ein Befehlsstrom für einen Thermodrucker: ^FO setzt den Stift, ^A0 wählt eine Schrift, ^BC zeichnet einen Code 128, ^XZ schließt das Etikett. Wer ^FO840,60^BQN,2,9 liest und dabei einen QR-Code oben rechts sieht, hat Übung. Und selbst erfahrene Entwickler liegen genau dann daneben, wenn es am meisten wehtut: wenn die Rolle schon aus dem Drucker läuft.
Deshalb greift jeder zuerst zu einem Online-ZPL-Viewer. Code einfügen, Bild ansehen, fertig.
Nur beantwortet das Bild genau eine Frage. Ein Etikett, das richtig aussieht, kann trotzdem auf drei Arten scheitern, die kein Viewer zeigt: Der Code enthält einen Fehler, den ein Drucker verzeiht und der nächste nicht. Der Barcode enthält falsche Daten oder lässt sich nicht scannen. Oder der Drucker am Versandtisch rendert wegen Firmware, Schriften oder Auflösung etwas anderes als jeder Emulator.
Denk also nicht in „einem Viewer“, sondern in vier Prüfungen. Jede beantwortet eine andere Frage. Bei zplCloud sind die ersten drei kostenlose Website-Tools ohne Konto, die vierte steckt im Label-Designer:
| Prüfung | Die Frage dahinter | Tool |
|---|---|---|
| 1. Rendern | Wie sieht das Etikett bei dieser Auflösung aus? | ZPL zu PNG, ZPL zu PDF, ZPL zu SVG |
| 2. Linten | Ist der Code korrekt, vollständig und portabel? | ZPL-Linter, ZPL-Analyser |
| 3. Verifizieren | Lässt sich der Barcode lesen, und stimmen die Daten darin? | Barcode prüfen |
| 4. Drucker-Wahrheit | Was macht dieser Drucker daraus? | Echte Drucker-Vorschau im Label-Designer |
Das Etikett oben in diesem Beitrag hat alle vier durchlaufen: mit 300 dpi von der zplCloud-Engine gerendert, 0 Fehler, 0 Warnungen, 0 Hinweise im Linter, und sowohl der Code 128 als auch der QR-Code wurden aus dem gerenderten Bild zurückgelesen. Genau dieser Standard ist das Ziel dieses Leitfadens.
ZPL-Etikett in 30 Sekunden ansehen
Kein Konto, kein Download, kein Drucker:
1. Öffne ZPL zu PNG (oder ZPL zu PDF bei Dateien mit mehreren Etiketten).
2. Füge dein ZPL ein.
3. Wähle die Auflösung des Druckers, der wirklich drucken wird: 203, 300 oder 600 dpi.
4. Lass Breite und Höhe leer, außer du willst sie überschreiben, und rendere.
Drei Details, die viel Raterei ersparen:
- Die Etikettengröße kommt aus deinem Code. Bleiben Breite und Höhe leer, liest das Tool die Größe aus
^PW(Druckbreite) und^LL(Etikettenlänge) und rechnet sie mit der gewählten Auflösung um. Nur wenn beides fehlt, nimmt es 75 x 50 mm an. Eine abgeschnittene Vorschau ist oft ein fehlendes oder falsches^PWund kein Renderfehler. - PDF zeigt jedes Etikett, PNG und JPG das erste. Eine ZPL-Datei vom Paketdienst oder aus einem ERP-Export enthält oft Dutzende
^XA ... ^XZ-Blöcke. ZPL zu PDF rendert eine Seite pro Etikett, so kannst du durch einen ganzen Stapel blättern. Die Bildformate sind für den schnellen Blick auf ein einzelnes Etikett. - Gleiche Engine, gleiches Ergebnis. Die Tools nutzen die Render-Engine der zplCloud-Plattform, dieselbe, die auch die Designer-Vorschau erzeugt. Was du im Browser prüfst, ist keine separate Annäherung.
Dots, nicht Millimeter: die Auflösungsfalle
Der häufigste Grund, warum ein Etikett „im Viewer gut aussah“ und falsch gedruckt wurde, ist die Auflösung. ZPL-Koordinaten sind Dots, und ein Dot ist auf jeder Druckerklasse physisch anders groß:
| Auflösung | Dots pro mm | ^PW für ein 100 mm breites Etikett | 1 Dot sind |
|---|---|---|---|
| 203 dpi | 8 | ^PW812 | 0,125 mm |
| 300 dpi | 11,8 | ^PW1181 | 0,085 mm |
| 600 dpi | 23,6 | ^PW2362 | 0,042 mm |
Dasselbe ^FO und dasselbe ^A0N,40,40 ergeben deshalb ein Etikett, das etwa ein Drittel kleiner ist, wenn eine für 203 dpi geschriebene Vorlage an einen 300-dpi-Drucker geht: 812 Dots sind auf dem ersten 101,6 mm, auf dem zweiten 68,8 mm. Text schrumpft, Barcodes werden dichter, und ein Layout, das das Etikett ausgefüllt hat, sitzt plötzlich in der linken oberen Ecke.
Zwei Gewohnheiten verhindern das:
- Immer mit der Auflösung des Zieldruckers ansehen, nicht mit dem, was das Tool gerade voreingestellt hat. Muss eine Vorlage 203- und 300-dpi-Drucker bedienen, rendere sie in beiden.
- Einmal rechnen statt schätzen. Der DPI-Rechner rechnet Millimeter, Zoll, Dots und Punkt bei jeder Auflösung um: Etikettengröße, Schrifthöhe und Modulbreite eines Barcodes an einer Stelle. Der Leitfaden zur Etikettengröße in ZPL erklärt, wie
^PW,^LLund die Medieneinstellungen zusammenspielen.
Linten, bevor du druckst
Ein Renderer ist absichtlich nachsichtig: Er versucht, irgendetwas zu zeichnen. Ein Drucker ist auch nachsichtig, aber anders, und genau in diesem Unterschied entstehen Produktionsfehler. Ein fehlendes ^FS, das eine Firmware toleriert, verschluckt auf einer anderen das nächste Feld. Ein Feld bei x = 900 auf einem 812 Dots breiten Etikett ist schlicht nicht da. Nichts in einem Bild verrät dir, dass das Bild der Glücksfall ist.
Der ZPL-Linter liest den Code so, wie ein strenger Drucker es tun würde, und meldet jeden Befund mit Schweregrad (Fehler, Warnung, Hinweis), Zeile und Spalte und einem konkreten Lösungsvorschlag. Er prüft derzeit 36 Regeln in neun Kategorien, zum Beispiel:
| Kategorie | Was er findet | Typische Lösung |
|---|---|---|
| Struktur | kein ^XA oder ^XZ, verschachteltes ^XA, Befehle nach dem letzten ^XZ, ein Feld ohne abschließendes ^FS | jedes Feld schließen, ein Etikett pro ^XA ... ^XZ |
| Layout | ^FO jenseits von ^PW oder ^LL, negative Ursprünge, zwei Felder am selben Ursprung | Koordinaten korrigieren, ^PW/^LL mit dem Material abgleichen |
| Daten | Nicht-ASCII-Text ohne ^CI, unmaskiertes ^ oder ~ in Felddaten, leeres ^FD | ^CI28 ergänzen, ^FH mit Hex-Escapes verwenden |
| Schrift | eine gespeicherte Schrift, die benutzt, aber im Auftrag nie geladen wird, Tippfehler im Dateinamen | Schrift laden oder die richtige E:-Datei angeben |
| Barcode | Länge und Prüfziffer bei EAN/UPC, ungültige Zeichen für Code 39, Codabar, MSI, Interleaved 2 of 5 und andere, leere Barcode-Daten, sehr lange QR-Inhalte | Daten korrigieren, bevor sie den Drucker erreichen |
| Grafik | ^GFA mit ungültigem Hex oder einer Länge, die nicht zum Kopf passt, gespeicherte Grafiken, die nie geladen werden | Grafik neu erzeugen, im Auftrag laden |
| Hardware | Druckgeschwindigkeit außerhalb des Bereichs, Schwärzung unter 0 oder über 30, Etiketten länger als 24 Zoll | Werte verwenden, die der Drucker kann |
| Portabilität | Zebra-spezifische Befehle | relevant, wenn dasselbe ZPL auch an Drucker anderer Hersteller geht |
| Performance | mehr als 150 Felder in einem Etikett | Etikett aufteilen oder vereinfachen |
Die Befunde lassen sich als PDF-Bericht herunterladen. Das hilft, wenn das ZPL von einem Lieferanten oder aus einer Versandintegration kommt und jemand anderes es korrigieren muss. Für Amazon-FBA-Etiketten gibt es zusätzlich das Profil amazon-fba mit neun eigenen Regeln.
Eine ehrliche Grenze, und der Grund, warum die vier Prüfungen zusammengehören: Ein Linter prüft, wo ein Feld beginnt, das Rendering zeigt, wo es endet. Ein Text mit 40 Zeichen an einem gültigen Ursprung kann trotzdem über den Rand laufen. Linten und ansehen, nicht linten oder ansehen.
Geht es weniger um „ist das korrekt?“ und mehr um „was macht diese Datei eigentlich?“, hilft der ZPL-Analyser: Er erklärt die Befehle eines Auftrags, liest Etikettengröße, Auflösung, Geschwindigkeit und Schwärzung aus und schätzt Druck-, Netzwerk- und Renderzeit für 1 bis 10.000 Etiketten.
Text, der ankommt: Kodierung und Schriften
Umlaute, die zu Fragezeichen werden, und asiatische Zeichen, die als leere Kästchen drucken, sind der zweite Klassiker. Die Vorschau sieht oft perfekt aus, weil der Viewer die Schriften hat, der Drucker aber nicht. Drei Befehle entscheiden über das Ergebnis:
^CI28stellt die Felddaten auf UTF-8 um. Ohne diesen Befehl wird alles jenseits von reinem ASCII in der Standard-Codepage des Druckers interpretiert. Setz ihn direkt nach^XA. Genau deshalb meldet der Linter Nicht-ASCII-Text ohne^CI. Details: ^CI-Referenz.^FHmaskiert Zeichen, die ZPL sonst als Befehl liest. Ein^oder~in^FDbeendet das Feld oder startet einen Befehl. Mit^FHvor dem Feld druckt_5Eein Zirkumflex und_7Eeine Tilde. Details: ^FH-Referenz.^A@wählt eine TrueType-Schrift über den Dateinamen, zum Beispiel^A@N,52,52,E:ZPLCLOUD.TTF. Das eingebaute^A0deckt lateinischen Text ab. Für Kyrillisch, Griechisch, CJK, Hangul, Arabisch, Hebräisch, Thai oder Devanagari brauchst du eine Schrift, die diese Zeichen enthält.
zplCloud bringt dafür eine eigene, offen lizenzierte Schrift mit, ZPLCLOUD.TTF, mit mehr als 42.500 Codepoints über diese Schriftsysteme. Das Etikett oben nutzt sie für „Müller GmbH · 東京“. Zwei Punkte, die keine Vorschau zeigt:
1. Die Schrift muss auf dem Drucker liegen. Ein Viewer, der die Schrift hat, rendert den Text, auch wenn der Drucker die Datei nie gesehen hat. Auf dem Drucker fällt das Feld dann auf eine andere Schrift zurück oder bleibt leer. Stell sicher, dass die TTF auf dem Laufwerk E: liegt, und lass dich vom Linter vor Schriften warnen, die benutzt, aber im Auftrag nicht geladen werden.
2. Rechts-nach-links und komplexe Schriften brauchen Shaping. Auf Link-OS-Druckern schaltet ^PA bidirektionalen Text und Zeichenformung für Schriften wie Arabisch und Devanagari ein (^PA-Referenz). In unseren Tests auf echten Druckern griff die Formung bei einfachen Feldern, nicht aber bei Text in einem ^FB-Feldblock. Prüf das auf deinem Modell, bevor du dich auf umbrochenen arabischen Text verlässt.
Mehr zu Schriften im Leitfaden zu ZPL-Schriften.
Barcodes: richtig aussehen ist nicht richtig scannen
Ein gerenderter Barcode ist ein Bild aus Strichen. Ob ein Scanner ihn lesen kann und ob das Gelesene stimmt, sind zwei getrennte Fragen, und beide sind wichtiger als das Bild.
Lässt er sich lesen? Die meisten Scanprobleme liegen an der Geometrie, nicht an den Daten:
- Modulbreite.
^BYlegt die Breite des schmalsten Strichs in Dots fest. Bei 203 dpi ist ein Dot 0,125 mm, für viele Scanner zu fein. Zwei Dots oder mehr sind die sicherere Wahl. Siehe ^BY-Referenz. - Ruhezone. Lineare Codes brauchen auf beiden Seiten freien Raum. Für Code 128 gilt als Faustregel die zehnfache Modulbreite. Ein Barcode, der bündig an Etikettenrand oder Rahmenlinie sitzt, kann scheitern, obwohl er perfekt aussieht.
- Auflösung. Ein Code, der bei 600 dpi dicht, aber lesbar ist, kann bei 203 dpi zusammenfallen. Ein Grund mehr, mit der Auflösung des echten Druckers anzusehen.
Stimmen die Daten? Ein Barcode kann einwandfrei dekodieren und trotzdem eine falsche Prüfziffer, einen ungültigen GS1-Application-Identifier oder ein Verfallsdatum im falschen Format enthalten.
Barcode prüfen deckt beides ab. Lade ein gerendertes Etikett, einen Scan oder ein Foto aus dem Lager hoch, und das Tool dekodiert bis zu acht Codes pro Bild und prüft dann den Inhalt: GS1-Application-Identifier, Prüfziffern, Längen, Zeichensätze, Datumswerte und Trennzeichen. Willst du nur den Inhalt validieren, kannst du die Daten auch direkt einfügen. Beim Etikett oben las es ZPL-2026-0914 aus dem Code 128 und https://zplcloud.com aus dem QR-Code: gerendert, nicht gedruckt, und trotzdem verifiziert.
Scheitert ein Barcode schon am Scanner, führt warum ein ZPL-Barcode nicht scannt durch die üblichen Ursachen.
Frag den Drucker selbst
Jeder Emulator, auch unserer, ist eine Interpretation von ZPL. Die Referenz ist die Firmware des Druckers. Firmware-Versionen unterscheiden sich, gespeicherte Schriften und Grafiken auch, und manches Verhalten ist schlicht modellabhängig.
Deshalb hat der zplCloud-Designer neben PDF und SVG einen dritten Vorschau-Tab: die echte Drucker-Vorschau. Sie schickt das ZPL an die eingebaute Weboberfläche des Druckers und lässt die Firmware das Etikett als Bild rendern, ohne es zu drucken. Du siehst, was genau dieser Drucker mit seinen Schriften und seiner Firmware erzeugen würde.
- Druckern, die der Server direkt erreicht, geht die Vorschau direkt zu.
- Bei Druckern hinter einer Firewall läuft die Anfrage über den zplCloud-CLI-Agenten im lokalen Netz, eine eingehende Verbindung ist nicht nötig.
- Passt die Vorschau, kann derselbe Tab das Etikett drucken, mit Stückzahl und Nullpunkt-Versatz.
Nutze sie für den Schritt, der entscheidet, ob eine Vorlage live geht: das erste Etikett auf einem neuen Druckermodell, nach einem Firmware-Update oder bei einer Vorlage mit gespeicherten Schriften oder Grafiken.
Vom einzelnen Etikett zu jedem Commit: dieselben Prüfungen als API
Ein Etikett von Hand zu prüfen, geht bei einer Vorlage. Bei hundert Artikeln, drei Druckerauflösungen und einem Release pro Woche geht es nicht mehr. Genau hier hören die meisten Viewer auf, und genau hier werden die Prüfungen wertvoll: Eine kaputte Vorlage fällt vor der Produktion auf und nicht erst am Packtisch.
Jedes Tool der Website gibt es auch als API-Endpunkt unter https://api.zplcloud.com/v1/tools/, mit derselben Engine und denselben Regeln. Ein Lint-Schritt in einer Build-Pipeline braucht nur ein paar Zeilen:
# Build abbrechen, wenn die Vorlage Lint-Fehler hat
zpl=$(jq -Rs . < templates/shipping-label.zpl)
result=$(curl -s -X POST https://api.zplcloud.com/v1/tools/zpl-linter \
-H "X-API-Key: $ZPLCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"zpl\": $zpl, \"dpi\": 203}")
echo "$result" | jq -r '.issues[] | "\(.severity) \(.code) line \(.line): \(.message)"'
test "$(echo "$result" | jq '.errorCount')" -eq 0
Die Antwort enthält clean, errorCount, warningCount, infoCount und eine Liste issues mit Schweregrad, Code, Kategorie, Meldung, Zeile, Spalte und Lösungsvorschlag. Genauso rendert /v1/tools/zpl-to-pdf ein Prüf-PDF mit einer Seite pro Etikett für das Review, und /v1/tools/check-barcode dekodiert die Barcodes aus einem gerenderten PNG.
Praktische Details: Die Tool-Endpunkte nehmen bis zu 2.000.000 Zeichen ZPL an, sie sind nicht ratenbegrenzt (jeder Aufruf zählt als Rendering in deiner Nutzungsstatistik), und sie sind in der Tool-API-Referenz dokumentiert.
Und wenn nach „das Etikett stimmt“ der Schritt „jetzt zehntausend davon drucken“ kommt, übernimmt dieselbe Plattform: Designs mit Datenbindung, Batch-Rendering, Print Views für die Halle und Druck über Weblink oder den CLI-Agenten. Die Prüfungen aus diesem Leitfaden sind einfach der erste Teil dieses Wegs.
ZPL und ZPL II im Jahr 2026: worauf es wirklich ankommt
In Tabellen findet man noch Vergleiche von „ZPL“ und „ZPL II“. Für alles, was du heute schreibst, ist die Unterscheidung vor allem historisch: Aktuelle Zebra-Drucker sprechen ZPL II, und wer heute „ZPL“ sagt, meint ZPL II.
Die Kompatibilitätsfragen, die entscheiden, ob ein Etikett richtig druckt, sind andere:
- Auflösung des Zieldruckers (siehe oben).
- Auf dem Drucker gespeicherte Schriften und Grafiken, von denen ein Viewer nichts weiß.
- Firmware-Funktionen, zum Beispiel Textformung mit
^PAauf Link-OS-Druckern. - Herstellererweiterungen, wenn dasselbe ZPL auch an Drucker anderer Hersteller geht, die ZPL emulieren. Die Portabilitätsregel des Linters meldet dafür Zebra-spezifische Befehle.
Kann ich produktives ZPL gefahrlos einfügen?
Echte Etiketten enthalten echte Daten: Kundennamen, Adressen, Bestellnummern. Die Frage ist also berechtigt.
- Die Website-Tools verarbeiten dein ZPL im Arbeitsspeicher für die Dauer der Umwandlung und speichern es nicht. Dasselbe gilt für Bilder, die du bei „Barcode prüfen“ hochlädst.
- zplCloud läuft auf Servern in Deutschland.
- Für die API nutzt du deinen eigenen Schlüssel, Aufrufe werden also deinem Konto zugeordnet und nicht einer anonymen Sitzung.
- Dürfen Daten dein Netz gar nicht verlassen, kann die Plattform als Container in deiner eigenen Umgebung laufen, und der CLI-Agent bindet die Drucker lokal an.
Die kostenlosen Website-Tools haben für anonyme Nutzung Fair-Use-Grenzen (50.000 Zeichen ZPL pro Anfrage und eine Anfragegrenze pro Minute und Stunde). Angemeldete Nutzer bekommen höhere Grenzen, die API-Tools haben keine.
Checkliste vor dem Release einer ZPL-Vorlage
Bevor eine Vorlage live geht, oder nachdem sich etwas an ihr geändert hat:
1. Mit der Zielauflösung rendern, und zwar in jeder Auflösung, mit der die Vorlage gedruckt wird.
2. ^PW und ^LL prüfen gegen das echte Material, damit die Vorschaugröße kein Zufall ist.
3. Linten: null Fehler, und jede Warnung entweder behoben oder verstanden.
4. Nach Text suchen, der überläuft, besonders mit den längsten realistischen Daten, nicht mit dem Beispiel.
5. ^CI28 für alles jenseits von ASCII, und die TrueType-Schrift wirklich auf dem Drucker.
6. Jeden Barcode dekodieren aus dem Rendering und seinen Inhalt prüfen, inklusive Prüfziffern und GS1-Daten.
7. Ruhezonen einhalten und eine Modulbreite wählen, die die Scanner vor Ort lesen.
8. Eine echte Drucker-Vorschau auf jedem eingesetzten Druckermodell und jeder Firmware.
9. Schritte 1, 3 und 6 im Build automatisieren, damit die nächste Änderung geprüft wird, ohne dass jemand daran denken muss.
FAQ
Was ist eine ZPL-Datei?
Eine reine Textdatei mit Befehlen in der Zebra Programming Language. Jedes Etikett beginnt mit ^XA und endet mit ^XZ, dazwischen positionieren Befehle Felder und legen Text, Barcodes und Grafiken fest. Die Dateiendung variiert (.zpl, .txt, .prn), entscheidend ist der Inhalt.
Brauche ich einen Drucker, um ZPL anzusehen?
Nein. Die Website-Tools rendern ZPL ohne Drucker zu PNG, JPG, PDF oder SVG. Einen Drucker brauchst du nur für die letzte Prüfung, die echte Drucker-Vorschau, die zeigt, wie die Firmware eines bestimmten Druckers das Etikett rendert.
Warum sieht mein Etikett im Viewer richtig aus, druckt aber falsch?
Die häufigsten Ursachen sind eine andere Auflösung (203 statt 300 dpi), ein falsches oder fehlendes ^PW/^LL, eine TrueType-Schrift, die der Viewer hat, der Drucker aber nicht, und Textkodierung ohne ^CI28. Die Auflösungstabelle und der Linter in diesem Leitfaden decken alle vier ab.
Kann ich eine Datei mit vielen Etiketten ansehen?
Ja. ZPL zu PDF rendert eine Seite pro ^XA ... ^XZ-Block. PNG, JPG und SVG zeigen das erste Etikett.
Welche Auflösungen werden unterstützt?
Die Website-Tools rendern mit 203, 300 und 600 dpi, den Auflösungen gängiger Zebra-Drucker. Der Label-Designer akzeptiert auch eigene Werte.
Prüft der Viewer, ob mein Barcode scannt?
Die Vorschau zeigt den Barcode, „Barcode prüfen“ beweist ihn. Lade das gerenderte Bild oder ein Foto hoch, und das Tool dekodiert die Codes und prüft Prüfziffern und GS1-Daten.
Kann ich ZPL automatisch in CI/CD prüfen?
Ja. Alle Tools gibt es unter https://api.zplcloud.com/v1/tools/ mit API-Schlüssel. Der Linter liefert einen errorCount, an dem du einen Build scheitern lassen kannst, und zpl-to-pdf erzeugt ein Prüf-PDF fürs Review.
Wird mein ZPL gespeichert, wenn ich die Online-Tools nutze?
Nein. Die Website-Tools verarbeiten den Inhalt für die Umwandlung im Arbeitsspeicher und behalten ihn nicht.
Ist das kostenlos?
Die Website-Tools sind kostenlos und brauchen kein Konto, mit Fair-Use-Grenzen für anonyme Nutzung. Die API-Tools brauchen einen API-Schlüssel, die Tarife findest du unter Preise.
Was, wenn ich noch kein ZPL habe, nur eine Idee für das Design?
Starte im Label-Designer oder mit einer der Vorlagen. Der Designer erzeugt das ZPL und zeigt dieselben Vorschauen, während du arbeitest.
Probier es mit deinem eigenen Etikett: Füge es in ZPL zu PNG ein, lass den Linter laufen und dekodiere das Ergebnis mit Barcode prüfen. Drei Tabs, kein Konto, und du weißt mehr über dieses Etikett, als jede einzelne Vorschau dir sagen könnte.