Cause #1: Too Many Stale Printer Ports (Most Common)
When you install a printer driver, Windows creates a port—usually a TCP/IP port or a USB virtual port. Over time, every time you install a printer and then remove it, that port often stays behind. Windows has a hard limit on the number of printer destinations it can hold (that's what the 0X0000086D error means). Once you pass that limit, any new printer install throws this error.
Real-world trigger: You've worked in an office where someone installs a printer, tests it, deletes it, then installs another model. After a few dozen of these cycles, you try to add a new shared printer and get the error instantly.
Fix: Delete Unused Printer Ports
- Press Windows + R, type
printmanagement.msc, and hit Enter. This opens the Print Management console. (If you're on Windows Home, skip to the PowerShell method below.) - In the left pane, expand Print Servers > Your Computer Name > Ports.
- You'll see a list of ports. Look for entries named like
192.168.1.50,IP_192.168.1.50, orUSB001,USB002—these are stale. - Right-click each unused port and select Delete. If a port is in use, Windows will warn you. Skip those.
- After deleting, close Print Management and try adding your printer again.
Expected outcome: When you go to add a printer (Settings > Devices > Printers & scanners), the error should not appear. If it still shows, you may have more ports than the console lists—or the limit is still hit. That's when you use PowerShell.
PowerShell version (works on all editions)
- Right-click the Start button and choose Windows PowerShell (Admin) or Terminal (Admin).
- Run this command to list all ports:
Get-PrinterPort | Select-Object Name, PrinterHostAddress, Description
You'll see a table. The ones with Description like "Local Port" or "Standard TCP/IP Port" are what you're after.
- Now delete the ones you know are old. For example, if port
IP_192.168.1.50is dead, run:
Remove-PrinterPort -Name "IP_192.168.1.50"
Repeat for each stale port. If you have dozens, you can script it:
Get-PrinterPort | Where-Object { $_.Name -like "IP_*" -and $_.PrinterHostAddress -notlike "192.168.1.*" } | Remove-PrinterPort
That command removes all TCP/IP ports that aren't on your local subnet. Adjust the subnet to match your network.
Expected outcome: After running the script, check the port count with Get-PrinterPort | Measure-Object. If you're under 100 (the typical limit), the error should be gone.
Cause #2: Corrupted Printer Driver Entries
Another common cause is leftover printer drivers that reference ports that no longer exist. Windows still counts those as destinations. The driver removal in Windows is notoriously bad—it leaves behind "driver packages" that keep the port allocations active.
Real-world trigger: You uninstalled a printer through Settings, but the driver stayed. When you try to add a new printer from a different brand, you get the error because the old driver's port is still reserved.
Fix: Remove Printer Drivers Completely
- Open Print Management again (
printmanagement.msc). - Under Print Servers > Your Computer Name, click Drivers.
- You'll see every driver installed. For any printer you no longer use, right-click and select Delete.
- In the dialog, pick Remove driver and driver package.
- Repeat for all old drivers. Restart the Print Spooler service:
net stop spooler && net start spooler
That clears the spooler's cached port assignments.
Expected outcome: After restarting, the spooler rebuilds its port list from scratch. Try adding the printer again. If the error persists, move to the third cause.
Cause #3: Windows Registry Port Limit (System-Wide)
In rare cases, the port limit itself is set incorrectly in the registry. Windows 10 and 11 have a default limit of about 100 ports. But some third-party printer software or a previous network change can alter that. Also, if you've never deleted ports, you might genuinely have hit the limit.
Real-world trigger: You work at a school where every classroom has a different printer model. Over years of adding and replacing printers, the registry accumulates entries until Windows refuses to add more.
Fix: Manually Clean the Registry (Backup First)
Warning: Editing the registry is risky. Back it up before you touch it.
- Press Windows + R, type
regedit, and hit Enter. - Go to this key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports
You'll see values like 00000001, 00000002, etc. Each one is a port entry.
- Right-click the key itself and select Export. Save the .reg file somewhere safe.
- Now look at the values. Right-click any entry that corresponds to a port you no longer use and select Delete. The names aren't obvious, so you need to cross-reference with the port list from Print Management. A safer bet: use the
Get-PrinterPortcommand to see which ports exist, then find those names in the registry under thePortssubkey. - Also check this key for stale entries:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Local Port\Ports
Same method: export, then delete what's unused.
- After cleaning, restart the Print Spooler service (commands above) or simply reboot.
Expected outcome: After reboot, the printer install should proceed without the error. If you still get it, you may have a deeply corrupted spooler—consider using the Microsoft Print Spooler Fixit tool or resetting the spooler folder completely (delete contents of C:\Windows\System32\spool\PRINTERS after stopping spooler).
Quick Reference Summary
| Cause | Symptom | Fix |
|---|---|---|
| Too many stale ports | Error appears on adding any new printer | Delete unused ports via Print Management or PowerShell |
| Leftover drivers | Error after uninstalling old printers | Delete driver packages in Print Management, restart spooler |
| Registry port entries | Error persists after cleanup | Edit registry keys, backup first, delete stale entries, reboot |
Most people fix this in ten minutes with the first method. Don't jump to registry editing unless you've confirmed you still have the error after cleaning ports and drivers. And always back up the registry before changing it—that's non-negotiable.