Stripy Horse
Stripy Horse

Zebra ~HS host status decoder

Every Zebra printer answers ~HS with three dense lines of comma-separated flags: paper out, pause, head temperature, jobs stuck in the buffer. Paste the response below and get every field decoded, per Zebra's documented positions.

How do I get this from my printer?

Linux / macOS: send ~HS to the printer's raw port and print the reply (^B/^C markers are fine, paste them as-is):

printf '~HS' | nc -w 3 YOUR-PRINTER-IP 9100 | cat -v

Windows PowerShell:

$c=New-Object Net.Sockets.TcpClient('YOUR-PRINTER-IP',9100);$s=$c.GetStream()
$b=[Text.Encoding]::ASCII.GetBytes('~HS');$s.Write($b,0,$b.Length);Start-Sleep 1
$r=New-Object byte[] 4096;$n=$s.Read($r,0,4096);[Text.Encoding]::ASCII.GetString($r,0,$n)

No printer handy? Ask our public virtual printer; it answers like real firmware:

printf '~HS' | nc -w 3 print.stripyhorse.io 9101 | cat -v

The same, from PowerShell:

$c=New-Object Net.Sockets.TcpClient('print.stripyhorse.io',9101);$s=$c.GetStream()
$b=[Text.Encoding]::ASCII.GetBytes('~HS');$s.Write($b,0,$b.Length);Start-Sleep 1
$r=New-Object byte[] 4096;$n=$s.Read($r,0,4096);[Text.Encoding]::ASCII.GetString($r,0,$n)

Polling a fleet? The virtual printer answers ~HS and SGD queries exactly like hardware; point your monitoring script at it in CI.

About the ~HS decoder

~HS is the host status query: send it to a Zebra printer over port 9100 and it answers with three lines of comma-separated numbers that describe the printer's state. Almost nobody remembers what field 7 on line 2 means. Paste the response here and every field is named and explained, with faults (paper out, ribbon out, head open, paused, buffer full) highlighted.

The page also shows the exact command to fetch the status with nc from your terminal, and the same decoder works on the responses from Stripy Horse virtual printers, which answer ~HS with the same format as real firmware, including the fault flags you inject.

Use it when a print job disappears: the status tells you whether the printer is paused, out of media, or still holding labels in its buffer.

Your data: The ~HS text you paste is parsed in memory and discarded; nothing is stored. There is no watermark: the output is text. Details in the privacy policy.

Questions

How do I get the ~HS response from my printer?

Send the two characters ~HS to the printer on port 9100 and read what comes back. From a terminal: printf '~HS' | nc -w2 PRINTER_IP 9100. From PowerShell, which is what the machine beside the printer usually runs: $c=New-Object Net.Sockets.TcpClient('PRINTER_IP',9100);$s=$c.GetStream();$b=[Text.Encoding]::ASCII.GetBytes('~HS');$s.Write($b,0,$b.Length);Start-Sleep 1;$r=New-Object byte[] 4096;$n=$s.Read($r,0,4096);[Text.Encoding]::ASCII.GetString($r,0,$n). Paste the three lines here.

What do the ~HS fields mean?

Line 1 covers communication settings, paper out, pause, label length, formats in the buffer and the buffer state; line 2 covers function settings, head up, ribbon out, thermal transfer mode, print mode and the fault flags; line 3 is the password and the static RAM flag. The decoder names each one in place.

Can I check status from my application?

Yes, the same way: open a TCP connection to port 9100, write ~HS, read the reply. Virtual printers on Stripy Horse answer it too, so your status-handling code can be tested without hardware.

The same engine is behind the API and the guides; every tool here is also an API call.