^LT - Label Top
Shifts every field up or down by a small number of dot rows.
^LT moves a finished label up or down with no edit to its coordinates. It is a registration
adjustment: the ±120 dot-row limit is about 15 mm at 8 dot/mm, enough to correct stock that feeds
slightly high or low and no more. Outside that range the renderer ignores the command and does not
clamp it, so ^LT200 shifts nothing at all and reports no error visible on the page.
Syntax
^LTxSupport
Every documented parameter renders the same output Labelary produces.
Labelary renders this command.
Parameters
xLabel topoptional · dotsDot rows to move the whole label down. A negative value moves it up.
- Default
- the previous
^LTin this format, or 0 - Accepted range
- -120 to 120 dot rows
- Invalid value
- enough to make the whole command be ignored. A value beyond ±120 does **not** clamp. The renderer discards the argument, so the distance already in force stands. A missing or non-numeric argument does the same. We measured this against Labelary and the renderer on 2026-07-29 and again on 2026-08-19:
^LT120shifts by 120 dot rows,^LT121on its own shifts by nothing, and^LT50^LT121still shifts by 50. The narrow range is a printer registration adjustment, not a general layout tool. Use^LHfor layout. - Test coverage
- Bounds pinned: maximum (120), above the maximum (121). No test at the minimum. The invalid-value rule is pinned by 6 tests.
Behavior
The renderer folds ^LH and ^LS in as it places each field, and applies ^LT once to the whole
assembled label. Two consequences follow. We measured both against Labelary, and both match:
- an
^LTafter a field still moves that field, so its position in the format does not matter; - where a format carries more than one
^LT, the last one governs the entire label, and no^LTgoverns only the fields that follow it.
^LT30 and then ^LT60 therefore shift everything by 60, not by 30 then 90.
The out-of-range rule applies to every value the printer cannot read as a number in range:
^LT121, ^LT999, ^LTQ and a bare ^LT all leave the label unshifted. Under ^MU the renderer
checks the limit after conversion, so ^MUI^LT1 asks for 200 dot rows, exceeds 120, and does
nothing at all.
A positive value moves down and a negative value moves up, the ordinary ZPL sense, in contrast to
^LS, where a positive value moves left. The guide carries a warning worth repeating for real
hardware: on some printer models a large negative value backs the media out of the platen. That
cannot happen here, but a format that carries one misbehaves on a printer.
^LT does not move the media rest position. It shifts the image on the label and does not change
where the label stops.
Tested behavior
Example
Two bars 100 dot rows apart, with ^LT60 between them. Both move down by 60 — the first one too, even though it was written before the command:
^XA
^FO50,40^GB300,30,30^FS
^LT60
^FO50,140^GB300,30,30^FS
^XZ
Related commands
^LHLabel HomeMoves the origin for every field position.^LSLabel ShiftShifts every field left by a fixed number of dots.^LLLabel LengthSets the label length, for continuous media.