Printer troubleshooting technician providing live chat help

Joe B.

Reviewed for technical accuracy

Specialities: USB/POS receipt printers, ESC/POS & Star Line emulation, code pages, Windows POS drivers, serial/USB virtual COM

USB thermal printer prints squares or blocks — wrong ESC/POS emulation, random characters, gibberish on receipts

Technician avatar Technician
Hey! We’ll stop your USB thermal printer from printing **squares/blocks and random characters** and get proper text back on receipts. Quick check first:
• Printer brand/model (Epson TM-T20/TM-T88, Star TSP100, Bixolon, Rongta, generic 58 mm, etc.)?
• How is it connected — pure **USB**, USB-to-serial, or virtual COM (USB001/COM3)?
• What POS software are you using (Square, Loyverse, Odoo, custom app)?
• Symptoms: Windows test page OK but POS tickets are **squares/garbage**, or everything (even test prints) is gibberish?
Customer
Windows 11 PC, cheap **USB thermal receipt printer** that says “ESC/POS compatible”. Windows test page prints fine. But from our POS app every line comes out as little squares / random symbols instead of text.
Technician avatar Technician
Got it. Classic case of **wrong printer emulation / language**.

Thermal receipt printers can speak different “languages”: **ESC/POS**, **Star Line mode**, **EPL/ZPL** (label), even custom command sets. Your POS is likely sending **raw ESC/POS commands**, but the printer or driver is in another emulation, so every command byte is rendered as a **square box or random character**.

Plan:
1) Print the printer’s **self-test/config page** to see which emulation it’s in (ESC/POS, Star Line, label mode, etc.).
2) Switch emulation (DIP switches or configuration tool) so it matches what the POS expects.
3) Install the right **USB/ESC-POS driver** and point the POS to that printer/port.
4) If needed, fix **code page/encoding** so accented characters don’t turn into squares.
Customer
How do I check the emulation? There’s no obvious setting in Windows — it just shows as “USB Thermal Printer” with a generic driver.
Technician avatar Technician
Step 1 — Print the self-test and find the emulation mode
On most USB thermal printers:
1) Turn the printer **off**.
2) Hold the **FEED** button and turn it **on**. Keep holding until it prints a long **self-test / status sheet**.
3) Look for lines like **“Emulation: ESC/POS”**, **“STAR Line Mode”**, **“Page mode”**, **“ZPL/EPL”**, or a similar printer language.
4) If it says **STAR Line** or label mode while your POS is configured for **ESC/POS**, that mismatch is why you see boxes.

Many Star Micronics, Epson clones and Honeywell/HPRT units have DIP switches or an **emulation utility** to flip between ESC/POS and their native mode. We just need printer + POS to agree on the same one.
Customer
Self-test shows “Star Line Mode” at the top, but my POS printer setting is “Generic ESC/POS USB”. So that’s the mismatch?
Technician avatar Technician
Exactly — **POS sends ESC/POS, printer expects Star Line**, so the control bytes print as **blocks/squares**.

Step 2 — Switch the printer into ESC/POS emulation
• Check the small **DIP switch label** under the printer or in its manual. Typical Star-style layout: one switch toggles STAR Line vs ESC/POS (or “ESC/P”/“ESC/POS” on clones).
• Power off, flip the documented switches for **ESC/POS mode**, then power on again and repeat the **self-test**. It should now say **Emulation: ESC/POS**.
• Some USB thermal printers use a Windows **configuration tool** instead of switches. If so, launch it, pick **ESC/POS / POS mode / Receipt mode**, and apply.

Once emulation is set to ESC/POS, the POS commands will map to real actions (bold, cut, open cash drawer) instead of drawing boxes.
Customer
Ok, switched to ESC/POS and the self-test confirms it. But in Windows it’s still using “Generic / Text Only” on USB001. Could that cause squares too?
Technician avatar Technician
Good question, yes — the **Windows driver and port** matter too.

Step 3 — Install a proper receipt-printer driver and use the correct port
1) Download the vendor driver (Epson **APD**, Star **StarPRNT**, Bixolon, or the ESC/POS driver provided with your clone).
2) During installation, choose the actual USB port the printer uses (**USB001 / USB002** or a **virtual COM port** like COM3 if it’s USB-to-serial).
3) Avoid “Generic / Text Only” for ESC/POS POS printing — it sometimes re-encodes data or strips control codes, causing **random symbols or missing cut commands**.
4) In **Printer Properties → Advanced**, leave the driver in “raw” mode (no scaling or color conversion) so ESC/POS data passes through untouched.

Now your **USB thermal printer + ESC/POS driver + POS app** will speak the same language over the right port.
Customer
POS has two options: “Print via Windows driver” and “Raw ESC/POS to COM/USB”. Which one should I pick to avoid gibberish?
Technician avatar Technician
Step 4 — Match the POS output mode with the printer
• If the POS has a **“raw ESC/POS”** output, that’s usually best. You point it at the printer’s **raw port** (USB/COM) and it sends ESC/POS directly, no Windows formatting.
• If you choose **“Print via Windows driver”**, the app often sends a PDF/image. That’s fine only if the driver is a normal Windows GDI driver and the printer is in a **raster/graphics** mode. In **ESC/POS emulation**, raw text mode is normally safer.
• In the POS settings, pick your model (Epson TM-T88, Star TSP100, generic **80 mm ESC/POS printer**) and ensure language/emulation = **ESC/POS**, not ZPL/EPL/label.

When **POS output = ESC/POS** and **printer emulation = ESC/POS**, the random boxes disappear and you get proper fonts, barcodes and the cash drawer kick.
Customer
After changing to ESC/POS + raw mode, normal letters look good. But accented characters and the £ symbol are still coming out as squares. Is that another setting?
Technician avatar Technician
Yup — that’s the **code page / character encoding** layer.

In ESC/POS, text isn’t truly Unicode. The printer uses a **character table** (CP437, CP850, CP858, Windows-1252, etc.). If your POS sends UTF-8 while the printer is on another code page, extended characters (€, £, ñ, accents) become squares or question marks.

Step 5 — Match the code page
• In the printer utility or self-test, look for **“Code page / Character table”**. Pick the one your POS expects (often **CP858** or **Windows-1252** for Western Europe / UK £).
• In the POS, choose the same **encoding** (or turn on its “international characters / West Europe” setting).
• Save, then print a receipt with £ / € / accented characters to confirm they render correctly instead of blocks.

This is separate from emulation, but both must match: **ESC/POS + correct code page**.
Customer
Once this is set up, will it stay, or do we risk the printer going back to printing gibberish after a power cut or update?
Technician avatar Technician
Once you save the **emulation** and **code page** correctly, they’re usually stored in non-volatile memory, so power cuts won’t reset them.

A few tips so the printer doesn’t go back to printing random blocks:
• Don’t flip DIP switches unless you’re deliberately changing modes.
• Avoid reinstalling it as a **Generic/Text Only** printer after Windows updates — always pick the vendor or ESC/POS driver.
• In POS, lock the printer profile so staff don’t accidentally switch to a **Zebra/label** template or different emulation.
• Keep a photo of the self-test receipt showing **ESC/POS, baud rate, code page** so it’s easy to re-apply if someone factory-resets it.

If your USB thermal printer ever starts printing **squares or random symbols** again, the first thing to check is: “Did the emulation or driver change?”
Customer
Just tested — now receipts look normal, barcodes cut correctly, and the £ symbol prints fine. No more squares. Thanks!
Technician avatar Technician
Summary: When a **USB thermal printer prints squares, blocks, or random characters**, it’s almost always a **wrong emulation or encoding** issue. Print the self-test, switch the printer into **ESC/POS receipt mode**, install a matching **USB/ESC-POS driver**, and configure your POS to send **raw ESC/POS** with the correct code page. That brings readable receipts and proper cuts back. Want help matching your exact receipt printer model and POS settings? Open the chat.

Quick answer: the accepted fix

Accepted fix when a USB thermal printer prints squares / random characters: put the printer into the same emulation your POS expects (usually ESC/POS receipt mode, not Star Line or label/ZPL), install the correct **USB receipt-printer driver** instead of Generic/Text Only, and set a matching **code page** so special characters don’t become blocks. After that, configure the POS to send **raw ESC/POS** to the right USB/COM port.


Why thermal receipt printers print squares (emulation vs encoding)

When a POS receipt printer prints gibberish — lines of boxes, random letters, or Chinese-looking symbols — it’s usually not “broken hardware”. Most USB thermal printers support multiple **command languages / emulations** such as ESC/POS, Star Line mode, and label protocols like ZPL/EPL. If your POS sends ESC/POS while the printer is in Star Line or label mode, every ESC/POS control byte is drawn as a literal character, so you see **squares instead of text**. A second layer is **character encoding**: if the POS sends UTF-8 but the printer’s **code page** is set to CP437/CP850/CP858 incorrectly, accented characters and symbols like £ or € also show as boxes.

How to test your USB thermal printer for the correct emulation

To confirm you’ve fixed the **wrong emulation** problem, print three things: the printer’s **self-test page**, a **Windows test page**, and a **receipt from the POS**. The self-test should clearly state Emulation: ESC/POS (or the language your POS is configured to use), along with baud rate and code page. The Windows test page should show clean English text with no boxes. Finally, the POS test ticket should display normal receipt layout, barcodes, and special characters without **blocks or random characters**. If the self-test says Star Line or label mode or the receipt still shows gibberish, go back and re-align the emulation, driver and POS profile until all three tests match.

USB thermal printer prints squares — quick troubleshooting tips

Most “prints squares or random symbols” cases are just wrong emulation, driver, or code page — not a dead printer.

Quick path: print the **self-test** and confirm the printer is in ESC/POS receipt mode, not Star Line or label. Install a proper **USB ESC/POS driver** (Epson/Star/Bixolon or the clone vendor), and in your POS, choose a **receipt printer / ESC-POS profile** with raw output to the correct USB or virtual COM port. Finally, set the **character table/code page** so £, €, and accented letters render correctly. This sequence fixes the majority of POS receipt printer prints blocks / gibberish issues on Windows and many Mac/Linux setups.

Disclaimer: This information is AI-generated and intended for general guidance only. For advice specific to your environment, please consult a verified expert on Whizz-Tech before making decisions.


Getting Started Is Easy

Ask for help, 24/7

Members enjoy round-the-clock access to 12,000+ verified Experts, including tech support, mechanics, vets, and more.

Expert will respond in minutes

We match you with an Expert who specializes in your situation. Talk, text, or chat — whichever you prefer.

Save time & money

No scheduling hassles or expensive consults. Membership can save you significant time and money each month.

FAQ

Why does my USB thermal printer print squares or random characters?

Most of the time your receipt printer prints squares because the **emulation / printer language** doesn’t match what your POS is sending. For example, the printer is in Star Line, label, or page mode while the POS sends ESC/POS commands, so control bytes are rendered as blocks. A mismatched **code page/encoding** (UTF-8 vs CP437/CP858) can also make certain characters appear as boxes.

How do I change the emulation mode on a thermal receipt printer?

Print the **self-test** by holding FEED while powering on. It will show “Emulation: ESC/POS / Star Line / ZPL …”. Use either **DIP switches** on the bottom or the vendor’s **configuration utility** to switch into the emulation your POS expects (usually ESC/POS or Star Line). Power-cycle, print self-test again, and confirm the new emulation before testing receipts.

Can I use a Generic / Text Only driver for ESC/POS printers?

Generic/Text Only can work in simple setups, but it often re-encodes data or strips control codes, which leads to **gibberish, missing cuts or no cash-drawer kick**. For reliable ESC/POS printing, it’s safer to use a **vendor or ESC/POS driver** on the correct USB/COM port and configure the POS for **raw ESC/POS output**.

Will this fix work for POS apps like Square, Odoo, Loyverse, etc.?

Yes — the same principles apply: make sure the **POS printer profile** is set to a model/emulation your printer supports (ESC/POS vs Star/label), install the correct driver, and confirm the receipt test prints text instead of blocks. Each POS labels the setting differently, but the root cause is still **wrong emulation or encoding** between app and printer.

Sources

Matt Verified Icon
Matt ● replies in < 1 min
Technician Expert
⭐⭐⭐⭐⭐ Trusted by 27,000+ customers
Avatar
Alex · Expert's Assistant