portcheck
See what's using your ports, find free ones, free them up, and check remote hosts.
One static binary for macOS, Linux and Windows.
[CI]
[CodeQL]
[Coverage]
[Release]
[OpenSSF Scorecard]
[OpenSSF Best Practices]
[M8ven Score]
[Go Reference]
[License: MIT]
[portcheck demo]
Port already in use?
portcheck shows what holds the port and who started it, asks, then stops it gently
(and never touches system processes). It's a safer kill-port, with
nothing to install first.
Fixes for the error you're seeing: Node.js, Next.js, Vite ·
Python, Django, Flask · Docker ·
Rails, Spring Boot, Go, .NET, PHP · macOS ·
Windows · Linux
Features
VS Code extension
When a dev server fails because its port is taken, the extension says who holds it and
fixes it: stop it and re-run, or re-run on the next free port.
[portcheck in VS Code: npm run dev fails with EADDRINUSE, the extension names the process holding port 3000, stops it and re-runs the command]
Install Portcheck - Port in Use Fixer from the
VS Code Marketplace (search "portcheck" in VS Code) or
Open VSX (VSCodium, Cursor, Windsurf). portcheck is built in.
JetBrains plugin
In IntelliJ IDEA, WebStorm, PyCharm, GoLand and the other JetBrains IDEs, when a run
configuration fails because its port is taken, a notification names the process and
offers Stop it and rerun; the Ports tool window lists every listening port.
▶ Watch the 20-second demo
[portcheck in IntelliJ IDEA: the run fails with "Address already in use", and a notification names the Python process holding port 3000 with Stop Python and rerun]
Install portcheck-jetbrains-<version>.zip from the
latest release
(Settings → Plugins → ⚙ → Install Plugin from Disk…); it is in review on JetBrains Marketplace
(guide).
Browser extension
On every localhost tab, a badge names the process serving it, or says off when nothing
is listening; the popup shows who started it and stops it safely.
[The portcheck browser popup for localhost:3000: Running, node with its pid, who started it, its command and user, Stop process, and the ports listening on the machine]
Install Portcheck - Localhost Port Inspector from
Microsoft Edge Add-ons, then run portcheck browser install once.
For Chrome, Brave and Chromium, load the zip from the
latest release
(guide).
Highlights
- Same commands and output on every OS. It replaces
lsof -i, netstat -ano, ss -ltnp and kill.
- Built for scripts.
--json follows a versioned schema, exit codes are stable, and results go to stdout while messages go to stderr.
- Container- and WSL-aware. Ports published by Docker/Podman or forwarded from WSL show the container or distro, and
kill tells you how to stop it there instead of killing the proxy.
- Honest about permissions. Hidden owners are shown as hidden, with a hint on how to see them.
- A Go library too. See
pkg/.
Install
.deb, .rpm, .apk and archives for amd64/arm64 are on the
releases page. The
checksum file covering every artifact is signed with cosign (keyless), and
releases ship SBOMs and SLSA provenance; see
verifying downloads.
Quickstart
📖 Documentation: https://roystondwork-dev.github.io/portcheck/
(quickstart · guides · CLI reference · permissions by OS · FAQ)
Use as a Go library
See the library guide for portspec, inspect, freeport, killer, scan, waitfor and containers.
Responsible use
portcheck scan makes ordinary TCP connections and has no stealth features. Only
scan hosts and networks you own or are authorized to test.
Contributing
Contributions are welcome! See CONTRIBUTING.md for setup and
standards (every change is tested on Linux, macOS and Windows, with a 100% coverage
gate on the library), and TASKS.md for the roadmap and status.
Please follow the Code of Conduct, and report vulnerabilities
privately as described in SECURITY.md.
License
MIT © 2026 Royston D and portcheck contributors