Decodificar só lê o token; ele não está verificado até a assinatura ser conferida com a chave correta.

Este decodificador JWT separa um JSON Web Token em header, payload e assinatura e mostra os claims como JSON legível, com exp, iat e nbf convertidos para datas locais. Ele também verifica assinaturas HS, RS, PS e ES e assina tokens HS256 novos. Tudo roda no seu navegador com a Web Crypto API.

Como usar

  1. Cole um JWT. Header, payload e assinatura são coloridos e decodificados assim que você cola.
  2. Leia os claims: exp, iat e nbf aparecem no seu horário local, com “em 3 horas” ou “há 2 dias”.
  3. Para verificar a assinatura, digite o segredo (HS256/384/512) ou cole a chave pública em PEM, um certificado X.509 ou um JWK (algoritmos RS, PS e ES).
  4. Toque no header ou no payload para copiar como JSON formatado.
  5. Mude para Criar para assinar um token HS256/384/512 novo com seu payload e segredo.
  • Nada sai do seu navegador: a decodificação e a verificação usam a Web Crypto API nativa, e tokens e chaves nunca são salvos nem enviados.
  • Qualquer pessoa pode decodificar um JWT: o payload só está em Base64URL, não criptografado. Não coloque segredos nele.
  • Um token com alg “none” não tem assinatura. Servidores devem rejeitá-lo.
  • Algoritmos suportados: HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 e ES512. Um JWKS ({"keys": […]}) também funciona; a chave é escolhida pelo kid.
  • Ative “Segredo Base64” se o seu segredo estiver em Base64, como alguns provedores fazem.

Como um JWT é formado

Um JWT (RFC 7519) são três strings Base64URL unidas por pontos: header.payload.assinatura. O header indica o algoritmo, por exemplo {"alg":"HS256","typ":"JWT"}. O payload traz claims como sub (sujeito), iss (emissor), aud (audiência), exp (expiração), iat (emitido em) e nbf (não antes de). As datas são segundos desde 1º de janeiro de 1970 UTC: exp 1767225600 corresponde a 1º de janeiro de 2026, 00:00 UTC.

A assinatura é calculada sobre as duas primeiras partes. No HS256 é um HMAC-SHA256 com um segredo compartilhado; no RS256 ou PS256, uma assinatura RSA; no ES256, uma assinatura ECDSA na curva P-256 (RFC 7518).

Decodificar não é verificar

Qualquer pessoa consegue ler um JWT: Base64URL é codificação, não criptografia, então não coloque senhas nem dados pessoais no payload. Confie no token só depois que a assinatura bater com a chave certa e exp e nbf estiverem válidos. Um token com alg none não tem assinatura e o servidor deve recusá-lo. No HS256, use um segredo de pelo menos 32 bytes aleatórios.

Chaves aceitas

Para HS256, HS384 e HS512 digite o segredo compartilhado, em texto ou Base64. Para RS, PS e ES cole a chave pública em PEM, um certificado X.509, um JWK ou um JWKS inteiro; com JWKS a chave é escolhida pelo kid do header. Tokens e chaves não são salvos nem enviados.

Perguntas frequentes

É seguro colar um JWT aqui?

Sim. O token é decodificado e verificado no seu navegador e não é enviado nem salvo. Mesmo assim, trate tokens de produção como senhas e prefira tokens expirados ou de teste.

Dá para decodificar um JWT sem o segredo?

Sim. O header e o payload estão apenas em Base64URL, então qualquer um pode lê-los. O segredo ou a chave pública só são necessários para conferir a assinatura.

O que significa o claim exp?

exp é o momento de expiração em segundos desde 1º de janeiro de 1970 UTC. Depois dele o token deve ser recusado. Aqui ele aparece no seu horário local, com avisos como expirou há 2 dias.

Qual a diferença entre HS256 e RS256?

O HS256 assina com um único segredo que emissor e verificador precisam conhecer. O RS256 assina com uma chave privada RSA e é verificado com a pública, então quem verifica nunca tem a chave de assinatura.

Por que a verificação da assinatura falha?

As causas mais comuns são segredo errado ou guardado em Base64, chave pública que não corresponde ao kid ou token alterado depois de assinado. Ative Segredo Base64 se o seu provedor guarda assim.

Posso criar um JWT aqui?

Sim. A aba Criar assina um token com HS256, HS384 ou HS512 a partir do seu payload e segredo. Assinatura RSA e EC não é oferecida porque exige chave privada.

Usado junto com

Como usar

Passos

  1. Cole um JWT. Header, payload e assinatura são coloridos e decodificados assim que você cola.
  2. Leia os claims: exp, iat e nbf aparecem no seu horário local, com “em 3 horas” ou “há 2 dias”.
  3. Para verificar a assinatura, digite o segredo (HS256/384/512) ou cole a chave pública em PEM, um certificado X.509 ou um JWK (algoritmos RS, PS e ES).
  4. Toque no header ou no payload para copiar como JSON formatado.
  5. Mude para Criar para assinar um token HS256/384/512 novo com seu payload e segredo.

Atalhos

Ctrl + EnterCopiar o payload (Decodificar) ou o token (Criar)

Bom saber

Funciona no seu navegador. Arquivos e textos nunca saem do seu dispositivo.