Codificador / decodificador JWT
Cole um token para ler o cabeçalho e o payload, ou assine um a partir das suas próprias claims — sem botão, sem envio.
Opcional ao decodificar (preencha para verificar), obrigatório para assinar.
Assinatura:
Token
Cabeçalho
Payload
Como usar
- Cole um token: o cabeçalho e o payload aparecem na hora, sem botão para pressionar. Tudo o que veio do token fica exatamente como foi assinado — a entrada nunca é reescrita.
- Adicione o segredo abaixo da entrada para conferir a assinatura. Deixar vazio significa apenas “não verificada”: você continua lendo as claims como estão.
- Mude para Codificar, escreva suas claims como JSON, escolha HS256/384/512 e um segredo, e copie o token gerado. Trocar de modo nunca apaga o que você digitou.
- As claims padrão exp / iat / nbf são exibidas por extenso no seu idioma e fuso horário, com marcações de expirado e ainda não válido.
Exemplo
Token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1LTEwMjQiLCJuYW1lIjoiSmFuZSBDb29wZXIiLCJyb2xlIjoiZWRpdG9yIiwiaXNzIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc5ODc2MTYwMH0.jCqliF6m-TAglXcHrjuXj7kYIjjsRO7kv6_8O1yb_7Q
Cabeçalho e payload
Header
{
"alg": "HS256",
"typ": "JWT"
}
Payload
{
"sub": "u-1024",
"name": "Jane Cooper",
"role": "editor",
"iss": "https://api.example.com",
"iat": 1767225600,
"exp": 1798761600
}Assinado com o segredo “dev-secret-change-me”; digite-o em Segredo e a linha de status muda para “Assinatura verificada”. Mude para Codificar e pressione Exemplo para obter o mesmo payload: com o mesmo segredo ele reconstrói este token exato, caractere por caractere.
Regras, limites e problemas conhecidos
- Apenas HS256, HS384 e HS512 são suportados, tanto para assinar quanto para verificar. Tokens RS*, ES* e PS* são decodificados e exibidos como estão, mas a assinatura nunca é conferida — isso exige uma chave pública, então a linha de status avisa em vez de adivinhar.
- Tokens sem assinatura (alg: none) são decodificados e claramente sinalizados, mas nunca gerados: pedir para assinar sem um segredo gera um erro em vez de um token sem assinatura.
- A codificação monta o cabeçalho sozinha (`{"alg": … ,"typ": "JWT"}`). Campos de cabeçalho como kid, jku, x5c ou cty não são transportados — esta ferramenta assina claims, não cadeias de certificados.
- Seu JSON de claims é reserializado de forma compacta antes de assinar, então indentação e comentários ficam fora do token. A ordem das chaves segue os objetos JavaScript: chaves repetidas ficam com a última, e chaves com aparência numérica vão para a frente.
- Inteiros muito grandes perdem precisão — `12345678901234567890` volta arredondado, porque é o que os números JavaScript fazem. Nada é corrigido em silêncio; use strings quando os dígitos exatos importarem.
- As claims são exibidas indentadas para leitura, enquanto a assinatura cobre os segmentos brutos exatamente como aparecem no token. Nada é recodificado pelas suas costas, então um token que verifica aqui também verifica no seu próprio código.
- Base64url é rígido: `+`, `/` e `=` são reportados como erros em vez de aceitos silenciosamente, e bytes que não são UTF-8 são reportados em vez de substituídos por caracteres de substituição. Espaços dentro de um token colado são ignorados, já que tokens nunca os contêm.
- JWEs criptografados (cinco partes) não são descriptografados — você é avisado de que foi isso que colou.
- Limite de 10.000 caracteres. Nada é enviado, armazenado, gravado na URL ou compartilhado: o botão de compartilhar só compartilha o endereço desta página, nunca seu token ou segredo.
Ferramentas relacionadas
Depois de ler as claims, estes são os próximos passos habituais.