Port 3000 — Node.js / dev server
TCP registered
What runs on port 3000
The conventional development port for Node.js, Next.js, Rails and Grafana.
Security considerations
A development default, not a production one. Behind a reverse proxy in production.
Checking whether something is listening
# Linux / macOS — what is bound to the port
sudo lsof -i :3000
sudo ss -lntp | grep :3000
# Windows
netstat -ano | findstr :3000
Get-NetTCPConnection -LocalPort 3000
# is it reachable from outside?
nc -zv example.com 3000
curl -v telnet://example.com:3000
Freeing the port
# find the process, then stop it
sudo lsof -ti :3000 | xargs kill # Linux / macOS
netstat -ano | findstr :3000 # note the PID, then:
taskkill /PID <pid> /F # Windows
Should this port be open to the internet?
Usually not. Expose it only if a specific external client needs it, and restrict by source address where you can.
Quick reference
| Port | 3000 |
| Protocol | TCP |
| Service | Node.js / dev server |
| Range | Registered (1024–49151) — any user process may bind |
Frequently asked questions
What is port 3000 used for?
The conventional development port for Node.js, Next.js, Rails and Grafana.
Is it safe to open port 3000?
A development default, not a production one. Behind a reverse proxy in production.
How do I check if port 3000 is open?
Locally, sudo lsof -i :3000 on macOS or Linux, or netstat -ano | findstr :3000 on Windows. From outside, nc -zv host 3000 tells you whether anything answers.
Why do I get "address already in use" on port 3000?
Another process is bound to it — often a previous run of your own program that did not exit cleanly. Find it with lsof -ti :3000 and stop it, or configure your application to use a different port.
Can I change the port this service uses?
Almost always yes, in the service's configuration. Moving off a default port reduces automated scan noise, but it is obfuscation rather than security — a real attacker scans all 65,535.