Puma: Address already in use - bind(2) for 0.0.0.0:3000 (Errno::EADDRINUSE) Ruby / Rails Origin: Application & API OSI layer 4 · Transport Last updated 5 Nov 2026

Rails/Puma: Errno::EADDRINUSE: Address already in use - bind(2) for "0.0.0.0" port 3000

Another process already listens on the port Puma wants.

Exact message you may see Errno::EADDRINUSE: Address already in use - bind(2) for "0.0.0.0" port 3000Address already in use - bind(2) for 0.0.0.0:3000 (Errno::EADDRINUSE)Puma Address already in useErrno::EADDRINUSE (Address already in use - bind(2) for "127.0.0.1" port 3000)rails server Address already in use
Seen on: Ruby Linux

Meaning

Find it with lsof -i :3000 / ss -ltnp | grep 3000, stop it (kill PID), or run on another port (bin/rails s -p 3001, PORT=3001). On macOS Monterey+ port 5000/7000 conflicts with AirPlay; on Linux an old Puma may linger after crashes.

Common causes

  • Previous Rails/Puma still running
  • Another app on 3000
  • Docker publishing the same port
  • macOS AirPlay on 5000
  • Zombie process after a crash

⚡ Quick fix

  1. lsof -i :3000 then kill -9 PID
  2. Use another port
  3. Stop the container publishing the port

Detailed fix by platform

Linux

  1. lsof -nP -iTCP:3000 -sTCP:LISTEN

How to diagnose

  1. Owner — PID?
  2. Port — Alternative?
  3. Docker — Published?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Application & API. Errors that are often confused with or caused by this one (click to open):

A server is already running. Check /tmp/pids/server.pid — Rails: A server is already running (pid: 12345, file: /app/tmp/pids/server.pid). Exiting (Ruby / Rails)A server is already r…ActiveRecord::AssociationTypeMismatch — Rails: ActiveRecord::AssociationTypeMismatch: User(#1234) expected, got "42" which is an instance of String(#5678) (Ruby / Rails)ActiveRecord::Associa…ActiveRecord::ConnectionNotEstablished — Rails: ActiveRecord::ConnectionNotEstablished: No connection pool for 'ActiveRecord::Base' found (Ruby / Rails)ActiveRecord::Connect…ActiveRecord::Deadlocked: PG::TRDeadlockDetected — Rails: ActiveRecord::Deadlocked: PG::TRDeadlockDetected: ERROR: deadlock detected (Ruby / Rails)ActiveRecord::Deadloc…ActiveRecord::IrreversibleMigration — Rails: ActiveRecord::IrreversibleMigration — This migration uses remove_column without a type; db:rollback can't reverse it (Ruby / Rails)ActiveRecord::Irrever…bind() failed (98: Address already in use) — nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) (Linux)bind() failed (98: Ad…iptables: No chain/target/match — driver failed programming external connectivity on endpoint: iptables: No chain/target/match by that name (Docker)iptables: No chain/ta…listen tcp :8080: bind: address already in use — Go: listen tcp :8080: bind: address already in use (Go)listen tcp :8080: bin…Puma: Add…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.