ZPL Guide — Evolabel Docs (2025)

  • Docs »
  • Integration Guide »
  • ZPL Guide
  • View page source

The ZPL (Zebra Programming Language) support in Evolabel™ printers provides a way toleverage legacy layouts created for Zebra™ printers.

Intended Audience

This document is intended for readers familiar with ZPL, who wants to discoverthe possibilities to use existing ZPL files with Evolabel systems.

In order to run the examples it is also good to be familiar with:

  • TCP/IP addresses and ports.

  • Transferring text files using raw TCP/IP.

    In the examples we are using the Windows 10 command prompt to send files usingNetcat for Windows. The filenc.exe was extracted (using the password nc) toC:\Users\Evo\Desktop>.

FAQ

How much visual difference can I expect?

In general you can expect small differences arising from font differences.We have made an effort to make the Trivium font optically similar andmetrically compatible with the CG Triumvirate font.

You can check the result on the free online viewer.Note that the online viewer only supports single documents and no store/recallfunctionality. In order to test more advanced cases, test against a real printer, oruse the Virtual Printer.

The ZPL code below was sent to both printers with the font name being the only difference:

^XA^LH0,0^PW660^LL150^FO10,8^GB650,140, 2,B^FS^FO20,30^A0N,60,^FDLorem ipsum 1234567890^FS^FO20,100^A0N,40,^FDPrinted with Triumvirate/Trivium font^FS^XZ

ZPL Guide — Evolabel Docs (2)

Rendered on a Zebra printer

ZPL Guide — Evolabel Docs (3)

Rendered on an Evolabel printer

Why do I get parentheses in my human readable?

Our GS1-128 barcode generator complies with the GS1 specification that states thathuman readable text shall have parentheses around the AIs. This only applies forbarcodes with automatically generated human readable text.

Can I use my layouts created for 203 dpi?

Evolabel printers only use 300 dpi print heads but can scale 203 dpi layouts to300 dpi. Note that graphical elements, text and so on are scaled from 203 to 300 dpi,but barcodes must be scaled from 200 to 300 dpi, as scaling must be uniformlyperformed.

The worst case errors for different barcode expansions are listed below.Note that for variable ratio barcodes the errors are often less.

203 dpi300 dpiComment
1132% smaller. Poor but not used in practice.
231.5% larger. Good
349.8% smaller. Noticeable
461.5% larger. Good
575,3% smaller. Noticeable
691.5% larger. Good
7103.3% smaller. Hardly noticeable
8121.5% larger. Good

Can I prevent parse errors for unsupported ZPL commands?

It is possible to turn off the Parse error warning underSETTINGS ‣ Print Jobs ‣ Protocol Emulation ‣ Unsupported Command Behavior

Enable ZPL Emulation

Enable and configure the ZPL emulation under Protocol Emulation.

Check Connection

After a restart, check that the protocol is enabled by connecting to the printer’sIP address at port 9100.

C:\Users\Evo\Desktop>nc <printer ip> 9100

When the ZPL protocol is enabled, and a client is connected to port 9100 the textZPL client from x.x.x.xwill be displayed under OPERATION ‣ CLIENTS.

Press CTRL+C to close the connection.

Note that CLIENTS displays No Connections.

First ZPL Test

  1. Copy the example ZPL layout below into a file that is named first.zpl.

    ^XA^LH0,0^LL200^PW400^FO50,20^FDFirst ZPL Test^FS^XZ
  2. Send it to the printer and check that the preview displays a label withFirst ZPL Test in monospaced font.

    C:\Users\Evo\Desktop>nc -w1 <printer ip> 9100 < first.zpl

Fonts

Evolabel printers are using the TriviumCondensed Bold font to emulate theZebra CG Triumvirate font, and the Liberation Mono font for monospaced fonts.It is also possible to install your own TrueType fonts.A large number of high quality free and open source fonts can be found atGoogle Fonts.

Note

Please ensure that you have the necessary legal rights to use the font in a printerbefore proceeding to installing it.

Install Font

  1. Insert a USB drive with a TrueType font.
  2. Navigate to SETTINGS ‣ Files ‣ Fonts and expandResources To Add. Locate the font that you want to install and press+.

Use Installed Font in a ZPL Layout

Fonts can be referenced with the ^A@ command using the font filename. Thefile name is case insensitive.

Example:

^XA^PW400^LL80^FO10,20^A@N,24,24,E:ARIBLK.TTF^FDTest with Arial Black^FS^XZ

ZPL Guide — Evolabel Docs (4)

Including Job Metadata

By using a specially formatted ZPL comment it is possible to send job metadata like a custom job id andexternal settings. This can be used for identifying the job via JSON-RPC, selecting a profileor controlling a motorized stand.

The metadata is embedded as a JSON dict in the ZPL comment (^FX command). If the comment starts with {it is parsed as JSON and the result is used as job variables.

Note

  • JSON data must not contain ^ or ~
  • JSON \uxxxx notation should be used for non ASCII data
  • The ^FX command must be part of a label format (between ^XA and ^XZ)
  • Variables from multiple ^FX commands are merged.

Example: Activate Profile

Including the special variable __profile__ activates the specified profile.

^XA^LH0,0^LL200^PW400^FX{"_custom_job_id": "job_abc1", "__profile__": "profile1"}^FO50,20^FDTest with job variables^FS^XZ

This example sets the job id to job_abc1 and activates the profile profile1.

Example: Unprintable Job

Including the special variable _printable and setting it to false creates anunprintable job

^XA^FX{"_custom_job_id": "job_abc2", "_printable": false}^XZ

Example: Expected Data For Code Matching

Including the special variable _code_matching allows explicitly setting expecteddata used for Code Matching Validation in the Scan sequence configuration.

^XA^BY10^FO020,55^BIN,100,Y,N^FD12345^FS^FO40,230^BQN,2,10^FDLA,1234567890123456789012345678901234567890^FS^FX Exact Match Data for label verification ^FS^FX{"_code_matching":{"expected":[["1234567890123456789012345678901234567890","12345"]]}}^FS^XZ

See also

Code Matching API Documentation.

Example: Controlling Motorized Stand Position

Including the special variable __stand1-position_mm sets the stand position before thejob is activated.

^XA^LH0,0^LL200^PW400^FX{"_custom_job_id": "job_abc1", "__stand1-position_mm": 800}^FO50,20^FDTest at stand position 800^FS^XZ

Supported Commands

CommandDescriptionSupportComment
^AScalable/Bitmapped FontGood
^A@Use Font Name to Call FontGood
^B0Aztec Bar CodeGood
^B1Code 11 Bar CodeFull
^B2Interleaved 2 of 5 Bar CodeFull
^B3Code 39 Bar CodeFull
^B7PDF417 Bar CodeGood
^B8EAN-8 Bar CodeFull
^B9UPC-E Bar CodeGoodDoes not support eliminating check digit from human readable. We fail on UPC codes with too few 0s even if CV is N
^BACode 93 Bar CodeGoode ignored, will not print check characters
^BCCode 128 Bar Code (Subsets A, B, and C)Good
^BDUPS MaxiCode Bar CodeGoodImplemented Zebra-like truncation in 20181023-160714
^BEEAN-13 Bar CodeFull
^BIIndustrial 2 of 5 Bar CodesFull
^BJStandard 2 of 5 Bar CodeFull
^BKANSI Codabar Bar CodeFullLibraries, blood banks
^BMMSI Bar CodeGoode2 ignored, always prints check digits in interpretation
^BOAztec Bar CodeGood
^BQQR Code Bar CodeGoodMixed/manual mode and structured append since 20240115
^BRGS1 Databar (formerly RSS)GoodSince 0.28.0
^BSUPC/EAN ExtensionsFullISBN barcodes
^BUUPC-A Bar CodeGoodDoes not support eliminating check digit from human readable
^BXData Matrix Bar CodeGood
^BYBar Code Field DefaultGood
^CC/~CCChange CaretFullSince 20240820. RS also supported.
^CD/~CDChange DelimiterFullSince 20240820. US also supported.
^CFChange Alphanumeric Default FontGood
^CIChange International Font/EncodingGoodEncoding in stored label formats since 0.27.1
^CT/~CTChange TildeFullSince 20240820. DLE also supported.
^CVCode ValidationPartialOngoing
^CWFont IdentifierGood
~DBDownload Bitmap FontGoodConverted to TrueType, supported since 20240226
^DFDownload FormatGood
~DGDownload GraphicsGoodASCII HEX, ZB64 supported
~DUDownload Unbounded TrueType FontGoodASCII HEX, ZB64 supported
~DYDownload ObjectsPartialPNG and GRF supported. BMP, PCX and TrueType since 20240226
~EGErase GraphicsPartialOnly supports deleting graphics from RAM
^EGErase GraphicsPartialOnly supports deleting graphics from RAM
^FBField BlockGoodUnsupported: e (hanging indent)
^FCField ClockFull
^FDField DataGood
^FHField Hexadecimal IndicatorGood
^FNField NumberGood
^FOField OriginGoodAuto justification is not supported
^FPField ParameterPartialSince 0.29.4. Reverse and vertical printing supported for static text only.
^FRField Reverse PrintFull
^FSField SeparatorFull
^FTField TypesetGoodAuto justification is not supported
^FVField VariablePartialVariable data using ^MCN supported
^FWField OrientationGoodAuto justification is not supported
^FXCommentGoodSee Including Job Metadata
^GBGraphic BoxGoodRounded corners are not supported
^GCGraphic CircleFull
^GDGraphic Diagonal LineFull
^GEGraphic EllipseFull
^GFGraphic FieldGoodASCII HEX, ZB64, binary
^GSGraphic SymbolGoodLimited to a single symbol
~HIHost IdentificationPartialReports static information
~HSHost Status ReturnPartialPaper out and ribbon out supported
^HWHost Directory ListGoodSince 0.29.4
^IDObject DeletePartialOnly supports deleting images from RAM
^ILImage LoadFull
^IMImage MoveFull
^ISImage SaveGood
~JACancel AllGood
^JMSet Dots per MillimeterPartialOnly ^JMA is supported
^LHLabel HomeFull
^LLLabel LengthFull
^LRLabel Reverse PrintFull
^MCMap ClearPartialVariable data with ^MCN and ^FV is supported
^MTMedia TypeFull
^MUSet Units of MeasurementPartialmm and inches supported since 0.27.0
^POPrint OrientationFull
^PMPrinting Mirror Image of LabelPartialOnly ^PMN is supported
^PQPrint QuantityGoodPause, cut, replicates, override pause count, cut on error are not applicable
^PRPrint RateGoodSlew speed will be ignored
^PWPrint WidthFull
~SDSet DarknessGoodDoes not take ^MD into account
^SFSerialization Field (with a Standard ^FD String)PartialNumeric only
^SNSerialization DataPartialNumeric only
^SOSet Offset (for Real-Time Clock)Full
^STSet Date and Time (for Real-Time Clock)FullSince 0.28.4
^SZSet ZPL ModePartialOnly ZPL II is supported
^TBText BlocksGood
^XAStart FormatGoodSTX supported since 20240820
^XFRecall FormatPartialOnly one ^XF is supported
^XGRecall GraphicFull
^XZEnd FormatGoodETX supported since 20240820

Ignored Commands

These commands are recognized but ignored.

CommandDescriptionSupportComment
^COCache OnIgnored
^FAField AllocateIgnored
~HQHost QueryIgnored
^JJSet Auxiliary PortIgnored
~JNHead Test FatalIgnored
~JOHead Test Non-FatalIgnored
~JSChange Backfeed SequenceIgnored
^JUConfiguration UpdateIgnored
^JVUndocumentedIgnored
^JZReprint After ErrorIgnored
^LSLabel ShiftIgnored
^LTLabel TopIgnored
^MDMedia DarknessIgnored
^MFMedia FeedIgnored
^MLMaximum Label LengthIgnoredSince 2023-12-04
^MMPrint ModeIgnored
^MNMedia TrackingIgnored
^MSUndocumentedIgnored
^PAAdvanced Text PropertiesIgnored
^PP/~PPProgrammable PauseIgnoredSince 0.29.4
~PSPrint StartIgnoredSince 0.29.4
^RRSpecify RFID Retries for a Block or Enable Adaptive Antenna SelectionIgnored
^RSSet Up RFID ParametersIgnored
^SLSet Mode and Language (for Real-Time Clock)Ignored
~TATear-off Adjust PositionIgnored
ZPL Guide — Evolabel Docs (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Manual Maggio

Last Updated:

Views: 5868

Rating: 4.9 / 5 (49 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Manual Maggio

Birthday: 1998-01-20

Address: 359 Kelvin Stream, Lake Eldonview, MT 33517-1242

Phone: +577037762465

Job: Product Hospitality Supervisor

Hobby: Gardening, Web surfing, Video gaming, Amateur radio, Flag Football, Reading, Table tennis

Introduction: My name is Manual Maggio, I am a thankful, tender, adventurous, delightful, fantastic, proud, graceful person who loves writing and wants to share my knowledge and understanding with you.