Decodificador JWT: ver o conteúdo de um token online

Cole um JWT e veja o header e o payload em JSON legível, as datas exp, iat e nbf no seu fuso horário e se o token já expirou. O token não sai do seu navegador.

Para verificar a assinatura, digite o segredo abaixo: a verificação é feita no navegador e nada é enviado. Mesmo assim, evite colar segredos de produção em sites.

Cabeçalho (header)
{
  "alg": "HS256",
  "typ": "JWT"
}
Dados (payload)
{
  "sub": "1234567890",
  "name": "John Doe",
  "role": "admin",
  "iat": 1767225600,
  "nbf": 1767225600,
  "exp": 1798761600
}
Assinatura (signature)
RDvudNA1pyyGaAIcSdO7DgEmU2_VncMo0ojXM6gg53U

Como usar

Cole o token no campo, sozinho ou com o prefixo Authorization: Bearer …; quebras de linha não atrapalham. O decodificador mostra na hora:

O token é decodificado no navegador e não é enviado a um servidor. Mantenha os tokens de acesso reais em segredo: um token bearer válido que vaze pode permitir acesso dentro de suas permissões até expirar ou ser revogado. A decodificação não confirma a validade do token.

Verificar a assinatura

Tokens HS256, HS384 e HS512 são assinados com um segredo compartilhado. Se você o tem, digite-o no campo abaixo do token e a assinatura é conferida no próprio navegador. Assinaturas RS e ES (chave pública) não são verificadas aqui: exigem a chave pública do servidor. O payload de um JWT comum não é criptografado, só codificado em Base64URL: qualquer um consegue ler, mas ninguém consegue falsificar sem a chave. Por isso:

Partes de um JWT

O token tem três partes separadas por pontos: cabeçalho.payload.assinatura. As duas primeiras são JSON codificado em Base64URL (Base64 em que + e / viram - e _ e os = do final são removidos). Este é o exemplo da RFC 7519:

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

O cabeçalho é {"typ":"JWT","alg":"HS256"} e o payload, {"iss":"joe","exp":1300819380,"http://example.com/is_root":true}. O valor de exp, 1300819380, corresponde a 22 de março de 2011, 18:43 UTC: o token expirou há muito tempo.

Claims padrão

Campo Significado
iss quem emitiu o token
sub para quem foi emitido; em geral, o ID do usuário
aud para qual serviço ele serve
exp quando expira (a partir daí o token é inválido)
nbf a partir de quando vale
iat quando foi emitido
jti ID único do token, para permitir revogá-lo

exp, nbf e iat são Unix timestamps em segundos. Para converter qualquer um desses números em data, use o conversor de Unix timestamp.

Erros comuns

Perguntas frequentes

Por que aparece “expirado” se o servidor ainda aceita o token? Servidores costumam tolerar alguns minutos de diferença de relógio (leeway). Confira também o relógio do seu dispositivo: o status é calculado por ele.

Posso alterar o payload e devolver o token? Alterar dá, mas a assinatura deixa de bater e qualquer servidor que a verifique vai recusar o token.

Como decodifico uma string Base64 qualquer? Use o decodificador Base64; JSON grande fica mais fácil de ler no formatador de JSON.