Como checar se uma string está vazia em JavaScript
Neste artigo você vai aprender a como checar se uma string está vazia em JavaScript, utilizando um método muito simples da linguagem
Resposta rápida: em JavaScript existem três formas de checar se uma string está vazia
- str === "" compara com a string vazia e só dá true quando a variável é exatamente uma string sem nada dentro
- !str usa o fato de que a string vazia é um valor falsy, então pega o vazio mas também pega null, undefined, 0, NaN e false
- str.trim() === "" pega também a string que só tem espaço em branco, que é o caso clássico de formulário
var teste = ""; console.log(teste === ""); // true console.log(!teste); // true console.log(" ".trim() === ""); // true
Use === "" quando o tipo já é garantido, use !str quando qualquer ausência de valor conta como vazio e use trim() quando o dado vem digitado por gente
Só não chame .trim() direto em algo que pode ser null ou undefined, porque isso estoura erro: cheque a presença antes com if (str && str.trim() === "")

Conteúdo também disponível em vídeo:
Fala programador(a), beleza? Bora aprender a como identificar uma string que está sem valor!
A forma mais simples é verificar se o dado está presente com uma instrução NOT
Veja um exemplo prático:
var teste = "com valor"; var teste2 = ""; console.log(!teste); // false console.log(!teste2); // true
Esta instrução com NOT verifica se o valor está presente em uma determinada variável
Podemos desta maneira verificar diversos outros tipos de valores, que representam vazios, como:
- NaN
- null
- undefined
- 0
- false
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 48min
Assim cobriremos outras possibilidades que podem representar a ausência de um valor em uma variável do nosso sistema, não somente strings
Outra possibilidade é checar se o valor está vazio diretamente
Veja o exemplo:
var teste = "com valor";
var teste2 = "";
if(teste === "") {
console.log("Está vazio");
}
if(teste2 === "") {
console.log("Está vazio");
}
Desta forma está mais explícita a checagem por valores vazios e vai resolver o nosso problema da mesma forma, identificando strings sem valor determinado
Neste código, apenas o segundo if é ativado, pois a variável teste2 não possui valor
Conclusão
Neste artigo vimos como checar se uma string está vazia em JavaScript
Utilizamos o operador NOT, que valida se um valor está presente em uma determinada variável, assim resolvendo o nosso problema
Também vimos uma outra abordagem mais implícita, onde checamos diretamente se o valor é nulo ou não
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
A lista completa de valores falsy em JavaScript:
A lista da MDN não para nesses cinco, se liga nela inteira:
false
0
-0
0n (o zero do BigInt)
"" (a string vazia)
null
undefined
NaN
document.all (o único objeto falsy da linguagem, herança dos tempos de detecção de navegador)
Todo o resto é truthy
Por isso o !valor é ótimo pra pegar "ausência de dado" no geral, mas se o teu problema é ESPECIFICAMENTE string vazia, a comparação direta é mais honesta 🙂
E se a string só tiver espaços em branco?
Aqui mora o bug clássico do formulário
O usuário aperta a barra de espaço três vezes e manda
Pra tua checagem, " " não é string vazia, é string com conteúdo, e passa direto
var teste = " "; console.log(teste === ""); // false console.log(!teste); // false
A solução é limpar as pontas antes de comparar, com o trim()
var teste = " "; console.log(teste.trim() === ""); // true
O trim() remove os espaços em branco das duas pontas e devolve uma NOVA string, sem alterar a original
Ou seja: se tu precisa do valor limpo depois, guarda o retorno numa variável, porque a variável antiga continua com os espaços lá

VPS Hostinger para seu sistema
10% OFF extraVPS com SSD NVMe e backups semanais. O cupom MATHEUSHORADECODAR é aplicado automaticamente pelo link.
Ver planos com 10% OFF →var teste = " com valor "; var limpo = teste.trim(); console.log(limpo); // "com valor" console.log(teste); // " com valor "
Tome cuidado! Chamar .trim() em null ou undefined estoura erro na hora
Então, se o dado vem de fora (API, input, banco), cheque a presença primeiro e só depois faça o trim
if (teste && teste.trim() === "") { console.log("Só tem espaço em branco aqui"); }
E dá pra usar polyfill? Não precisa: o trim() faz parte do padrão desde o ECMAScript 5 e a MDN classifica ele como recurso bem estabelecido, disponível nos navegadores desde julho de 2015
E quando eu quero limpar só um lado?
A linguagem tem os dois irmãos do trim(), que entraram no padrão no ECMAScript 2019:
‘ abc ‘.trimStart() devolve ‘abc ‘
‘ abc ‘.trimEnd() devolve ‘ abc’
O suporte nas engines é antigo: Chrome desde a versão 66, Firefox desde a 61, Safari desde a 12 e Node.js desde a versão 8
E aquele trimLeft() e trimRight() que tu vê em código velho?
São só apelidos legados, que constam no Anexo B da especificação como aliases de trimStart e trimEnd
Em código novo, usa trimStart e trimEnd e segue o baile
Vazio não é a mesma coisa que null ou undefined:
Esse é o detalhe que derruba muito código em produção
Uma string vazia é um valor, ela existe
Já null e undefined são a ausência do valor
E isso muda o comportamento do operador de coalescência nula (o ??), padronizado no ECMAScript 2020 junto com o encadeamento opcional (?.)
O ?? retorna o operando da direita SÓ quando o da esquerda é null ou undefined
var nome = ""; console.log(nome ?? "Visitante"); // "" (a string vazia passa!)
var nome2 = null; console.log(nome2 ?? "Visitante"); // "Visitante"
Ou seja: string vazia e 0 NÃO disparam o fallback do ??
Se o que tu quer é "qualquer coisa vazia vira o padrão", aí o caminho é o ||, que cai no falsy inteiro
console.log("" || "Visitante"); // "Visitante"
Dois operadores parecidos, comportamentos bem diferentes, escolhe pelo que tu considera vazio no teu sistema
Qual abordagem usar em cada caso:
Quero saber se é EXATAMENTE uma string sem nada dentro? Usa str === ""
Quero pegar qualquer ausência de valor (vazio, null, undefined, 0, NaN, false)? Usa !str
O campo pode vir com espaço em branco do usuário? Usa str.trim() === ""
O dado pode chegar como null ou undefined e eu ainda quero limpar as pontas? Cheque a presença antes: if (str && str.trim() === "")
Quero um valor padrão só quando for null ou undefined? Usa ?? (a string vazia passa)
Quero um valor padrão pra qualquer coisa vazia? Usa ||
Não existe uma "melhor", existe a que combina com o que o teu sistema considera vazio

Crie sistemas com IA para vender
Prompts, modelos e checklists para criar e publicar seu sistema com IA e preparar a oferta para o primeiro cliente.
Quero o e-book gratuito Receba o livro e os bônus no seu e-mail.Perguntas frequentes sobre string vazia em JavaScript (usar o conteúdo do bloco ‘faq’ desta proposta, cada pergunta como H3)
Eu gravei esse conteúdo em vídeo antes de escrever aqui, com a estrutura básica de HTML mais um arquivo JS separado, rodando num servidor local pra abrir a página no navegador
Criei duas variáveis: uma com texto e outra vazia
Aí testei os dois caminhos com o console aberto: primeiro a comparação com "", que só ativou o if da variável vazia, e depois o operador NOT na frente das duas, que inverteu o resultado exatamente como a lógica de falsy manda
O que ficou claro na prática é uma coisa: no console tu não enxerga a diferença entre a string vazia e a string com três espaços, as duas parecem idênticas ali na tela
É por isso que o bug de formulário passa batido, e é por isso que eu virei chato com trim()
O vídeo com esse teste está incorporado no começo do post, se tu preferir ver a tela rodando
Perguntas frequentes
Qual a diferença entre str === "" e !str?
O === "" é uma comparação estrita: só devolve true se o valor for exatamente uma string vazia
Já o !str devolve true pra qualquer valor falsy, e a string vazia é apenas um deles
Segundo a MDN, a lista completa de falsy é: false, 0, -0, 0n, "" (string vazia), null, undefined, NaN e document.all
Então !str também dispara pra null, undefined, 0 e NaN
Se o teu objetivo é ESPECIFICAMENTE string vazia, vai de === ""
Se é "não veio nada útil aqui", vai de !str
Como checar se uma string tem só espaços em branco?
Compare depois de limpar as pontas com trim():
var teste = " "; console.log(teste === ""); // false console.log(teste.trim() === ""); // true
O trim() remove o espaço em branco das duas pontas, então uma string composta só de espaços vira "" e cai na comparação
O trim() altera a string original?
Não
O trim() remove os espaços das duas pontas e retorna uma NOVA string, sem modificar a original
Se tu precisa do valor limpo depois, guarda o retorno: var limpo = teste.trim()
Preciso de polyfill pra usar o trim()?
Não
O String.prototype.trim() faz parte do padrão desde o ECMAScript 5 e a MDN classifica ele como recurso bem estabelecido, disponível nos navegadores desde julho de 2015
Qual a diferença entre trimStart e trimLeft?
Nenhuma no comportamento: trimLeft e trimRight constam no Anexo B da especificação como apelidos legados de trimStart e trimEnd
Os nomes oficiais são trimStart() e trimEnd(), que entraram no padrão no ECMAScript 2019
‘ abc ‘.trimStart() devolve ‘abc ‘ e ‘ abc ‘.trimEnd() devolve ‘ abc’
O suporte já é antigo: Chrome desde a versão 66, Firefox desde a 61, Safari desde a 12 e Node.js desde a versão 8
O operador ?? serve pra dar um valor padrão quando a string está vazia?
Não serve
O operador de coalescência nula (??), padronizado no ECMAScript 2020, retorna o operando da direita apenas quando o da esquerda é null ou undefined
String vazia e 0 não disparam o fallback:
console.log("" ?? "Visitante"); // "" console.log(null ?? "Visitante"); // "Visitante"
Se tu quer que a string vazia também caia no valor padrão, usa o || , que trabalha com a lista inteira de valores falsy
A string vazia é a mesma coisa que null em JavaScript?
Não
A string vazia é um valor que existe e tem tipo string, com comprimento zero
Já null e undefined representam a ausência de valor
Os três são falsy, então !valor pega os três, mas a comparação estrita separa: "" === null devolve false
Essa checagem mudou nas versões mais recentes do JavaScript?
A base continua igual
A edição vigente da especificação é o ECMAScript 2026, a 17ª edição, aprovada pela Ecma International em 30 de junho de 2026, e o texto oficial fica publicado pelo TC39 em tc39.es/ecma262/2026/
Comparar com "", usar a checagem falsy e limpar com trim() seguem sendo o caminho, e o que apareceu nos últimos anos (trimStart/trimEnd no ES2019, ?? e ?. no ES2020) só deixou o código mais curto
Leia também
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 30min
Blog | Mais populares
As diferenças de var, let e const
Neste artigo veremos quais são as diferenças nestas três formas de declarar valores, e também casos de uso para var, let e const. Este conteúdo […]

Como redirecionar para outra página com JavaScript
Neste artigo vamos aprender como redirecionar para outra página com JavaScript, sem utilizar libs como jQuery, de uma maneira simples e efetiva. Fala programador(a), tudo […]
Exercícios de lógica de programação JavaScript com gabarito
Pratique lógica com JavaScript resolvendo um exercício antes de abrir o gabarito. Execute o código, teste uma entrada comum e um caso de borda, como […]

Obrigado! Tava precisando só de uma pequena luz. Estou apredendo JavaScritp
de nada =)
Obrigada demais, salvou meu projeto =)
de nada =)