If you build web applications with Next.js, Create React App, Nuxt, or Express on Windows, you have almost certainly encountered this frustrating terminal error:
Error: listen EADDRINUSE: address already in use :::3000
This happens because another process (usually an orphaned Node.js background process from a previous terminal session or crash) is still holding onto TCP port 3000.
Method 1: The 1-Click Fix with PortPeek (Fastest)
Instead of memorizing terminal flags, you can use PortPeek:
- Press Win + Alt + P (or click the tray icon).
- See port 3000 and its process (
node.exe). - Click Stop Process in the menu.
Port 3000 is immediately freed, and you can restart your dev server.
Method 2: Kill via PowerShell (One-Liner)
Open PowerShell and paste this command to find the process on port 3000 and terminate it:
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process -Force
Method 3: Classic Command Prompt (netstat + taskkill)
If you are using classic CMD:
Step 1: Find the PID holding port 3000
netstat -ano | findstr :3000
Output example:
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 14280
In this example, the PID is 14280 (the rightmost number).
Step 2: Force kill the PID
taskkill /F /PID 14280
Why Does This Happen?
When you terminate a terminal window in VS Code or Windows Terminal without cleanly pressing Ctrl + C, Node.js child processes (like Turbopack or Webpack worker pools) can get detached and keep listening on the TCP socket indefinitely.
Eliminate this problem forever
Download PortPeek for Windows (~500 KB). See and kill locked ports in 1 click.
Download PortPeek