Ir para o conteúdo principal

JWT Decoder

Leia o cabeçalho e o payload de um JWT no navegador.

Entrada JWT

Lin 1, Col 1
JWT

Resultado

Seu resultado aparecerá aqui

Adicione JWT acima e escolha Decodificar.

Adicione JWT à esquerda e escolha Decodificar.

Aguardando entrada

2 espaços

Decodifique um JWT no navegador para ler o cabeçalho e o payload, ver as datas de exp, iat e nbf e saber se expirou. A assinatura não é verificada.

O que é o JWT Decoder?

O JWT Decoder é uma ferramenta online gratuita que decodifica um JSON Web Token no seu navegador e mostra o cabeçalho e o payload como JSON formatado, com os horários de exp, iat e nbf como datas e um aviso quando o token expirou ou ainda não é válido. Ele não verifica a assinatura.

O token é decodificado no seu dispositivo e não é enviado a lugar nenhum. Mesmo assim, prefira um token de um ambiente de teste: os Termos de Uso pedem que você não cole segredos, como tokens de acesso.

O que ela aceita

  • Um JWT assinado na forma compacta: três partes Base64URL separadas por pontos, como a RFC 7519 descreve. Espaços e quebras de linha em volta do token são ignorados, e também uma palavra Bearer na frente dele, em qualquer combinação de maiúsculas e minúsculas, como em um cabeçalho Authorization.
  • O cabeçalho e o payload são decodificados de Base64URL e UTF-8 e escritos como um único objeto JSON, {"header": …, "payload": …}, com a indentação que você escolher. Todo valor, inclusive números grandes, é copiado como está escrito no token.
  • A assinatura só tem o alfabeto verificado (letras, dígitos, - e _), não é mostrada e pode estar vazia.
  • As claims exp, iat e nbf são mostradas como datas ISO 8601 em UTC, como 2023-11-14T23:13:20Z, quando são números de segundos desde 1º de janeiro de 1970.
  • Avisos: o token expirou quando exp é agora ou anterior, e ainda não é válido quando nbf está no futuro. Ambos comparam com o relógio do seu dispositivo. Uma claim que não é um horário válido também gera um aviso, e o mesmo vale para uma que parece estar em milissegundos, um número acima de 100.000.000.000: ela não é convertida em data, porque uma data no ano 5138 ou depois é quase certamente um engano.
  • As outras claims, como sub, iss, aud ou roles, são mostradas como estão. A ferramenta não as interpreta.

Bom saber

  • A assinatura não é verificada. Decodificar mostra o que o token diz, não que ele é autêntico: qualquer pessoa pode escrever um token com as claims que quiser. Só o programa que tem a chave pode verificá-lo.
  • Um token não é criptografado. O cabeçalho e o payload são apenas codificados, então qualquer pessoa que tenha o token consegue lê-los. Não coloque segredos em um payload.
  • Prefira um token de um ambiente de teste. O token fica no seu navegador, mas um token de acesso real é um segredo, e os Termos de Uso pedem que você não cole segredos.
  • Só a forma compacta, de três partes, é lida. Um token criptografado (JWE, com cinco partes) é recusado, e o mesmo vale para um payload que não é um objeto JSON.
  • As datas e os avisos dependem do relógio do seu dispositivo. Se esse relógio estiver errado, eles também estarão.
  • Um token cortado, ou uma parte que não é Base64URL nem JSON válido, é recusado com uma mensagem que diz qual é a parte (cabeçalho, payload ou assinatura) e informa a posição dela. Nada é corrigido.

Como usar o JWT Decoder?

  1. Cole o seu JWT na caixa de entrada. Ele tem três partes separadas por pontos, como em cabeçalho.payload.assinatura. Um Bearer na frente, como em um cabeçalho Authorization copiado, é ignorado. Nada é executado enquanto você digita.
  2. Escolha a indentação (“2 espaços” ou “4 espaços”) e aperte “Decodificar”.
  3. Leia o cabeçalho e o payload ao lado da entrada. As claims exp, iat e nbf também são listadas como datas em UTC, e um aviso aparece se o token tiver expirado ou ainda não for válido. Se o token não puder ser decodificado, a mensagem diz qual parte está errada e informa a posição dela.
  4. Aperte “Copiar” para colocar o JSON na área de transferência, ou “Baixar” para salvá-lo como converted.json.

Exemplos

Um token que expirou

Cole este token e aperte “Decodificar”. O resultado é o cabeçalho e o payload como JSON, e a assinatura não é mostrada. As claims exp e iat, que são números de segundos desde 1º de janeiro de 1970, também são listadas como datas em UTC. Como exp está no passado, um aviso diz que o token expirou. O token é apenas decodificado, então o aviso não diz se ele é autêntico.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoxNzAwMDAzNjAwfQ.c2lnbmF0dXJl
{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "Ada",
    "iat": 1700000000,
    "exp": 1700003600
  }
}

Expira em 2023-11-14T23:13:20Z

Emitido em 2023-11-14T22:13:20Z

Este token expirou: a claim exp está no passado. O token é apenas decodificado aqui e a assinatura não é verificada, então isso não diz se ele é autêntico.

Um token com uma parte faltando

Um JWT tem exatamente três partes. Este texto tem duas, então a ferramenta recusa. Um token com assinatura vazia, como um token sem assinatura, ainda precisa dos dois pontos. Um token criptografado (JWE, com cinco partes) não pode ser decodificado.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoxNzAwMDAzNjAwfQ

Um JWT tem exatamente três partes separadas por pontos: cabeçalho.payload.assinatura. Este texto não tem. Tokens criptografados (JWE, que têm cinco partes) não podem ser decodificados aqui.

Linha 1, coluna 1

Um cabeçalho Authorization colado

A palavra Bearer e o espaço não fazem parte do token, então a ferramenta os ignora e decodifica o token normalmente. Aperte “Decodificar” com a linha inteira do cabeçalho.

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI3IiwiaWF0IjoxNjAwMDAwMDAwfQ.c2lnbmF0dXJl
{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "7",
    "iat": 1600000000
  }
}

Emitido em 2020-09-13T12:26:40Z

Um token que ainda não é válido

A claim nbf (not before) está bem no futuro, então um aviso diz que o token ainda não é válido, e nbf e exp são listadas como datas. A ferramenta as compara com o relógio do seu dispositivo no momento em que você aperta “Decodificar”.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MiIsIm5iZiI6OTk5OTk5OTk5OSwiZXhwIjoxMDAwMDAwMzU5OX0.c2lnbmF0dXJl
{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "42",
    "nbf": 9999999999,
    "exp": 10000003599
  }
}

Expira em 2286-11-20T18:46:39Z

Válido a partir de 2286-11-20T17:46:39Z

Este token ainda não é válido: a claim nbf está no futuro.

Limites e privacidade

Limites de tamanho

  • Entrada: até 2.000.000 bytes de texto em UTF-8 (cerca de 2 MB). Letras acentuadas e emojis ocupam mais de um byte cada. Uma entrada maior é recusada.
  • Resultado: também até 2.000.000 bytes. Se o resultado completo fosse maior, a ferramenta mostra apenas uma prévia incompleta dos primeiros 100.000 bytes, e essa prévia não pode ser copiada nem baixada.
  • Aninhamento: até 256 níveis de objetos e listas (no cabeçalho ou no payload) dentro uns dos outros. Um JWT mais profundo é recusado porque passa do que a ferramenta processa.
  • Tempo: uma execução que demora mais que o seu limite de tempo é interrompida. Tente uma entrada menor.

Meu texto é enviado para um servidor?

Não. O texto que você digita ou cola, ou abre de um arquivo local, é processado localmente no seu navegador, em um Web Worker dedicado. Ele nunca é enviado para o servidor (um arquivo que você abre é lido apenas no seu navegador) e não é gravado em armazenamento, cookies nem na barra de endereços.

“Copiar” coloca o resultado na área de transferência e “Baixar” o salva como arquivo, mas só quando você aperta o botão. O arquivo é criado no seu navegador, então nada é enviado.

Para ver os detalhes completos, consulte a Política de Privacidade

Ferramentas e páginas relacionadas

O seu texto continua na página quando você troca de ferramenta na mesma aba, então dá para testar o mesmo texto em outra. Recarregar ou fechar a aba o encerra.

Todas as ferramentas