🧟 zkill

Kill zombie processes blocking your ports - instantly.

Stop Googling "how to kill port process" every single day.

$ zkill 3000
✔ Port 3000 is in use
Process Details:
Process: node
PID: 12345
Command: /usr/local/bin/node server.js
User: developer
? Are you sure you want to kill process 12345? (y/N) y
✔ Process 12345 terminated successfully
Port 3000 is now available.
$ _
npm install -g zombie-port-killer
🎉

Latest Features

Powerful port scanning filters and intelligent project awareness!

🔍 Smart Scanning Filters
zkill scan --range 3000-9000
zkill scan --process node
zkill scan --no-system
zkill scan --project myapp
📁 Project Awareness
Auto-detects projects (Node.js, Python, Go, Rust, etc.)
Remembers port-to-project mappings
Auto-learns associations over time
Filter scans by project name

Perfect for microservices developers managing multiple projects and ports!

Why zkill?

Every developer faces port conflicts. We built zkill to solve this once and for all.

🎯

One Command

Instead of memorizing different commands for each OS, just run zkill 3000

🌍

Cross-Platform

Works identically on macOS, Linux, and Windows. No more platform-specific commands.

🔒

Safe Mode

Asks for confirmation before killing. Warns about system processes. You're always in control.

🧠

Project Aware

Auto-detects projects (Node.js, Python, Go, Rust, PHP, Java) and remembers port associations. Filter scans by project or let it auto-learn over time.

Fast

Less than 100ms to detect and kill processes. Pure TypeScript with zero external dependencies.

🎨

Beautiful CLI

Color-coded output, loading spinners, and clear messages. A joy to use.

🔍

Smart Scanning

Filter ports by range, process name, project, or hide system processes. Perfect for microservices.

Quick Start

Installation

npm install -g zombie-port-killer

Or use yarn or pnpm:

yarn global add zombie-port-killer
pnpm add -g zombie-port-killer

Usage

Kill a process on a specific port:

zkill 3000

Kill without confirmation:

zkill 3000 --force

List all active ports:

zkill scan

Filter ports by range:

zkill scan --range 3000-9000

Filter by process name:

zkill scan --process node

Hide system processes:

zkill scan --no-system

Filter by project name:

zkill scan --project myapp

Combine filters (perfect for microservices):

zkill scan --range 3000-9000 --process node --no-system

Show system and project information:

zkill info

List port-to-project mappings:

zkill list

Before vs After

😰 Before zkill

macOS:
lsof -ti :3000 | xargs kill -9
Linux:
sudo ss -lptn 'sport = :3000' | grep -oP '(?<=pid=)\d+' | xargs sudo kill -9
Windows:
FOR /F "tokens=5" %P IN ('netstat -ano ^| findstr :3000') DO TaskKill /PID %P /F

✨ With zkill

macOS:
zkill 3000
Linux:
zkill 3000
Windows:
zkill 3000
🎉

One command. All platforms.

Frequently Asked Questions

Common questions about zkill's security, usage, and features.

🔒 Is zkill secure? Can I trust it?

Yes! zkill is 100% safe and transparent.

  • Open Source: Every line of code is public on GitHub. You can audit it yourself.
  • Zero Telemetry: No tracking, no analytics, no data collection. Nothing leaves your machine.
  • No Network Requests: zkill runs entirely offline. You can verify this with network monitoring.
  • Minimal Dependencies: Only 4 trusted npm packages (chalk, commander, inquirer, ora) - all extremely popular.
  • Standard Commands: Uses the same OS commands you'd run manually (lsof, ps, kill, etc.)
  • Safe by Default: Always asks for confirmation before killing processes.

Want proof? Clone the repo and read the source code. It's only ~2,000 lines of TypeScript. View on GitHub →

⚙️ How does zkill work?

zkill finds and kills processes using a cross-platform approach:

  • macOS: Uses lsof to find processes
  • Linux: Uses ss or netstat
  • Windows: Uses netstat and taskkill

These are the same commands you'd run manually - zkill just makes it easier and cross-platform.

💻 Does it work on Windows/Linux/macOS?

Yes! zkill works on all three platforms:

  • ✅ macOS (Intel & Apple Silicon)
  • ✅ Linux (Ubuntu, Debian, Fedora, etc.)
  • ✅ Windows (PowerShell, CMD, Git Bash)

The same command works identically everywhere: zkill 3000

⚠️ Will zkill accidentally kill my database or important services?

No, it's safe:

  • zkill asks for confirmation before killing any process
  • It shows you details about what process will be killed
  • It warns you if the process looks like a system service
  • You must explicitly target a specific port - it won't randomly kill things

Pro tip: Use zkill scan first to see what's running before killing anything.

🔑 Do I need sudo/admin privileges?

Usually not. For your own development servers (the most common case), no special privileges needed.

You only need elevated privileges for:

  • Processes owned by other users
  • System services (like databases running as system user)
  • Ports below 1024 on some systems
🏭 Can I use zkill in production?

zkill is designed for local development, not production servers.

For production environments, use proper process managers:

  • PM2, systemd, or supervisord for Node.js apps
  • Kubernetes for containerized apps
  • Docker Compose for multi-container setups

zkill is perfect for fixing "Port 3000 already in use" errors during development!

💰 Is zkill free?

Yes! 100% free and open source.

  • MIT License - use it anywhere, for anything
  • No paid tiers, no premium features
  • No ads, no tracking, no upsells
  • Free forever

If you find it useful, consider giving it a ⭐ star on GitHub!

🎯 Can I kill multiple ports at once?

Not yet, but it's coming in v1.2!

Planned features:

  • zkill 3000 8000 5432 - Multiple ports
  • zkill --name node - Kill by process name

New in v1.1.1: You can now filter ports when scanning! Use zkill scan --range 3000-9000 to focus on specific port ranges.

For now, run zkill multiple times for multiple ports.

Still have questions?

Ask on GitHub Issues

Ready to kill some zombies? 🧟

Join developers worldwide who've stopped Googling port commands.

npm install -g zombie-port-killer