Guia CEP

UX de CEP em formulários: como não irritar o usuário

Máscaras, validação em tempo real, autofill e mensagens de erro — boas práticas de UX para o campo CEP que reduzem abandono de formulário.

Atualizado em 27/03/2026

O campo CEP é crítico para conversão

Em formulários de checkout, cadastro e endereço, o campo CEP costuma ser o primeiro de uma sequência longa. Se ele causar fricção — erro confuso, máscara agressiva, validação lenta — o usuário abandona antes de terminar. Pequenas decisões de UX nesse campo têm impacto direto na taxa de conversão.

Máscara: aplicar ou não?

A máscara XXXXX-XXX ajuda visualmente, mas pode causar problemas se mal implementada: Faça:

  • Aplique a máscara só após o usuário começar a digitar
  • Aceite o CEP com ou sem hífen na submissão — normalize no backend
  • Permita colar (Ctrl+V) — muita gente copia o CEP de outro lugar Não faça:
  • Bloquear a tecla backspace ou dificultar a edição
  • Rejeitar o formulário por causa do hífen (ou ausência dele)
  • Aplicar máscara agressiva que move o cursor de forma inesperada

Quando disparar a busca automática

O momento ideal para consultar a API de CEP e preencher os campos é o evento blur — quando o usuário sai do campo — ou quando o campo atingir 8 dígitos numéricos. Evite:

  • Disparar a busca a cada tecla digitada (requisições desnecessárias)
  • Aguardar o clique em "Buscar" (etapa extra desnecessária)
input.addEventListener('input', () => {
  const digits = input.value.replace(/\D/g, '');
  if (digits.length === 8) buscarEPreencher(digits);
});

Feedback visual durante a busca

O usuário precisa saber que algo está acontecendo. Use um indicador de carregamento discreto no próprio campo ou nos campos que serão preenchidos:

  • Ícone de loading ao lado do campo CEP
  • Campos de endereço com opacity: 0.5 enquanto aguardam
  • Mensagem de sucesso discreta quando o preenchimento completar

Mensagens de erro úteis

Evite mensagens genéricas. Seja específico:

Situação Mensagem ruim Mensagem boa
CEP incompleto "CEP inválido" "Digite os 8 dígitos do CEP"
CEP não encontrado "Erro ao buscar CEP" "CEP não encontrado. Preencha o endereço manualmente."
Falha na API "Erro interno" "Não foi possível buscar o CEP agora. Preencha os campos abaixo."

Sempre permita preenchimento manual

O autofill é uma conveniência — nunca uma exigência. Se a API falhar ou o CEP não existir na base, o usuário deve conseguir preencher rua, bairro e cidade manualmente sem impedimentos. Campos preenchidos automaticamente devem ser editáveis. Muitas vezes o complemento ou o nome do bairro virá diferente do que o usuário conhece.

Mobile: atenção ao teclado

Em dispositivos móveis, use inputmode="numeric" no campo CEP para abrir o teclado numérico automaticamente:

<input type="text" name="cep" inputmode="numeric" maxlength="9" placeholder="00000-000">

Evite type="number" — ele remove o hífen e causa comportamentos estranhos em alguns browsers.

Acessibilidade

  • Use <label> associado ao campo via for/id
  • Adicione autocomplete="postal-code" para que gerenciadores de senha e o preenchimento automático do browser funcionem
  • Anuncie o resultado do autofill para leitores de tela com aria-live="polite" na região de feedback

Consulte qualquer CEP gratuitamente

Rua, bairro, cidade — todos os dados do endereço em segundos.

Buscar CEP agora