Find and kill the process on any port. Interactive, zero dependencies, works everywhere.
Error: listen EADDRINUSE: address already in use :::3000 — we've all been there.
npx portslay 3000Done. ✔ killed node (pid 31196) on port 3000.
Run it with no arguments to get a live picker of everything listening on your machine:
npx portslay portslay v1.0.0 · ↑↓ move · space select · enter kill · type to filter · esc quit
PORT PROCESS PID ADDRESS
○ 3000 node 31196 0.0.0.0:3000
◉ 5173 node 18244 127.0.0.1:5173
○ 5433 postgres 7024 127.0.0.1:5433
◉ 8080 java 22011 0.0.0.0:8080
Arrow keys to move, space to multi-select, enter to kill.
Just start typing (node, 80, …) to filter.
npx portslay # interactive picker
npx portslay 3000 # kill whatever listens on port 3000
npx portslay 3000 5173 8080 # several at once
npx portslay 3000-3010 # a whole range
npx portslay --list # just show listening ports
npx portslay --list --json # machine-readable| Flag | Description |
|---|---|
-l, --list |
list listening TCP ports and exit |
-f, --force |
SIGKILL immediately (default: SIGTERM, auto-escalates if the process ignores it) |
-j, --json |
JSON output for scripts |
-v, --version |
print version |
-h, --help |
help |
Or install it for good: npm i -g portslay.
- Zero dependencies.
npx portslaycold-starts in a blink — nothing to download but one small file. - Interactive. See what is squatting on your ports before you kill it. Multi-select, filter, kill in bulk.
- Graceful by default. Sends SIGTERM first so processes can clean up, escalates to SIGKILL only if ignored.
--forceskips the pleasantries. - Truly cross-platform. Native
netstat/taskkillon Windows,lsofon macOS,lsof/sson Linux. No compiled binaries, no WSL tricks. - Scriptable.
--jsonand meaningful exit codes (0freed,1something survived,2bad input).
Node.js ≥ 18. That's it.
MIT © Cryptoteep