Decodificador de JWT (header, payload, assinatura, expiração)
Cole um JWT para decodificar instantaneamente o header e o payload como JSON. Reconhece claims padrão (iat, exp, nbf) e converte timestamps Unix para ISO 8601. Sinaliza tokens expirados ou ainda não válidos.
Decodificado inteiramente no seu navegador. O token nunca trafega pela rede.
Header
{
"alg": "HS256",
"typ": "JWT"
}Payload
{
"sub": "1234567890",
"name": "Jane Doe",
"iat": 1730000000,
"exp": 4886000000
}- Assinatura presente
- ✓
- Emitido em (iat)
- 2024-10-27T03:33:20.000Z
- Expira em (exp)
- 2124-10-30T22:13:20.000Z
Como funciona
Como é um JWT
Um JWT é composto por três segmentos codificados em Base64url separados por pontos: header.payload.signature. Cada segmento é um objeto JSON codificado para transmissão segura em URLs. O header declara o algoritmo de assinatura, o payload carrega os claims (assunto, expiração, dados personalizados) e a assinatura permite ao destinatário verificar a integridade se tiver a chave.
Este decodificador lê apenas os dois primeiros segmentos. A assinatura é o terceiro segmento, mas verificá-la exige a chave secreta/pública — essa é uma operação separada que não realizamos aqui.
Claims padrão que vale conhecer
iss (issuer): quem criou o token. iat (issued at): quando foi criado, como timestamp Unix. exp (expiry): quando deixa de ser válido, também Unix. nbf (not before): o momento mais cedo em que deve ser aceito. sub (subject): a entidade que representa, geralmente um ID de usuário. aud (audience): para quem o token é destinado, geralmente uma URL de serviço.
Nem todos são obrigatórios; JWTs mínimos frequentemente têm apenas sub + iat + exp. Claims personalizados são qualquer outro dado — eles convivem com os padrões no payload.
Por que decodificar ≠ verificar
Qualquer pessoa pode decodificar um JWT — o header e o payload são apenas JSON codificado em Base64. Por isso dizemos 'nunca coloque segredos no payload': eles são efetivamente públicos.
Verificação significa checar a assinatura contra a chave secreta (HMAC) ou chave pública (RSA/ECDSA). Sem verificação, não se pode confiar em nenhum claim dentro do payload — um atacante pode criar qualquer payload que quiser.
Use esta ferramenta para inspecionar tokens durante a depuração. Use uma biblioteca JWT no seu servidor para verificá-los em produção.
Perguntas frequentes
›Posso verificar a assinatura aqui?
Não — a verificação precisa da chave secreta ou pública, que nunca deve sair de um ambiente confiável. Use uma biblioteca JWT no servidor (jsonwebtoken para Node, PyJWT para Python, etc.).
›O token sai do meu navegador?
Nunca. A decodificação é feita localmente; não temos um endpoint de servidor para recebê-lo.
›Por que meu token é 'inválido'?
Causas comuns: copiar e colar adicionou/removeu espaços, falta um dos três segmentos ou um segmento tem Base64url mal formado. Remova os espaços e tente novamente.
›O que é Base64url vs Base64?
Base64url substitui '+' por '-', '/' por '_' e remove o preenchimento '=' para que a string codificada seja segura em URLs e headers HTTP. JWTs sempre usam Base64url.
›Por que o meu payload Unicode mostra texto bagunçado?
Decodificamos UTF-8, que é o padrão. Se o payload foi codificado de forma diferente, o JSON.parse pode falhar. A maioria dos emissores de JWT codifica corretamente em UTF-8.
›HS256 é seguro?
Se o segredo for suficientemente longo (≥256 bits) e mantido em segredo, sim. Vulnerabilidades comuns do HS256 são segredos fracos e aceitar tokens com alg='none'. Use segredos aleatórios de ≥32 caracteres e rejeite 'none' explicitamente.
›Por que preferir RS256 ao invés de HS256?
RS256 (RSA assimétrico) permite publicar uma chave pública para verificação enquanto mantém a chave de assinatura privada. HS256 (HMAC simétrico) exige compartilhar o segredo com cada verificador. Para arquiteturas de múltiplos serviços, RS256 é mais seguro.
›Posso decodificar tokens enormes?
O limite prático é ~10 MB de entrada; acima disso o navegador pode ficar lento. JWTs geralmente têm menos de 4 KB; se o seu for maior, considere se você não está armazenando dados demais nos claims.
Ferramentas relacionadas
Última atualização: