localhost:3000: o que é e como resolver conexão recusada ou porta em uso | We.Inc
O que significa localhost:3000, quais servidores de desenvolvimento usam a porta 3000 por padrão e os comandos para Mac, Linux e Windows que resolvem os erros de conexão recusada e de endereço já em uso.
localhost:3000 é um servidor web rodando no seu próprio computador e escutando na porta 3000. Next.js, o exemplo hello world do Express e Rails usam essa porta por padrão. Se a página recusa a conexão, nada está escutando ali. Se o servidor não inicia, outro processo já está ocupando a porta, e você pode encontrá-lo e pará-lo.
Qual erro você está vendo?
O que aparece
Significado
Primeira coisa a tentar
Navegador: localhost recusou a conexão
Nada está escutando na porta 3000
Inicie o servidor de desenvolvimento e leia a URL que ele mostra
Terminal: EADDRINUSE :::3000
Outro processo já usa a porta 3000
Encontre esse processo e pare-o, ou use outra porta
A página carrega, mas aparece um app antigo
O servidor de outro projeto continua rodando
Pare-o e depois reinicie o certo
localhost sempre significa esta máquina, e o número depois dos dois-pontos escolhe com qual programa dela você está falando. A maioria dos problemas com a porta 3000 vem de um entre dois problemas opostos: nenhum servidor está rodando ali, ou dois servidores querem a porta ao mesmo tempo. Digite uma porta abaixo para ver os comandos para o seu sistema.
Informe o número da porta que o seu app usa. O padrão é 3000.
Copie o comando de busca para o seu sistema e rode em um terminal para ver qual processo está escutando.
Pare esse processo com o segundo comando, ou inicie o seu app em outra porta.
Se nada estiver escutando, confira a tabela de portas padrão para ter certeza de que a sua ferramenta realmente usa a 3000.
Leia a URL que o servidor de desenvolvimento mostra ao iniciar. O Vite, por exemplo, usa a 5173 e passa para a próxima porta livre se essa estiver ocupada.
Pare os servidores de desenvolvimento com Ctrl+C no terminal deles em vez de fechar a janela, o que pode deixar o processo rodando.
Use http, não https, a menos que você tenha iniciado o servidor com HTTPS de propósito; o Next.js só serve HTTPS localmente com --experimental-https.
Dentro do Docker, o app precisa escutar em 0.0.0.0 e a porta precisa estar publicada, senão o localhost da máquina host vai recusar a conexão.
Perguntas frequentes
O que é localhost:3000?
localhost é o nome do seu próprio computador, geralmente 127.0.0.1 ou ::1, e 3000 é um número de porta. Juntos, eles apontam para um servidor rodando localmente, quase sempre um servidor de desenvolvimento de um app web. Ninguém mais na internet consegue abrir a sua URL de localhost.
Por que o localhost:3000 diz que recusou a conexão?
Nenhum programa está aceitando conexões nessa porta. O servidor de desenvolvimento pode não estar rodando, pode ter travado com um erro ou pode estar escutando em outra porta, como a 5173. Confira o terminal onde você o iniciou.
Como resolvo o erro de porta 3000 já em uso?
Encontre o processo que ocupa a porta com lsof no Mac ou Linux, ou com netstat -ano no Windows, e pare-o com kill ou taskkill. Ou inicie o seu app em outra porta, por exemplo next dev -p 3001.
Como mudo a porta no Next.js?
Passe -p, como em next dev -p 4000, ou defina a variável de ambiente PORT ao rodar o comando. A documentação do Next.js observa que PORT não pode ser definida dentro de um arquivo .env, porque o servidor inicia antes de esse arquivo ser lido.
Outra pessoa consegue abrir o meu localhost:3000?
Não por esse endereço, porque localhost na máquina dela significa o computador dela. Para compartilhar na sua rede, o servidor precisa escutar em todas as interfaces, e os outros usam o endereço IP local da sua máquina e a porta.
Portas em um parágrafo
Um computador pode rodar muitos servidores ao mesmo tempo, então cada um escuta em uma porta numerada. Só um programa pode escutar em uma determinada porta e endereço por vez, e é por isso que iniciar um segundo servidor na 3000 falha com EADDRINUSE.
A porta 3000 não tem significado oficial. Ela virou costume porque ferramentas populares a escolheram como padrão, então também é a porta com mais chance de estar ocupada por um servidor que você esqueceu.
Conexão recusada, passo a passo
Primeiro confirme que há um servidor rodando: o terminal dele deve mostrar uma mensagem de pronto e uma URL. Se ele encerrou com um erro, corrija esse erro primeiro, já que o navegador não consegue se conectar a um servidor que não está lá.
Depois compare as portas. Se o terminal diz 5173 ou 4321 e você digitou 3000, o navegador está batendo em uma porta vazia. Por fim, tente 127.0.0.1:3000 no lugar de localhost:3000, o que descarta a resolução do nome para o endereço IPv6 quando o servidor só escuta em IPv4.
Portas padrão dos servidores de desenvolvimento
Padrões tirados da documentação de cada ferramenta, outubro de 2026
Ferramenta
Comando
URL padrão
next dev / next start
Exemplo hello world do Express
Ruby on Rails
bin/rails server
Vite
Vite preview
vite preview
Astro
astro dev
Lide com uma porta ocupada no seu próprio servidor
Ler a porta de PORT e informar o EADDRINUSE com clareza
Um pequeno servidor Express que usa a 3000 como alternativa e mostra uma mensagem legível quando a porta está ocupada.
macOS e Linux
Liste o processo que escuta na porta e depois pare-o pelo PID (a segunda coluna).
Windows (Prompt de Comando)
Mostre as conexões com os IDs de processo, filtre pela porta e depois encerre esse PID.
Rodar em outra porta
Deixe o outro processo em paz e inicie o seu app em uma porta livre.
Liberar uma porta
Porta
As portas vão de 1 a 65535. Mostrando os comandos para a 3000.