Printer Prints Garbled Text and Symbols – Real Fix
Printer spits out random symbols instead of your file. Usually a driver or USB issue. Here's how to stop it.
You send a document to print. The printer spits out pages full of weird characters — %!PS-Adobe-3.0 or !R! PCL XL error or just a mess of ~!@#$%^&*(). This isn't a hardware failure. It's a communication breakdown between your computer and the printer. It happens most often when switching from a PDF to a plain text file, or after a Windows update that clobbers the driver. I've seen it with Brother HL-L2370DW and HP LaserJet P1102w printers, but it can hit any brand.
Root Cause
What's actually happening here is the printer is receiving data it can't understand. Printers speak specific languages — PCL (Printer Command Language), PostScript, or their own proprietary one. When your computer sends a file in the wrong language (or raw text without the right headers), the printer tries to interpret the bytes as commands. Since they're not valid commands, it outputs the raw characters instead.
The most common triggers:
- Corrupted or wrong printer driver — Windows Update often replaces your printer's specific driver with a generic one. That generic driver sends PCL3 when your printer expects PCL5.
- USB cable issues — A flaky cable can corrupt data packets mid-stream. The printer gets half a command and goes haywire.
- Print spooler glitch — Old jobs stuck in the spooler can mess up new ones.
- Program sends raw text — Some apps (like older Notepad or custom software) don't add the printer language headers.
The Fix – Step by Step
Skip the first two if you're in a hurry, but they're the real fixes 80% of the time.
- Delete the printer and re-add it with the correct driver
This sounds basic, but the trick is to not let Windows auto-install. Go to Settings > Bluetooth & devices > Printers & scanners. Select your printer and click Remove. Then click Add device, but don't select your printer from the list. Instead, click "The printer that I want isn't listed". Choose "Add a local printer or network printer with manual settings". Select the correct port (usually USB001). Then pick the manufacturer and model from the list — but if the driver says "Generic" or "MS Publisher", that's your problem. Download the official driver from the printer maker's site first. Point Windows to that .inf file. This forces the right driver. - Clear the print spooler
Open Command Prompt as admin. Typenet stop spooler. Then delete everything inC:\Windows\System32\spool\PRINTERS. Thennet start spooler. Stale jobs in there can confuse new ones. - Check the USB cable and port
Swap the cable with one you know works. Use a different USB port on your PC — avoid front-panel ports, they sometimes have power issues. USB 2.0 printers hate USB 3.0 ports. If possible, use a USB 2.0 port (black or white interior, not blue). - Reset printer to factory defaults
Each printer has its own method. On HP LaserJets: press and hold the wireless button and the cancel button for 5 seconds. On Brother: press Menu, then scroll to Initial Setup, then Factory Reset. On Canon: hold the Stop button while powering on. This clears any stray language settings stuck in the printer's memory. - Disable bidirectional support
Go to Printer Properties > Ports tab. Select your USB port and click Configure Port. Uncheck "Enable bidirectional support". This stops the printer from sending weird data back that confuses the driver. It's a band-aid, but it works when nothing else does.
Still garbled?
If none of the above helped, the issue might be in the application itself. Try printing from a different program — if Word prints fine but Notepad doesn't, the app is sending raw text. Use a PDF printer driver (like Microsoft Print to PDF) first, then print the PDF. This forces the correct language headers.
Also check if you're printing over a network. Network printers sometimes default to raw TCP/IP port 9100 with wrong protocol settings. Open Printer Properties > Ports, find your network port, click Configure Port, and set the protocol to LPR (not Raw). Set the queue name to lp. This matches what most printers expect.
One last thing: if you recently installed a third-party firewall or antivirus, it might be blocking printer language packets. Temporarily disable it and test. I've seen BitDefender and Norton cause this exact issue on Windows 11.
Was this solution helpful?