Skip navigation


This Application Note outlines the basics for printing to and developing apps for Zebra printers. It details the process of setting up and beginning to use a Zebra printer.


This document includes the following sections:

1.  Setting Up Your Zebra Printer

2.  Connecting Your Printer

3.  Testing the Connection

4.  Configuring Your Printer

5.  Designing Your Label

6.  Using Development Tools to Create Your Printer App

7.  Testing Your Printer App


Also for common terms, refer to the Appendix – Common Terms.


Target Audience

This document is for developers with little to no experience using Zebra printers or who need to develop an app to print barcode labels, receipts, RFID tags, or other tracking labels.


Technical Requirements

The information in this Application Note assumes you have technical competence with core programming concepts and rationales.


Note:   It is recommended that you use a PC, because Zebra does not support all of the resources required to set up and use Zebra printers on Macs.


To review the entire process, refer to the Getting Started with Zebra Printers and Apps Application Note document.

Hi iOS Developers!


As you may already know, a common constraint when printing to a Zebra printer from an iOS device via standard Bluetooth is that it is required to go into the device’s Settings menu and pair the printer before printing from your application.

And if another iOS device needs to print to the same printer, then the previous device needs to be unpaired through its Settings menu before the new device can pair with the printer.


This constant process of manual pairing and unpairing can be a cumbersome process for users that need to be able to print to a single printer with multiple iOS devices.

However, it is possible to streamline the pairing process with Zebra printers that support Bluetooth Low Energy.


Using Bluetooth Low Energy, your users can simply walk up to a printer with their iOS device and print from their application without having to pair the printer and device beforehand.


If this is something you’d be interested in, I’ve written an application note that explains more and can be found here:   

Bluetooth Low Energy Printing - iOS


Greg Pawlik

ISV Engineer

Zebra has again expanded and enhanced our Link-OS Multiplatform Software Development Kit.


The new SDK includes support for the Xamarin Cross-Platform Development tool set. Developers can now quickly add printing support to their Xamarin-based apps for use on Android and iOS devices. The extensive Source Code, Developer Demos and documentation in the Zebra SDK make adding print capabilities simple and straightforward. We’ve even gone beyond printing to include features that allow Developers to add Device Management capabilities, such as firmware downloading and status checking to your apps.


Download this new SDK.

Good Evening developers!

I'm very excited to announce we now support Xamarin in our Link-OS Multiplatform SDK.  This is a subject near and dear to me.  I, like many developers in this business, am primarily a C# coder.  Many developers who use our products have worked on server and older Windows Mobile/CE OS's using .NET.  Not to mention, I like C# and Visual Studio. Updating skills for these newer mobile OS's is a difficult transition.  Xamarin, just acquired by Microsoft, is a developer toolset that allows me and other developers to use our skills and create modern apps for mobile OS's or move older apps to them.



Xamarin is integrated into Visual Studio (2012 and 2015) and is now FREE for small teams.  There is also a Xamarin Studio for MAC users and iOS development.  You can write apps in C# and compile them for Android or iOS. 



I was also proud to be the lead developer on this project at Zebra.   Now you know who to blame if your favorite feature is not there yet.    I focused this SDK on maximum platform code reuse, ease of development, and giving you good samples to work from.  We are releasing the SDK as a Xamarin Plugin to enable the greatest amount of cross-platform support with the least amount of platform specific coding. 95% of the APIs are completely reusable across Android, iOS, and Forms apps even though the underlying libraries are very hardware targeted.  We also added a Developer Demo to show best practices in a real printing app. 



The supported API's are light right now, but we plan to update and add more over time and as the other SDK's get updated.  I'd love to hear your feedback on what we can do to improve this kit.  You have a lot of influence over these SDK's as Zebra is committed to enabling our developer community.



You can find the Plugin in the LINK-OS MULTIPLATFORM SDK, the Xamarin Component Store, and Nuget

Full API Documentation is on Zebra Techdocs


Robin West

Solution Architect

Zebra has designed a set of tools to help partners, developers and end users take advantage of the features that each Zebra printer has to offer. These tools are downloaded for free and commonly used during the integration process, or during daily tasks.


Tools, such as ZebraDesigner or Zebra Setup utilities (ZSU), do an automatic installation of the driver when the printer is connected to the computer and the printer is detected. When the driver is installed in the PC, the driver normally does a quick check of the printer and it determines the installation of the default driver based on the default control language of the printer. Depending on the type of printer, these languages can be defaulted to ZPL, CPCL, LINE_PRINT, EPL, etc.   


The purpose of this blog is to let our audience know how important it is to match the languages in the app with the driver and the printer.


When a user connects the ZQ510/520 printer to the computer, ZebraDesigner or ZSU will install the driver of this printer to work with CPCL, which also supports the LINE_PRINT mode.  This scenario determines that when a user is working with ZebraDesigner, the tool will generate labels based on CPCL. In addition, if a user needs to download a font, the tool will work in CPCL. Fonts downloaded in CPCL have extensions in CPF.


If, for example, a user needs to print in ZPL and the driver is in CPCL, the driver will not recognize the fonts. The same situation occurs if a user wants to download CPCL fonts with a ZPL driver; the fonts will be not recognized. ZPL fonts usually have extensions in TTF.


In graphics 1 and 2, the screenshots depict how a user can select the print control language of the driver for a printer like ZQ510 (CPCL) or ZQ510 (ZPL).


It is important to highlight here that the Zebra Link-OS SDK does not allow doing the same selection mentioned above. When an instance of communication with the printer is initiated, it will be capturing the default language of the printer. In the case of the ZQ510, it should always be defaulted to LINE_PRINT.  If a developer is sending commands in ZPL, the commands will not be executed by the printer. To avoid this type of confusion, we recommend that our developers to set up the language to ZPL or LINE_PRINT before sending print jobs in order to assure the correct functionality of the printer. Developers can make this type of configuration by using SGD commands.


The new Zebra mobile printers (except ZQ110) allow two language configuration options. These options, explained below, can be set up through a direct SGD command or the SDK’s libraries methods.


hybrid_xml_zpl: When the printer is configured with this option, it supports both types of control printing language CPCL and ZPL.


LINE_PRINT: When the printer is configured with this option, it supports only LINE_PRINT and CPCL.


ZPL – Printing Language set up:


! U1 setvar "device.languages" "zpl"


Same command in Android:


SGD.SET("device.languages", "zpl", connection);


SGD.SET("device.languages", "hybrid_xml_zpl", connection);


In Legacy printers like RW420 – ZPL is in uppercase.


! U1 setvar "device.languages" "ZPL"


Same command in Android:


SGD.SET("device.languages", "ZPL", connection);


CPCL  - Printing language set up:


In Legacy printers like RW420 – CPCL is in uppercase.


! U1 setvar "device.languages" "CPCL"


Same Command in Android:


SGD.SET("device.languages", "CPCL", connection);


Line_print – Printing language set up:


! U1 setvar "device.languages" "line_print"


Same Command in Android:


SGD.SET("device.languages", "line_print", connection);



Graphic 1.


Graphic 2.


Note 1: Use of TrueType or other non-Zebra purchased fonts require licensing and it is the responsibility of the user to acquire permission for use in the printer.


Note 2: The ZT/ZD/ZQ printers do not support .FNT font files. Use the Zebra Setup Utilities or ZebraNet Bridge to convert and upload the proper fonts (TTF) to the printer.


We recommend the Zebra Setup Utility as an option for converting and downloading Fonts.


Download the Zebra Setup Utility. Read More>>


Converting a font using the Zebra Setup Utility Read More>>



To more effectively work across multiple operating systems and utilize the cloud, developers are increasingly building web-based or hybrid (web / native OS) apps.

Unfortunately, many operating systems limit the connections between a browser and peripheral devices, such as a printer. This presents a significant challenge to developers.

This Zebra Application Note document outlines the following options that enable you to create apps with bi-directional communications between your app and the printer.


  • TCP/IP Back – End
  • Cloud Connect
  • Browser Print
  • Enterprise Browser
  • RhoMobile
  • URL Schema


Each section contains:


  • An overview of the solution
  • Process Flow
  • Use cases
  • If available, reference information and sample code


For more information, review the Zebra Web Printing Solutions Application Note document.

Tell us about your use case for web printing and help us create the next set of tools and functionality.

Robin West

RhoMobile Printing Sample

Posted by Robin West Expert Feb 24, 2016

Along with the sample code we recently posted to show an easy way to print from a webpage using Enterprise Browser, we have also published a sample of the same app using the RhoMobile suite as a thin client app for printing from websites. 


RhoMobile applications are OS-agnostic, able to support enterprise- and consumer-class operating systems including Windows® Embedded Handheld, Windows® CE, Apple® iOS, and Android®. You have complete control over how applications behave on different devices. With RhoMobile Suite, you are finally free from OS design constraints, able to create business applications that are every bit as elegant looking and intuitive as their consumer counterparts.


Try this new sample code walk-through of using the printing capabilities and provide your feedback.

Zebra Technologies - Printing Labels – RhoMobile - JavaScript

My name is Beverly Vinson and I run the white listing program at Zebra. I also assist our partners with application development questions, integration cases and Zebra’s Early Adopter Program (where we provide pre-release product to partners and ISV’s for testing and feedback before a product launches). If you are currently developing or planning to develop an iOS app to connect to a Zebra MFi product, you will most likely speak with me at some point during your development cycle. Zebra has some great resources to assist you along your way and help you be aware of a “gotcha” that you might not know about. Read on to find out more!

If you are developing an app that connects an iOS device to a Zebra MFi product via Bluetooth and you plan to distribute your app via Apple’s Business-to-Business (B2B) or standard App Store, then you must register your app with Zebra in a process known as white listing, which is a requirement from Apple.


During white listing, Zebra works to test your application with the Zebra products that you support. We advise you of any changes that need to be made in your app in order to support the products. Once the app passes our testing, Zebra then submits a request to Apple to white list or register your app with our device(s).


Only Zebra can make this request as the manufacturer of the device(s). Once Apple approves this request, we send you the Product Plan ID’s (PPID’s) for the supported devices, which you will use when you submit your app to Apple. Without going through this process, your app will be rejected by Apple.


I recently updated Zebra’s White Listing FAQ that outlines what white listing means, the process and how to get started working with our team on your white list request. It also details the criteria for determining if you need to go through the white listing process.


You might not be aware of this Apple requirement and so you submit your app to Apple and then Apple rejects your app submission. This can be confusing as you were not aware of this need prior to seeing the rejection email from Apple. Sometimes, you are in a bind because there is a customer waiting on this app, so you need to get the white listing done as soon as possible. We hope that the updated FAQs, along with this blog will help to make our developer community more aware of this Apple requirement ahead of time so that you are not faced with a tight time line when submitting an app to Apple.


Along with the updated White Listing FAQ, Zebra has recently published a presentation outlining Best Practices in Creating a Printing Application for Zebra Printers. This slide deck walks you through ways to improve the quality of your printing applications. It discusses basic concepts of printing app development, best practices for Zebra app development, Zebra’s validation program and white listing programs. You will learn basic Zebra Printer terminology and printer status checks to perform, to name a few topics.

If you have questions on white listing, please let us know!

Robin West

Questions...And Appologies

Posted by Robin West Expert Feb 10, 2016

Hi everyone from the printing community.  The printing technologies pages have been very active and the printer ISV team is committed to engaging the community as much as possible.  Recently we noticed a drop in the number of questions being posted and and we didn't know why.  This morning we figured it out and found many of you were posting to our landing page and the technologies page where we were not watching.  We have fixed that now and we would like to apologize for not seeing your posts.  We will attempt to go back and answer when we can but we ask your patience as we go though the backlog.  If you have urgency, feel free to reply to your own post and let us know.

I've talked about different ways to print from webpages in multiple blogs in the past.  A great option to use if you are using multiple Zebra products is the Enterprise Browser.


Enterprise Browser is a powerful, next generation industrial browser that enables you to build feature-rich web applications that integrate seamlessly with the features in Zebra mobile computers and peripherals.


Enterprise Browser’s feature-rich mobile application development tool allows you to seamlessly integrate the browser into the native peripherals of a device, while enabling barcode scanning, signature capture, and much more.


Enterprise Browser replaces the Zebra Pocket Browser and RhoElements Shared Runtime.


Try this new sample code walk-through of using the printing capabilities and provide your feedback.


Printing Labels - Enterprise Browser - JavaScript

Partner: Paragon DSI

Application: SafeBaby®
Industries: Healthcare, Breast Milk Tracking
Devices Validated: ZD410, LP 2824Plus



Product Details

Description: SafeBaby® BMT is a configurable, customizable breast milk tracking and feeding software system for the treatment of at-risk preemies. SafeBaby® BMT was developed to ensure that every baby being treated in the NICU receives the best nutrition for their needs, while eliminating the risks of traditional enteral feeding methods.

SafeBaby® breast milk tracking for hospitals and donor banks is a revolutionary feed validation system that tracks milk from breast to baby, without the inefficiencies of manual data entry.  By implementing an automated barcode-based feed management system, NICUs can more efficiently treat a greater number of patients in a shorter amount of time, providing each baby with safe, cost-effective, and personalized care free from incorrect nutrition or dangerous tubing misconnections.

Using their SafeBaby® Software System, nurses scan the unique 2-D barcode on each container of expressed breast milk, donor milk, or formula, validating that the correct milk is being fed to the correct child and verifying that the contents are not expired or meant for another infant. Tracking the breast milk’s volume, caloric value, and fortification, and recording the time of the administered feed on each baby’s chart saves neonatal professionals countless hours of busywork and prevents the loss of vital information through human error.

Paragon Data Systems, Inc. Website
Validation Certificate
Download App

Daniel Quagliana

Zebra at NRF 2016

Posted by Daniel Quagliana Expert Jan 18, 2016

One Store, One Experience:

The Customer-Centric Path to Omnichannel Success


Visit Zebra at booth 1603

January 17-20, 2016

Conference and Expo

Javits Convention Center

New York City

Daniel Quagliana

Holiday Break

Posted by Daniel Quagliana Expert Dec 11, 2015

The Zebra Printer ISV Engineering team will be out of the office December 21 - January 1 for the holiday season.  There will be a delay in responses by Zebra associates during this time period.  We apologize for any inconvenience this may cause.  Happy Holidays!

Draft Mode

Draft Mode is used for applications in which faster print speed and text printing are prioritized over barcode scan-ability. Draft Mode is not intended for use in cold or high-temperature scenarios, as higher speed printing in these environments can result in either very light printing or blurry output.

How to turn Draft Mode on:

The "media.draft_mode" command can be sent to the printer to enable Draft Mode. The command has two states – "on" or "off". The default state is "off".

To turn Draft Mode "on," send the following command:

! U1 setvar "media.draft_mode" "on"

NOTE: the command must be followed by a carriage return/line feed or a space character.


Cold Temperature Compensation

The ZQ500 series printers incorporate a new feature that optimizes performance in cold-temperature scenarios.

Lithium ion batteries typically do not perform well in cold-temperature environments. In cold conditions, the printer might display an error or shut down if battery output drops to a low enough voltage level.

The Cold Temperature Compensation feature automatically optimizes printer performance in cold temperature scenarios. This allows the printer to continue operating, even in cold conditions. As the printer warms up, the printer will automatically stop using the Cold Temperature Compensation feature.

NOTE: When the printer enters Cold Temperature Compensation mode, the print speed will be automatically varied to ensure optimal print density. The unit may be audibly louder or print slower when the printer is using the Cold Temperature Compensation feature.


Click to read the full Application Note on Draft Mode and Cold Temperature

Front Panel Password Protection

The latest release of Link-OS™ adds the ability to protect access to the Front Panel. This new feature requires entering a password before modifying a Front Panel item.


This capability is available to all Link-OS printers with a Front Panel, except for the standard QLn220, QLn320, ZQ510 and ZQ520 printers. To use these new front panel password features on your Link-OS printer, update the printer to one of the following Operating System builds (or later):


Printer Model Type

Link-OS Build

QLn Series

V68.19.13Z or later

ZT200 Series

V72.19.13Z or later

ZD500 Series

V74.19.13Z or later

ZT400 Series

V75.19.13Z or later


Printers that have this capability have a new item in the “Tools” menu – “Password Protect”, which provides the following three option levels of protection:

  • ALL

o    All Front Panel Items that can be modified are protected


o    Protects a pre-selected set of items on the Front Panel.

o    The pre-selected set of protected items are listed in Appendix 1 in the linked Application Note below

o    Which items are protected can be changed by modifying Front Panel WML script files

  • NONE

o    None of the Front Panel items are protected when this setting is selected.


Password Protection Commands

There are two Set-Get-Do (SGD) commands and one ZPL command that control the Front Panel password system.

  • display.password.level

o    This SGD sets the password protection level.

o    Choices are “all”, “selected”, and “none”. (See above)

  • The default value for QLn420 and the Healthcare models of QLn220 and QLn320 is “SELECTED”.
  • The default value for ZT230, ZT410, ZT420, ZD500 and ZD500R is “NONE”.
  • display.password.current

o    Sets the current password.

o    For security purposes, when retrieving this value via a getvar, only “*” is returned.

  • ^KP

o    This is the ZPL command that sets the password. (See the Zebra Programming Guide)

o    ^KP and display.password.current are two ways of setting the same password.


Click to read the full Application Note on Front Panel Password Protection for Link-OS Printers

Filter Blog

By date:
By tag: