Menu

Tipos de input em HTML: os 22 tipos da tag input

Todos os tipos da tag <input> do HTML num só lugar: text, email, password, number, range, date e time, color, file, hidden e os demais, com o que cada um valida, o teclado que abre no celular e os atributos que eles compartilham.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

A tag input e seus tipos

<input> é um campo de formulário, e o seu atributo type decide o tipo. A mesma tag cria uma caixa de texto, um controle deslizante, um seletor de data ou um seletor de cor. Teste cada campo abaixo e aperte Submit para ver o que o formulário envia:

<input> é um elemento vazio, então não tem tag de fechamento. O seu name é a chave com que o valor é enviado, e value é o valor inicial. Um type ausente ou digitado errado gera um campo de texto simples.

Todos os tipos de input do HTML

typeO que éObservações
textUma linha de textoO padrão
passwordTexto mostrado como pontosNão é criptografado por si só; envie por HTTPS
emailUm endereço de e-mailValida o formato; tecla @ no teclado do celular
urlUm endereço webPrecisa começar com um esquema como https://
telUm número de telefoneTeclado numérico no celular, sem verificação de formato
searchUma caixa de buscaMuitas vezes mostra um botão de limpar
numberUm númeroBotões de incremento, min, max, step
rangeUm controle deslizanteImpreciso de propósito; o valor é um número
dateUma dataO valor é YYYY-MM-DD
timeUma hora do diaO valor é HH:MM (24 horas)
datetime-localData e hora, sem fuso horárioO valor é YYYY-MM-DDTHH:MM
monthUm ano e mêsNão é suportado em todos os navegadores
weekUm ano e número da semanaNão é suportado em todos os navegadores
colorUm seletor de corO valor é #rrggbb em minúsculas
checkboxUma caixa liga e desligaVeja checkbox no HTML
radioUma escolha dentro de um grupoVeja radio button no HTML
fileUm seletor de arquivoaccept, multiple
hiddenUm valor enviado, mas não mostradoPara IDs e tokens
submitUm botão de envio<button type="submit"> é mais flexível
resetUm botão de limparRaramente é uma boa ideia
buttonUm botão que não faz nada sozinhoPara JavaScript
imageUm botão de envio desenhado como imagemTambém envia as coordenadas do clique

Tipos de texto e teclados de celular

email, url, tel, search e text parecem todos uma caixa de texto no computador. A diferença está na validação e, no celular, no teclado que abre. A borda neste exemplo fica verde ou vermelha conforme o navegador avalia o valor:

  • ada@example é um e-mail válido para o navegador: ele só verifica se há texto, @ e um domínio, não se o domínio tem ponto. A verificação de verdade acontece no servidor.
  • example.com não é uma url válida, porque não tem esquema. https://example.com é.
  • tel aceita qualquer coisa. Os formatos de telefone variam demais entre países, então não há verificação nativa; adicione um pattern se precisar.
  • inputmode="numeric" pede ao celular um teclado de dígitos sem os problemas de type="number", e por isso é a escolha certa para CEP, códigos de uso único e números de cartão.

number e range

Os dois aceitam min, max e step. number é para valores exatos; range é um controle deslizante para valores em que o número exato importa menos. Um range não mostra número, então combine-o com um <output>:

step vale 1 por padrão em number, então um campo de preço sem step="0.01" rejeita 4.99 quando o formulário é enviado. No JavaScript, input.value é sempre uma string; use input.valueAsNumber para obter um número.

Datas e horas

Os tipos de data e hora abrem o seletor próprio do navegador. O que o usuário vê segue a sua localidade (09/24/2026, 24.09.2026), mas o valor tem sempre o mesmo formato fixo:

Esse formato fixo é o que o servidor recebe e o que o JavaScript lê, então você nunca precisa interpretar "24.09.2026". min e max usam o mesmo formato. datetime-local não tem fuso horário: se isso importa, converta no servidor usando o fuso do usuário.

color e file

accept="image/*" limita o seletor de arquivos a imagens (e oferece a câmera no celular); ele também aceita extensões, como accept=".pdf,.docx". É só uma dica para o seletor, então verifique o tipo do arquivo no servidor. multiple permite vários arquivos. Um upload de verdade também precisa de method="post" e enctype="multipart/form-data" no formulário.

Sugestões com datalist

Um <datalist> dá a um campo de texto uma lista de sugestões e ainda aceita qualquer valor. Ligue os dois com o atributo list:

Digite "ja" no campo para ver as sugestões correspondentes. Ao contrário de um select, o usuário pode digitar um valor que não está na lista.

Atributos que funcionam nos inputs

AtributoFaz
nameA chave com que o valor é enviado
valueO valor inicial
placeholderUma dica mostrada enquanto o campo está vazio (não é um label)
requiredPrecisa ser preenchido antes do envio
disabledNão pode ser usado e não é enviado
readonlyNão pode ser editado, mas é enviado
autocompleteO que preencher automaticamente: email, name, current-password, one-time-code, off
min, max, stepLimites para números, ranges, datas e horas
minlength, maxlengthLimites de tamanho para os tipos de texto
patternUma expressão regular que o valor inteiro precisa satisfazer
inputmodeQual teclado mostrar no celular: numeric, decimal, email, tel, url
listO id de um <datalist>
multipleVários valores, para email e file
acceptTipos de arquivo para file

Erros comuns

  • type="number" para telefones, CEPs ou números de cartão. Não são quantidades. Use tel ou text com inputmode="numeric".
  • Um campo de preço sem step="0.01". Valores decimais falham na validação.
  • Usar placeholder como label. Ele some assim que o usuário digita.
  • Contar com accept ou type="email" para segurança. São conveniências; o servidor verifica de novo.
  • type="month" ou type="week" sem alternativa. Alguns navegadores mostram um campo de texto simples.
  • Uma tag de fechamento </input>. <input> é vazio.

Perguntas frequentes

Quantos tipos de input existem no HTML?

22: button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url e week. Um tipo desconhecido ou ausente se comporta como text.

Qual é o tipo de input padrão no HTML?

text. Um <input> sem type, ou com um tipo que o navegador não conhece, é um campo de texto de uma linha.

Devo usar type="number" para telefone ou CEP?

Não. number é para quantidades: ele adiciona botões de incremento e rejeita o +, os espaços e os hífens que os telefones têm. Use type="tel" para telefones e type="text" com inputmode="numeric" para códigos como CEP e número de cartão.

Qual formato o input type date usa?

O valor é sempre YYYY-MM-DD, como 2026-09-24, seja qual for o formato que o usuário vê na tela. A exibição segue a localidade do usuário; o valor enviado e lido pelo script não.

A tag input precisa de tag de fechamento?

Não. <input> é um elemento vazio: escreva <input type="text" name="city">. Um </input> de fechamento é inválido, e a barra de auto fechamento em <input /> é permitida, mas não faz nada.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR