How to find which process is using a port on Windows
Short answer: netstat -ano shows ports with PIDs, and Task Manager translates the PID into a program. A free tool like Port Owner does both halves for you — a searchable list of every port with the process name, one keystroke away.
Method 1: netstat + Task Manager (built-in)
- Press Win + R, type
cmd, Enter. - Find the port owner:
The last number in the line is the PID.netstat -ano | findstr :8080 - Open Task Manager → Details (or the Details tab in Windows 11's Task Manager) and match the PID column.
Works everywhere, but every step is manual: the right filter string, digging out the PID under dozens of IPv6 rows, then hunting the PID in a second tool.
Method 2: Port Owner — searchable list with names attached
Port Owner runs the same netstat, matches the PIDs against the process list and shows it as a table:
- Listening ports first — the ones that actually “block” a port.
- Search box — type
8080,nodeor the PID; the list narrows instantly. - Copy button — grabs “TCP :8080 — node.exe (1234)” into the clipboard for a bug report.
- All connections switch — adds established sockets when you need the full picture.
The app only reads: nothing is blocked, changed or killed. To actually free the port, end the owning process in Task Manager.
Download free — PortOwner-Setup.exe
Reading the results
- LISTENING — a program waits for connections here. These cause “port already in use”.
- ESTABLISHED — an active connection right now; it is not blocking anything.
- UDP rows have no state at all — normal, UDP is connectionless.
- PID 4 / System — a kernel driver (typically SMB on 445 or RPC on 135); nothing to fix.
Typical cases
“Port 8080 is already in use” while starting a dev server. Search 8080 — usually a forgotten node.exe/java.exe from a previous session. End it in Task Manager.
A game or service “cannot bind” a port. Check whether something else listens there; compare the two instances.
An unfamiliar listener. Identify the owning process before worrying — 9 times out of 10 it is a Windows service.
FAQ
Is there a PowerShell way?
Yes: Get-NetTCPConnection -LocalPort 8080 shows the owning PID; the process name still needs Get-Process -Id. A viewer app skips both steps.
Can I free the port without Task Manager?
taskkill /PID 1234 in cmd does it — but check the process name first; killing the wrong process can cost you unsaved work.
Why do I see the same port twice, IPv4 and IPv6?
Programs often listen on both stacks (0.0.0.0:8080 and [::]:8080); it is one program, two rows.