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)

  1. Press Win + R, type cmd, Enter.
  2. Find the port owner:
    netstat -ano | findstr :8080
    
    The last number in the line is the PID.
  3. 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, node or 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.