# SBPL command reference

51 commands from the [canonical SATO Barcode Printer Language reference](https://rfid.me/reference/sbpl/).

Schema version: 1

Reuse: No reuse license is granted by this export. Consult the upstream package or repository terms before reusing the data.

## ESC+A — Start of Label

This is the opening command for every SBPL label — like pressing "New Document". It tells the printer "I'm about to describe a label". Every SBPL job must begin with ESC+A.

- Category: control
- Syntax: `ESC+A`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/a/

When to use: Always. It's the very first command in every label.

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+X22Hello World
ESC+Q1
ESC+Z
```

The simplest possible SBPL label

## ESC+Z — End of Label

This closes the label and triggers printing. Think of it as pressing "Print". Every label that starts with ESC+A must end with ESC+Z.

- Category: control
- Syntax: `ESC+Z`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/z/

When to use: Always. It's the very last command in every label.

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+X22Done!
ESC+Q1
ESC+Z
```

ESC+Z at the end triggers the print

## ESC+Q — Print Quantity

Sets how many copies of the label to print. The number can be 1 to 999999. If you don't specify this, the printer defaults to 1 copy.

- Category: control
- Syntax: `ESC+Qnnnnnn`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/q/

When to use: When you need multiple copies of the same label. Place it just before ESC+Z.

Parameters:

- `nnnnnn`: Number of copies to print (1-999999)

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+X22Print me 5 times
ESC+Q5
ESC+Z
```

Print 5 copies of the label

## ESC+ID — Job ID

Assigns a numeric ID to the print job. This is used for job management — you can reference the ID to cancel or track a specific job in the printer's queue.

- Category: control
- Syntax: `ESC+IDnn`
- Preview supported: no
- Canonical HTML: https://rfid.me/reference/sbpl/id/

When to use: When managing multiple print jobs and you need to identify or cancel specific ones.

Parameters:

- `nn`: Job ID number (2 digits)

Example:

```text
ESC+A
ESC+ID01
ESC+H0100
ESC+V0050
ESC+X22Job One
ESC+Q1
ESC+Z
```

Assign job ID 01 to this label

## ESC+WK — Job Name

Assigns a human-readable name to the print job. This appears in the printer's status display and job listings, making it easier to identify what's printing.

- Category: control
- Syntax: `ESC+WKname`
- Preview supported: no
- Canonical HTML: https://rfid.me/reference/sbpl/wk/

When to use: When you want descriptive names for jobs in the printer queue, especially in production environments with many label formats.

Parameters:

- `name`: Job name string (up to 15 characters)

Example:

```text
ESC+A
ESC+WKShipping Label
ESC+H0100
ESC+V0050
ESC+X22Shipping
ESC+Q1
ESC+Z
```

Name the job "Shipping Label" for easy identification

## ESC+H — Horizontal Position

Sets where the next item will be placed horizontally (left-to-right) on the label. The value is in dots from the left edge. At 203 DPI, there are about 8 dots per millimetre.

- Category: position
- Syntax: `ESC+Hnnnn`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/h/

When to use: Before every field you place on the label. Pair it with ESC+V to set both horizontal and vertical position.

Parameters:

- `nnnn`: Horizontal position in dots from the left edge (0-9999)

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+X22Left side
ESC+H0400
ESC+V0050
ESC+X22Right side
ESC+Q1
ESC+Z
```

Two text fields at different horizontal positions

## ESC+V — Vertical Position

Sets where the next item will be placed vertically (top-to-bottom) on the label. The value is in dots from the top edge. At 203 DPI, about 8 dots per millimetre.

- Category: position
- Syntax: `ESC+Vnnnnn`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/v/

When to use: Before every field you place on the label. Pair it with ESC+H to set both horizontal and vertical position.

Parameters:

- `nnnnn`: Vertical position in dots from the top edge (0-99999)

Example:

```text
ESC+A
ESC+H0100
ESC+V0030
ESC+X22Top line
ESC+H0100
ESC+V0080
ESC+X22Bottom line
ESC+Q1
ESC+Z
```

Two text fields at different vertical positions

## ESC+# — Base Reference Point

Sets a base offset that shifts everything on the label. All subsequent ESC+H and ESC+V positions are relative to this reference point. It's like setting page margins — instead of adjusting every position, you offset the entire design.

- Category: position
- Syntax: `ESC+#hhhhvvvvv`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/hash/

When to use: When you need to shift the entire label layout, for example to account for pre-printed label stock or to reposition a design without changing every coordinate.

Parameters:

- `hhhh`: Horizontal offset in dots (4 digits)
- `vvvvv`: Vertical offset in dots (5 digits)

Example:

```text
ESC+A
ESC+#010000100
ESC+H0000
ESC+V0000
ESC+X22This prints at 100,100
ESC+Q1
ESC+Z
```

Shift entire label 100 dots right and 100 dots down

## ESC+P — Pitch Size

Sets the character spacing (pitch) for bitmap fonts. Higher values add more space between characters. This controls the dot gap between each character in the current font.

- Category: text
- Syntax: `ESC+Pnn`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/p/

When to use: When you want to adjust character spacing — useful for making text more readable or fitting text into a specific width.

Parameters:

- `nn`: Pitch value (0-99, default is 2)

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+P05
ESC+X22Wide spacing
ESC+Q1
ESC+Z
```

Text with wider character spacing

## ESC+L — Character Enlargement

Enlarges the current font by multiplying its width and height. The first two digits set horizontal enlargement, the second two set vertical enlargement. For example, L0202 doubles both width and height.

- Category: text
- Syntax: `ESC+Laabb`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/l/

When to use: When you need larger text. Instead of switching fonts, you can enlarge the current one. Values of 01 mean normal size, 02 means double, etc.

Parameters:

- `aa`: Horizontal enlargement factor (01-24)
- `bb`: Vertical enlargement factor (01-24)

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+L0303
ESC+X22Big Text
ESC+L0101
ESC+H0050
ESC+V0130
ESC+X22Normal Text
ESC+Q1
ESC+Z
```

Triple-size text followed by normal-size text

## ESC+% — Rotation

Rotates the next field. 0 = no rotation, 1 = 90 degrees clockwise, 2 = 180 degrees (upside-down), 3 = 270 degrees clockwise. Applies to text, barcodes, and 2D codes.

- Category: text
- Syntax: `ESC+%n`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/pct/

When to use: When you need text or barcodes rotated — common for side labels, vertical text, or upside-down printing.

Parameters:

- `n`: Rotation: 0 (normal), 1 (90°), 2 (180°), 3 (270°)

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+%0
ESC+X22Normal
ESC+H0300
ESC+V0050
ESC+%1
ESC+X22Rotated 90
ESC+Q1
ESC+Z
```

Normal text alongside 90-degree rotated text

## ESC+PS — Proportional Spacing On

Enables proportional spacing — each character takes up only as much width as it needs ("i" is narrower than "m"). This gives a more natural, professional look to text.

- Category: text
- Syntax: `ESC+PS`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/ps/

When to use: When you want text to look naturally spaced. Pair with ESC+PR to switch back to fixed-width.

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+PS
ESC+X22Proportional text
ESC+Q1
ESC+Z
```

Text with proportional spacing enabled

## ESC+PR — Proportional Spacing Off

Disables proportional spacing and returns to fixed-width (monospaced) mode. Every character takes the same width, which is useful for aligning columns of data.

- Category: text
- Syntax: `ESC+PR`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/pr/

When to use: When you need fixed-width text — common for data tables, numeric columns, or when characters must line up vertically.

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+PR
ESC+X22Fixed width
ESC+Q1
ESC+Z
```

Text with fixed-width (monospaced) spacing

## ESC+E — Auto Line Feed

Sets the automatic line feed spacing in dots. When enabled, text commands automatically advance the vertical position by this amount after printing. Set to 0 to disable.

- Category: text
- Syntax: `ESC+Ennnn`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/e/

When to use: When printing multiple lines of text that should be evenly spaced without manually setting V positions for each line.

Parameters:

- `nnnn`: Line spacing in dots (up to 4 digits)

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+E0030
ESC+X22Line one
ESC+X22Line two
ESC+Q1
ESC+Z
```

Print two lines of text with 30-dot spacing

## ESC+X20 — Font X20 (5x9 Bitmap)

Selects the tiny X20 bitmap font (5 dots wide, 9 dots tall) and prints the text that follows. This is the smallest built-in font — good for fine print and dense information.

- Category: text
- Syntax: `ESC+X20text`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/x20/

When to use: When you need very small text, such as regulatory notices, fine print, or dense data.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+X20Tiny text for fine print
ESC+Q1
ESC+Z
```

Very small text using the X20 font

## ESC+X21 — Font X21 (17x17 Bitmap)

Selects the X21 bitmap font (17 dots wide, 17 dots tall) and prints the text. A small-to-medium fixed-width font, suitable for general-purpose text.

- Category: text
- Syntax: `ESC+X21text`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/x21/

When to use: When you need a small but readable font for general text content.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+X21Medium text
ESC+Q1
ESC+Z
```

Text using the X21 font

## ESC+X22 — Font X22 (24x24 Proportional)

Selects the X22 proportional font (24 dots base) and prints the text. This is one of the most commonly used SBPL fonts — a good default for readable label text.

- Category: text
- Syntax: `ESC+X22text`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/x22/

When to use: The workhorse font for most labels. Use it as your default for readable, proportionally-spaced text.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+X22Hello World
ESC+Q1
ESC+Z
```

Standard text using the popular X22 font

## ESC+X23 — Font X23 (48x48 Proportional)

Selects the large X23 proportional font (48 dots base) and prints the text. A big, bold font for headings and prominent information.

- Category: text
- Syntax: `ESC+X23text`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/x23/

When to use: When you need large, attention-grabbing text — product names, headings, or any text that needs to be read from a distance.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+X23HEADING
ESC+Q1
ESC+Z
```

Large heading text using the X23 font

## ESC+X24 — Font X24 (48x48 Proportional)

Selects the X24 proportional font (48 dots base) and prints the text. Similar in size to X23, but a different typeface. Offers an alternative look for large text.

- Category: text
- Syntax: `ESC+X24text`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/x24/

When to use: When you want a large font with a different style from X23.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+X24Big Alt Font
ESC+Q1
ESC+Z
```

Large text using the X24 alternative font

## ESC+XU — Font XU (Helvetica)

Selects the Helvetica-style scalable font and prints the text. This is a clean, professional sans-serif font commonly used for product labels.

- Category: text
- Syntax: `ESC+XUtext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/xu/

When to use: When you want a clean Helvetica-like appearance. Good for professional labels.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+XUHelvetica style
ESC+Q1
ESC+Z
```

Text in a Helvetica-style font

## ESC+XS — Font XS (Universe Condensed Bold Small)

Selects the small Universe Condensed Bold font and prints the text. A condensed font that fits more characters per line.

- Category: text
- Syntax: `ESC+XStext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/xs/

When to use: When you need to fit more text into a narrow space — condensed fonts are ideal for dense information.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+XSCondensed text fits more
ESC+Q1
ESC+Z
```

Condensed bold text using the XS font

## ESC+XM — Font XM (Universe Condensed Bold Medium)

Selects the medium Universe Condensed Bold font (24 dots base) and prints the text. This is the default font used by the SBPL engine when no font is explicitly selected.

- Category: text
- Syntax: `ESC+XMtext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/xm/

When to use: A solid general-purpose font. It's the engine default, so you get this automatically if you don't specify a font.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+XMDefault font text
ESC+Q1
ESC+Z
```

Text in the default XM font

## ESC+XB — Font XB (Universe Condensed Bold Large)

Selects the large Universe Condensed Bold font (48 dots base) and prints the text. A large, bold condensed font for headings that need to be dense but impactful.

- Category: text
- Syntax: `ESC+XBtext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/xb/

When to use: For large headings where you want a bold, condensed look — fits more text than X23/X24 at the same size.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+XBBOLD HEADING
ESC+Q1
ESC+Z
```

Large bold condensed heading

## ESC+XL — Font XL (Sans Serif Large)

Selects the large Sans Serif font (48 dots base) and prints the text. A clean, large sans-serif typeface for prominent text.

- Category: text
- Syntax: `ESC+XLtext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/xl/

When to use: When you want large, clean sans-serif text for titles or important information.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+XLSans Serif Title
ESC+Q1
ESC+Z
```

Large sans-serif title text

## ESC+U — Font U (5x9 Fixed)

Selects the tiny U bitmap font (5 dots wide, 9 dots tall) and prints the text. A monospaced micro font for extremely dense or technical data.

- Category: text
- Syntax: `ESC+Utext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/u/

When to use: For the smallest possible fixed-width text. Similar size to X20 but monospaced.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+UTiny fixed data
ESC+Q1
ESC+Z
```

Micro text using the U font

## ESC+S — Font S (8x15 Fixed)

Selects the S bitmap font (8 dots wide, 15 dots tall) and prints the text. A small monospaced font — readable and compact.

- Category: text
- Syntax: `ESC+Stext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/s/

When to use: When you need small, fixed-width text that's slightly more readable than the U font.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+SSmall fixed text
ESC+Q1
ESC+Z
```

Small monospaced text using the S font

## ESC+M — Font M (13x20 Fixed)

Selects the M bitmap font (13 dots wide, 20 dots tall) and prints the text. A medium monospaced font — good for data that needs to align in columns.

- Category: text
- Syntax: `ESC+Mtext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/m/

When to use: For medium-sized fixed-width text, especially when vertical alignment matters.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+MMedium fixed text
ESC+Q1
ESC+Z
```

Medium monospaced text using the M font

## ESC+WB — Font WB (18x30 Fixed)

Selects the WB bitmap font (18 dots wide, 30 dots tall) and prints the text. A large monospaced font — bold and easy to read.

- Category: text
- Syntax: `ESC+WBtext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/wb/

When to use: When you need large, fixed-width text that's prominent and easy to scan.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+WBLarge fixed text
ESC+Q1
ESC+Z
```

Large monospaced text using the WB font

## ESC+WL — Font WL (28x52 Fixed)

Selects the WL bitmap font (28 dots wide, 52 dots tall) and prints the text. The largest built-in monospaced font — for text that absolutely must be read from a distance.

- Category: text
- Syntax: `ESC+WLtext`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/wl/

When to use: For the biggest fixed-width text available. Use sparingly — it takes a lot of label space.

Parameters:

- `text`: The text string to print

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+WLBIG
ESC+Q1
ESC+Z
```

Extra-large monospaced text using the WL font

## ESC+FW — Ruled Line / Box

Draws a ruled line or box at the current position. You specify vertical border width, horizontal border width, vertical length, and horizontal length in dots. If the border widths are thin and the lengths are large, you get a rectangle outline. If one length is very small, you get a line.

- Category: graphics
- Syntax: `ESC+FWaaaa,bbbb,cccc,dddd`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/fw/

When to use: For drawing borders, divider lines, boxes, and table structures on your label.

Parameters:

- `aaaa`: Vertical border width in dots
- `bbbb`: Horizontal border width in dots
- `cccc`: Vertical length (height) in dots
- `dddd`: Horizontal length (width) in dots

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+FW0002,0002,0200,0600
ESC+Q1
ESC+Z
```

Draw a 600x200 dot rectangle with 2-dot border

## ESC+FC — Circle

Draws a circle at the current position. You specify the radius and line width in dots. The centre of the circle is at the current H,V position.

- Category: graphics
- Syntax: `ESC+FCrrrr,wwww`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/fc/

When to use: When you need circular elements — certification marks, decorative elements, or attention indicators.

Parameters:

- `rrrr`: Radius in dots
- `wwww`: Line width in dots

Example:

```text
ESC+A
ESC+H0200
ESC+V0150
ESC+FC0080,0003
ESC+Q1
ESC+Z
```

Draw a circle with 80-dot radius and 3-dot line width

## ESC+FT — Triangle

Draws a triangle by specifying three corner points and a line width. Each point is given as x,y coordinates in dots.

- Category: graphics
- Syntax: `ESC+FTx1,y1,x2,y2,x3,y3,w`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/ft/

When to use: For triangular shapes — warning symbols, directional indicators, or decorative elements.

Parameters:

- `x1,y1`: First corner coordinates in dots
- `x2,y2`: Second corner coordinates in dots
- `x3,y3`: Third corner coordinates in dots
- `w`: Line width in dots

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+FT0100,0050,0200,0150,0000,0150,0003
ESC+Q1
ESC+Z
```

Draw a triangle with 3-dot line width

## ESC+BG — Code 128

Prints a Code 128 barcode — the most versatile 1D barcode that can encode all 128 ASCII characters. It automatically selects the most efficient subset (A, B, or C). This is the go-to barcode for most modern labelling applications.

- Category: barcode
- Syntax: `ESC+BGabcdddddata`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/bg/

When to use: For general-purpose barcodes, shipping labels, inventory, and anywhere you need to encode mixed alphanumeric data.

Parameters:

- `a`: Subset: 0=auto, 1=A, 2=B, 3=C
- `b`: Check digit: 0=none, 1=include
- `c`: Bar width ratio (1-4)
- `dddd`: Barcode height in dots (4 digits)
- `data`: The data to encode

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+BG020100ABC-12345
ESC+Q1
ESC+Z
```

Code 128 barcode encoding "ABC-12345" with 100-dot height

## ESC+B — Code 39 (Ratio 1:3)

Prints a Code 39 barcode with a 1:3 wide-to-narrow ratio. Code 39 is one of the oldest barcode standards — it encodes uppercase letters, digits, and a few special characters. The 1:3 ratio produces a more compact barcode.

- Category: barcode
- Syntax: `ESC+Babcdddddata`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/b/

When to use: When your application requires Code 39 — common in military (MIL-STD), automotive (AIAG), and legacy systems.

Parameters:

- `a`: Barcode type selector: 1 = Code 39 (the symbology this command prints)
- `b`: Reserved (use 0)
- `c`: Narrow bar width in dots
- `dddd`: Barcode height in dots (4 digits)
- `data`: Uppercase letters, digits, and -.$/ +%

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+B1020080HELLO123
ESC+Q1
ESC+Z
```

Code 39 barcode (type selector 1) encoding "HELLO123"

## ESC+D — Code 39 (Ratio 1:2)

Prints a Code 39 barcode with a 1:2 wide-to-narrow ratio. This produces a wider, more easily scanned barcode compared to ESC+B. The wider ratio improves readability at the cost of more label space.

- Category: barcode
- Syntax: `ESC+Dabcdddddata`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/d/

When to use: When you need Code 39 with better scan reliability — the wider ratio is more forgiving for worn or damaged labels.

Parameters:

- `a`: Barcode type selector: 1 = Code 39 (the symbology this command prints)
- `b`: Reserved (use 0)
- `c`: Narrow bar width in dots
- `dddd`: Barcode height in dots (4 digits)
- `data`: Uppercase letters, digits, and -.$/ +%

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+D1020080PART-456
ESC+Q1
ESC+Z
```

Code 39 (1:2 ratio) barcode (type selector 1) encoding "PART-456"

## ESC+BC — Code 93

Prints a Code 93 barcode. Code 93 is a denser version of Code 39 — it encodes the same characters but takes up about 25% less space. It includes two mandatory check characters for higher reliability.

- Category: barcode
- Syntax: `ESC+BCabcdddddata`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/bc/

When to use: When you need the Code 39 character set but need a more compact barcode — often used in postal and logistics applications.

Parameters:

- `a`: Check digit mode
- `b`: Reserved (use 0)
- `c`: Narrow bar width in dots
- `dddd`: Barcode height in dots (4 digits)
- `data`: The data to encode

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+BC0020080SHIP789
ESC+Q1
ESC+Z
```

Code 93 barcode encoding "SHIP789"

## ESC+BI — GS1-128 (EAN-128)

Prints a GS1-128 barcode (formerly EAN-128). This is the supply-chain standard — it uses Code 128 encoding but adds GS1 Application Identifiers (AIs) to structure the data. AIs identify what each piece of data means (lot number, expiry date, weight, etc.).

- Category: barcode
- Syntax: `ESC+BIabcdddddata`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/bi/

When to use: For supply chain, logistics, and retail compliance. Required by many trading partners for shipping labels, pallet labels, and product identification.

Parameters:

- `a`: Subset: 0=auto, 1=A, 2=B, 3=C
- `b`: Check digit: 0=none, 1=include
- `c`: Bar width ratio
- `dddd`: Barcode height in dots (4 digits)
- `data`: GS1 data with Application Identifiers

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+BI01020100(01)09501101530003
ESC+Q1
ESC+Z
```

GS1-128 barcode with GTIN Application Identifier

## ESC+2D30 — QR Code

Prints a QR code — the familiar square matrix barcode you see everywhere. QR codes can hold thousands of characters and are scannable by any smartphone camera. They support error correction so they still work even if partially damaged.

- Category: 2dcode
- Syntax: `ESC+2D30,params,data`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/2d30/

When to use: When you need a barcode that smartphones can scan, or when encoding URLs, long text, or large amounts of data.

Parameters:

- `model`: QR model: 1 or 2 (use 2 for standard)
- `ecc`: Error correction: L (7%), M (15%), Q (25%), H (30%)
- `size`: Module size in dots
- `data`: The data to encode

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+2D30,06,03,04,01,00,0000https://example.com
ESC+Q1
ESC+Z
```

QR code encoding a URL

## ESC+2D50 — DataMatrix

Prints a DataMatrix code — a compact 2D barcode popular in manufacturing, electronics, and healthcare. It's smaller than QR for the same data, making it ideal for marking small items like electronic components or medicine vials.

- Category: 2dcode
- Syntax: `ESC+2D50,params,data`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/2d50/

When to use: For marking small items, direct part marking, and applications where space is very limited. Common in electronics, pharmaceutical, and aerospace industries.

Parameters:

- `size`: Module size in dots
- `cols`: Number of columns (0=auto)
- `rows`: Number of rows (0=auto)
- `data`: The data to encode

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+2D50,04,00,00,00,SN12345-ABC
ESC+Q1
ESC+Z
```

DataMatrix code encoding a serial number

## ESC+2D10 — PDF417

Prints a PDF417 barcode — a stacked 2D barcode that looks like a series of small 1D barcodes on top of each other. It can hold a lot of data and is used on ID cards, boarding passes, and postage stamps.

- Category: 2dcode
- Syntax: `ESC+2D10,params,data`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/2d10/

When to use: For applications that need to encode large amounts of data in a scannable format — ID cards, transport documents, and government applications.

Parameters:

- `width`: Module width in dots
- `height`: Row height in dots
- `ecc`: Error correction level (0-8)
- `data`: The data to encode

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+2D10,03,10,02,00,00,0000PASSENGER:JOHN SMITH FLIGHT:QF123
ESC+Q1
ESC+Z
```

PDF417 barcode encoding passenger data

## ESC+A1 — Media Size

Sets the label dimensions. V sets the vertical size (height, or feed length) and H sets the horizontal size (width) — both in dots. At 203 DPI, a standard 4"x2" label is about H0812V0406.

- Category: config
- Syntax: `ESC+A1VnnnnnHmmmm`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/a1/

When to use: At the start of your label when using non-standard label sizes. If your labels aren't the default 4"x2", you need this.

Parameters:

- `nnnnn`: Vertical size (height) in dots, up to 5 digits
- `mmmm`: Horizontal size (width) in dots, up to 4 digits

Example:

```text
ESC+A
ESC+A1V0812H0812
ESC+H0050
ESC+V0050
ESC+X22Square label
ESC+Q1
ESC+Z
```

Set media to a 4"x4" (812x812 dot) square label

## ESC+CS — Print Speed

Sets the print speed. Lower speeds give better print quality (sharper, more precise), while higher speeds increase throughput. The available speeds depend on your printer model.

- Category: config
- Syntax: `ESC+CSnn`
- Preview supported: no
- Canonical HTML: https://rfid.me/reference/sbpl/cs/

When to use: When you need to trade off between quality and speed. Use slower speeds for barcodes and graphics, faster speeds for simple text labels.

Parameters:

- `nn`: Speed setting (printer-dependent, typically 02-10)

Example:

```text
ESC+A
ESC+CS05
ESC+H0100
ESC+V0050
ESC+X22Medium speed
ESC+Q1
ESC+Z
```

Print at medium speed (5)

## ESC+#F — Print Darkness

Sets the print darkness (head temperature). Higher values make the print darker but can cause smearing or ribbon wrinkle on thermal-transfer labels. Lower values produce lighter print but use less ribbon and extend head life.

- Category: config
- Syntax: `ESC+#Fnn`
- Preview supported: no
- Canonical HTML: https://rfid.me/reference/sbpl/hashf/

When to use: When adjusting print quality — increase if barcodes aren't scanning, decrease if print is bleeding or smearing.

Parameters:

- `nn`: Darkness level (printer-dependent, typically 01-20)

Example:

```text
ESC+A
ESC+#F10
ESC+H0100
ESC+V0050
ESC+BG020100TEST-DATA
ESC+Q1
ESC+Z
```

Set medium darkness for barcode printing

## ESC+PO — Print Position Offset

Adjusts the horizontal print position offset. This shifts the entire printable area left or right — useful for fine-tuning alignment when the print head doesn't perfectly line up with the label stock.

- Category: config
- Syntax: `ESC+POnnn`
- Preview supported: no
- Canonical HTML: https://rfid.me/reference/sbpl/po/

When to use: When labels are consistently printing slightly off-centre. This is a printer calibration setting rather than a design command.

Parameters:

- `nnn`: Offset in dots (can be positive or negative)

Example:

```text
ESC+A
ESC+PO010
ESC+H0100
ESC+V0050
ESC+X22Shifted 10 dots
ESC+Q1
ESC+Z
```

Shift print position 10 dots for alignment correction

## ESC+IP0 — RFID EPC Write

Writes data to the EPC (Electronic Product Code) memory bank of a UHF RFID tag. The EPC is the main identifier stored on the tag — it's what gets read when an RFID reader scans the label. This is the core command for RFID-enabled labels.

- Category: rfid
- Syntax: `ESC+IP0,params,data`
- Preview supported: no
- Canonical HTML: https://rfid.me/reference/sbpl/ip0/

When to use: Whenever you're printing RFID labels and need to encode the tag. Used in retail, logistics, inventory management, and supply chain applications.

Parameters:

- `format`: Data format: hex or ASCII
- `length`: Data length in bytes
- `data`: The EPC data to write to the tag

Example:

```text
ESC+A
ESC+H0100
ESC+V0050
ESC+X22RFID Label
ESC+IP0,1,12,300833B2DDD9014000000001
ESC+Q1
ESC+Z
```

Print a label and write a 96-bit EPC to the RFID tag

## ESC+IP5 — RFID Antenna Power

Sets the RFID antenna power level. Higher power gives better read/write range but can cause issues with densely packed tags (reading the wrong tag). Lower power is more precise but the tag must be closer to the antenna.

- Category: rfid
- Syntax: `ESC+IP5nn`
- Preview supported: no
- Canonical HTML: https://rfid.me/reference/sbpl/ip5/

When to use: When fine-tuning RFID encoding reliability — increase if tags aren't encoding, decrease if neighbouring tags are being accidentally written.

Parameters:

- `nn`: Power level (printer-dependent range)

Example:

```text
ESC+A
ESC+IP520
ESC+H0100
ESC+V0050
ESC+X22RFID Label
ESC+IP0,1,12,300833B2DDD9014000000001
ESC+Q1
ESC+Z
```

Set antenna power to 20 before encoding RFID

## ESC+&S — Store Form Overlay

Stores the current label design as a form overlay in the printer's memory. A form overlay is like a template — the static parts of your label (logos, borders, fixed text) that don't change. You can recall it later with ESC+&R and only send the variable data.

- Category: memory
- Syntax: `ESC+&Sname`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/amps/

When to use: When you have a label format that gets printed many times with only some fields changing. Storing the overlay reduces data sent to the printer for each label.

Parameters:

- `name`: Overlay name to store (up to 8 characters)

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+FW0002,0002,0300,0700
ESC+H0060
ESC+V0060
ESC+X23SHIPPING LABEL
ESC+&SSHIP01
ESC+Z
```

Store a shipping label border and heading as overlay "SHIP01"

## ESC+&R — Recall Form Overlay

Recalls a previously stored form overlay from the printer's memory and applies it to the current label. The recalled overlay provides the static design elements, and you add the variable data on top.

- Category: memory
- Syntax: `ESC+&Rname`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/ampr/

When to use: When printing labels that use a stored template. Recall the overlay, then add only the variable fields — this is much faster than resending the entire label design each time.

Parameters:

- `name`: Overlay name to recall (must match a stored overlay)

Example:

```text
ESC+A
ESC+&RSHIP01
ESC+H0060
ESC+V0150
ESC+X22Order: #12345
ESC+H0060
ESC+V0200
ESC+X22Destination: Sydney
ESC+Q1
ESC+Z
```

Recall the SHIP01 overlay and add variable order data

## ESC+WT — Calendar Setup

Configures the date/time format for calendar printing. The format string uses placeholders like YY (year), MM (month), DD (day), hh (hour), mm (minute). The printer substitutes these with its internal clock values at print time.

- Category: calendar
- Syntax: `ESC+WTformat`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/wt/

When to use: When you need the printer to stamp labels with the current date and time — common for production dates, expiry dates, and lot tracking.

Parameters:

- `format`: Date/time format string using YY, MM, DD, hh, mm, ss placeholders

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+WTDD/MM/YY hh:mm
ESC+H0050
ESC+V0100
ESC+WA
ESC+Q1
ESC+Z
```

Set up a date/time format and print it

## ESC+WP — Calendar Addition

Adds or subtracts a fixed offset from the calendar date set by ESC+WT. Use this to print future or past dates — for example, an expiry date 1 year from the print date.

- Category: calendar
- Syntax: `ESC+WP{+/-}{YY}{MM}{DD}`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/wp/

When to use: When you need to print a date offset from the current date — e.g. expiry dates, review dates, or best-before dates.

Parameters:

- `+/-`: Direction: + to add, - to subtract
- `YY`: Years to add/subtract (2 digits)
- `MM`: Months to add/subtract (2 digits)
- `DD`: Days to add/subtract (2 digits)

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+WTDD/MM/YY
ESC+WP+010000
ESC+WA
ESC+Q1
ESC+Z
```

Print a date 1 year from now (expiry date)

## ESC+WA — Calendar Print

Prints the date/time at the current position using the format previously configured with ESC+WT. The printer substitutes the format placeholders with its real-time clock values when the label is printed.

- Category: calendar
- Syntax: `ESC+WA`
- Preview supported: yes
- Canonical HTML: https://rfid.me/reference/sbpl/wa/

When to use: After ESC+WT to actually output the formatted date/time on the label.

Example:

```text
ESC+A
ESC+H0050
ESC+V0050
ESC+X22Packed:
ESC+H0200
ESC+V0050
ESC+WTDD/MM/YY
ESC+WA
ESC+Q1
ESC+Z
```

Print "Packed:" followed by the current date
