Conversion de langages d'imprimante
Convert ZPL to SBPL: migrating labels from Zebra to SATO printers
ZPL to SATO SBPL command equivalents, the escape-sequence structure of SBPL, font and barcode differences, a before/after example and a checklist for food and pharma lines.
Cet article est disponible en anglais et en espagnol.
SATO printers dominate food processing, pharmaceutical packaging and Japanese-owned plants, and they speak SBPL — a language built from ESC sequences rather than the caret commands of ZPL. A plant that buys SATO for a new line while keeping Zebra at the dock ends up with two copies of every label unless the design is language-independent.
Command equivalents
| Operation | ZPL (Zebra) | SBPL (SATO) |
|---|---|---|
| Start / end | ^XA … ^XZ | <ESC>A … <ESC>Z |
| Label size | ^PW812 ^LL609 | <ESC>A1 0609 0812 (height, width in dots) |
| Field position | ^FO40,30 | <ESC>H0040 <ESC>V0030 |
| Text | ^A0N,36,36 ^FDHello^FS | <ESC>L0202 <ESC>XU Hello (font + magnification) |
| Code 128 | ^BY2 ^BCN,90,Y,N,N ^FDdata^FS | <ESC>BG02090 data (narrow bar 2, height 90) |
| QR code | ^BQN,2,6 ^FDQA,data^FS | <ESC>2D30,L,06,0,0 <ESC>DN0004,data |
| Line / box | ^GB300,2,2^FS | <ESC>FW02H0300 (line) / <ESC>FW0202V0100H0300 (box) |
| Copies | ^PQ5 | <ESC>Q5 |
| Darkness / speed | ^MD10 ^PR4 | <ESC>#E3 <ESC>CS4 |
| Rotation | ^FWR or orientation letter | <ESC>%1 (90°), %2 (180°), %3 (270°) |
<ESC> is the escape character (hex 1B). SBPL commands are sequences of ESC followed by a letter and fixed-width numeric parameters — positions are always four digits, which is why 40 becomes 0040.
What actually changes
- Structure: SBPL sets a position with H/V once and then prints the object; the position persists for the next command unless changed. ZPL repositions every field. A naive translation forgets to reset H/V and stacks fields on top of each other.
- Fonts: SBPL's XU/XS/XM/XB/XL are bitmap fonts with L magnification in whole numbers; outline fonts (ESC RD or ESC $) give scalable text closer to ZPL's ^A0. Japanese and Chinese text uses dedicated font commands ZPL has no equivalent for.
- Barcodes: the B command encodes symbology, narrow bar and height in one code (BG = Code 128); ratios are fixed per symbology rather than free like ^BY. Human-readable text must be added as a separate text field.
- Label size order: SBPL A1 takes height then width — the reverse of ZPL's habit of thinking width first.
- Character encoding: ZPL is mostly ASCII with ^CI for code pages; SBPL Japanese models default to Shift-JIS. Accents in Spanish or French labels need the code page set explicitly.
Before and after
^XA ^PW812 ^LL609 ^FO40,30 ^A0N,36,36 ^FDSafety Harness^FS ^FO40,130 ^BY2 ^BCN,90,Y,N,N ^FD7501234567893^FS ^PQ1 ^XZ
<ESC>A <ESC>A1 0609 0812 <ESC>H0040 <ESC>V0030 <ESC>L0202 <ESC>XU Safety Harness <ESC>H0040 <ESC>V0130 <ESC>BG02090 7501234567893 <ESC>H0040 <ESC>V0230 <ESC>L0101 <ESC>XS 7501234567893 <ESC>Q1 <ESC>Z
The human-readable digits under the barcode had to be added as an explicit text line — ZPL printed them automatically with the Y flag.
Migration checklist
- Confirm the SATO model's resolution and whether it runs SBPL or the newer SBPL with AEP — some commands differ.
- Validate GS1-128 and GS1 DataMatrix output with a verifier; SATO's FNC1 handling uses different escape codes.
- Set the code page for accented characters and test allergen lines in every language you print.
- Keep the ZPL version live for the Zebra units at the dock.
How EtikStudio does it
The design is kept in physical units; exporting to a SATO profile generates the SBPL sequences with positions reset for every object, fonts matched by printed size, barcodes built with the correct symbology codes and FNC1, and the human-readable line generated from the same data field. Food and pharma customers run Zebra and SATO side by side from one library.
Les exemples de commandes sont simplifiés pour la clarté ; la syntaxe exacte varie selon le modèle et le firmware. Testez toujours sur l'imprimante cible.