Mostrar ou ocultar senha: como deve funcionar

Como criar um controle de mostrar ou ocultar senha previsível, acessível e seguro.

Três campos de senha em wireframe com pontos ocultos e ícones de visibilidade
Nível de impácto
Crítico
Status
Recomendado
Nível de evidênica
Forte evidência

Contexto

Campos de senha ocultam os caracteres para reduzir a exposição visual, mas a ocultação também pode aumentar erros de digitação. Por isso, login, cadastro e recuperação de conta devem oferecer uma forma clara e opcional de conferir o valor digitado. O controle precisa preservar o valor, o foco e a possibilidade de usar teclado, preenchimento automático e gerenciadores de senha.

Oculte a senha por padrão, mas ofereça uma forma simples e opcional de conferir o que foi digitado. O controle deve ajudar a corrigir erros sem interromper o preenchimento, apagar o valor ou criar uma mudança inesperada de contexto.

Use um botão claro para mostrar ou ocultar a senha. O controle deve ficar próximo ao campo e comunicar a ação disponível, com texto acessível como “Mostrar senha” ou “Ocultar senha”. Um ícone pode reforçar a intenção, mas não deve ser o único sinal.

Preserve o valor e o estado do campo. Alternar a visibilidade não pode apagar, truncar ou reformatar a senha digitada. O campo também deve continuar associado ao seu rótulo, às mensagens de erro e às instruções relevantes.

Mantenha o foco no campo ou no controle acionado. Ao mostrar ou ocultar a senha, não envie a pessoa para outro ponto da página nem faça o teclado virtual desaparecer sem necessidade. A transição deve continuar o preenchimento exatamente de onde foi interrompido.

Atualize o estado de forma perceptível e programática. O nome acessível do botão precisa refletir a próxima ação, e seu estado deve ser compreensível para leitores de tela e outras tecnologias assistivas. Não dependa apenas da troca de ícone ou cor.

Preserve os recursos de entrada. Permita digitação, colagem, preenchimento automático e uso de gerenciadores de senha. A alternância entre texto oculto e visível não deve quebrar o autofill, alterar o valor ou impedir que o campo continue sendo tratado como senha.

Projete uma área de toque confortável. No mobile, o botão precisa ser fácil de acionar sem cobrir o texto digitado nem ficar próximo demais de outra ação. Mantenha contraste, foco visível e espaço suficiente para diferentes tamanhos de tela e níveis de zoom.

Considere o risco de exposição. A senha deve permanecer oculta quando o campo é aberto e depois de uma ação de confirmação, salvo quando a tarefa exigir outro comportamento. Mostrar o valor deve depender de uma ação intencional e ser fácil de reverter.

Teste o fluxo completo. Verifique criação de conta, login, troca e recuperação de senha com teclado, leitor de tela, toque, autofill, colagem, gerenciadores de senha, zoom, mensagens de erro e diferentes condições de rede.

Regra prática

Mascarar a senha deve ser o padrão, e mostrar o valor deve ser uma escolha explícita da pessoa. Ao alternar a visibilidade, preserve o valor, o foco, a acessibilidade e todos os recursos de entrada do campo.

Base da recomendação

A orientação combina recomendações do NIST para permitir que a pessoa veja a senha durante a entrada com critérios do W3C sobre nome, função, estado e valor de controles. Design Systems como GOV.UK e USWDS complementam a base com padrões de visibilidade, rótulos e comportamento do controle. A decisão deve equilibrar prevenção de erros com o risco de exposição no contexto real.

Campo real de senha do GOV.UK oculto por padrão com o controle textual Show ao lado.
Exemplo real: o GOV.UK mantém o campo de senha oculto por padrão e oferece o controle textual Show para revelar o valor por ação intencional. Fonte: GOV.UK Design System — Password input: https://design-system.service.gov.uk/components/password-input/

Porque isso importa?

A senha mascarada é mais difícil de conferir, especialmente em telas pequenas, para pessoas com dificuldades de digitação ou quando o valor foi gerado por um gerenciador. NIST recomenda oferecer uma opção para exibir a senha durante a entrada, e o W3C reconhece que mostrar o valor pode aumentar a chance de sucesso para algumas pessoas. A exposição deve acontecer somente por ação intencional e em um contexto em que isso seja aceitável.

  • Login.
  • Cadastro.
  • Troca ou redefinição de senha.
  • Senhas longas, geradas ou difíceis de conferir.
  • Interfaces usadas em dispositivos móveis.
  • Não revele a senha automaticamente.
  • Não dependa apenas de um ícone ambíguo.
  • Não apague o valor ao alternar o estado.
  • Não mova o foco para outro elemento.
  • Não bloqueie colagem ou gerenciadores.
  • Não use um alvo pequeno demais.
  • Não deixe o estado sem identificação.
Formulário real de login do USWDS com campo Password e controle Show password.
Exemplo real: o USWDS inclui Show password no formulário de autenticação, tornando explícita a opção de conferir o valor sem revelá-lo automaticamente. Fonte: U.S. Web Design System — Sign-in: https://designsystem.digital.gov/templates/authentication-pages/sign-in/

Recomendações

Faça

Práticas recomendadas
  • Use botão claro.
  • Oculte por padrão.
  • Preserve o valor.
  • Preserve o foco.
  • Informe o estado.
  • Permita teclado.
  • Teste no mobile.
Dois campos de senha em wireframe com valor preservado e controle de visibilidade
Exemplo correto — imagem didática criada para a CamaraUX: o valor permanece preservado durante a interação e o foco continua previsível. A arte não é uma captura de produto real.

Evite

Práticas a evitar
  • Não revele sozinho.
  • Não use só o ícone.
  • Não apague a senha.
  • Não mova o foco.
  • Não bloqueie colar.
  • Não use alvo pequeno.
  • Não dependa de cor.
Dois campos de senha em wireframe, com o segundo vazio após a interação e símbolo de erro
Exemplo incorreto — imagem didática criada para a CamaraUX: a interação apaga o valor digitado e deixa o resultado ambíguo. A arte não é uma captura de produto real.
Campo real do Material Design com senha visível e ícone de olho para alternar a visibilidade.
Exemplo real: o Material Design documenta a alternância entre caracteres mascarados e visíveis com controle de visibilidade no campo de senha. Fonte: Material Design — Text fields: https://m1.material.io/components/text-fields.html

Acessibilidade

Dê ao campo um nome acessível e use o tipo apropriado, como input type="password", com autocomplete="current-password" no login ou new-password na criação. O controle de visibilidade deve ser um botão real, ter nome acessível que indique a ação atual e comunicar a mudança de estado. Enter e Espaço devem funcionar. Oculte o ícone decorativo do leitor de tela quando o nome do botão já informar a ação. Preserve foco, valor e seleção, não bloqueie colagem nem gerenciadores e teste com teclado, zoom, contraste, leitor de tela e toque.

Checklist

  • A senha começa oculta?
  • O botão tem nome acessível?
  • O estado mostra a ação seguinte?
  • O valor permanece intacto?
  • O foco permanece previsível?
  • O controle funciona com teclado?
  • O alvo é confortável no mobile?
  • Colagem e autofill funcionam?
  • O gerenciador de senhas funciona?
  • A exposição depende de ação explícita?
  • A solução foi testada com leitor de tela?

Referências

NIST — Digital Identity Guidelines, SP 800-63B-4, seção 3.1.1. Password Verifiers. Recomenda oferecer uma opção para exibir a senha durante a entrada, permitir gerenciadores e não bloquear colagem.

NIST — Customer Experience Considerations. Experiência de uso de autenticadores. Relaciona a ocultação a erros de entrada, recomenda opção de exibição e chama atenção para duração da máscara, dispositivos móveis e tamanho do alvo.

W3C WAI — WCAG 2.2, critério 3.3.8. Accessible Authentication (Minimum). Reconhece que mostrar opcionalmente a senha pode ajudar pessoas com dificuldades de digitação e reforça o uso de gerenciadores, autofill e colagem.

W3C WAI-ARIA APG — Disclosure. Padrão de mostrar e ocultar conteúdo. Serve como referência para o comportamento de um controle operável por botão, teclado e estado exposto. O padrão deve ser adaptado ao campo de senha.

W3C WAI — Técnica H100. Inputs de e-mail e senha corretamente marcados. Orienta nomes acessíveis, autocomplete e compatibilidade com preenchimento automático e colagem.

Design System GOV.BR — Input. Documentação do componente Input. Referência complementar para estrutura, estados e consistência de campos em interfaces públicas brasileiras; não substitui a validação específica do controle de visibilidade.

Veja também

Esta recomendação foi útil para você?