Decodificador de JWT
Decodifique JSON Web Tokens localmente e verifique a assinatura com seu segredo ou chave pública, sem enviar nada.
Assine um token seu para testar um endpoint. Tudo é calculado nesta página.
A chave e o token pronto ficam no seu navegador: nada é enviado a lugar nenhum e nada disso vai em um link compartilhado.
Verifique este token no seu próprio código. O trecho segue o algoritmo do cabeçalho.
Decodificador JWT - decodificar um JSON Web Token online
Cole um JSON Web Token e este decodificador o separa em três partes, exibindo o cabeçalho e o payload como JSON legível. É o caminho mais rápido para responder às perguntas que aparecem ao depurar autenticação: quem emitiu o token, para quem ele é, qual algoritmo o assinou e se ele já expirou.
A decodificação acontece inteiramente no seu navegador. Aqui isso importa mais do que na maioria das ferramentas, porque um JWT é uma credencial viva: quem capturar um token válido normalmente consegue agir como o seu sujeito até a expiração. Nada do que você colar nesta página é enviado, registrado ou armazenado.
O que é um JSON Web Token
Um JWT são três segmentos Base64URL unidos por pontos: header.payload.signature. O cabeçalho informa o algoritmo de assinatura, o payload carrega os claims - as afirmações que o emissor faz sobre o usuário ou o cliente - e a assinatura prova que as duas primeiras partes foram produzidas por quem tem a chave. Como cabeçalho e payload estão apenas codificados, e não criptografados, qualquer pessoa pode lê-los. Só a assinatura é protegida.
Como decodificar um JWT aqui
- Copie o token do cabeçalho
Authorization: Bearer, de um cookie, de uma URL de callback ou do seu cliente de API. - Cole a string completa
header.payload.signatureno campo de entrada. - Clique em Decodificar para ver os dois objetos JSON.
- Se a requisição foi recusada, olhe primeiro
expe depoisaudeiss.
O que mais esta página faz
O token é lido enquanto você digita, então os painéis se preenchem antes de você procurar o botão. Abaixo do cabeçalho e do payload decodificados, cada campo aparece numa tabela com a função dele em palavras simples, e uma linha acima transforma exp e nbf em frases: expirou há três dias, expira em cinquenta e oito minutos, ainda não é válido.
- Exemplo carrega um token de demonstração com o segredo dele, para você ver uma verificação dar certo antes de colar algo seu.
- Verificar aceita o segredo, uma chave pública PEM, um JWK avulso ou um JWKS inteiro. Cole o documento do endereço
/.well-known/jwks.jsondo emissor e a chave indicada pelokiddo token é escolhida sozinha, então a página continua sem fazer nenhuma requisição própria. Preencha também Emissor esperado e Audiência esperada e uma assinatura válida é conferida como um servidor faria: umissdiferente, ou umaudque não contém o seu valor, deixa o resultado em vermelho. - Criar um token assina um token seu com qualquer um dos doze algoritmos — a página do gerador de JWT abre direto nessa aba.
- Código mostra a verificação do lado do servidor em oito linguagens, seguindo o algoritmo do cabeçalho do seu token.
- Outras duas páginas abrem esta ferramenta apontada para uma única pergunta: se expirou e por que está sendo recusado.
Os claims padrão e o que significam
| Claim | Significado | Por que falha |
|---|---|---|
iss | Emissor: quem criou o token | Não bate quando um token de homologação vai para produção |
sub | Sujeito: normalmente o ID do usuário ou do serviço | Vazio em tokens emitidos para um cliente e não para uma pessoa |
aud | Audiência: a API que deveria aceitá-lo | A causa mais comum de um 401 com token aparentemente válido |
exp | Expiração como timestamp Unix | Já passou, ou o relógio do servidor está fora de sincronia |
nbf | Não válido antes deste instante | Token usado alguns segundos cedo demais |
iat | Momento da emissão | Base para políticas de idade máxima e janelas de revogação |
jti | ID único do token | Necessário para bloquear um token específico |
Decodificar não é verificar
Esse é o ponto que mais confunde. Ler um token mostra o que ele afirma, não se a afirmação é verdadeira. Verificar significa recalcular a assinatura com o segredo ou a chave pública do emissor e comparar, além de checar expiração e audiência. Qualquer decodificador exibe o payload de um token forjado com a mesma facilidade do payload de um token legítimo, então nunca tome uma decisão de autorização apenas com o conteúdo decodificado: verifique no servidor com uma biblioteca mantida.
Diagnóstico de um token que não funciona
- 401 com token válido: compare
audcom o que a API espera eisscom a URL de emissor configurada. Coloque os dois em Emissor esperado e Audiência esperada e clique em Verificar: o resultado mostra o valor que o token realmente traz. - Expirado na hora: converta
expcom o conversor de timestamp Unix e compare com o relógio do servidor, não com o do seu notebook. - Erro de segmento inválido: o token foi truncado, foi codificado como URL no caminho ou uma quebra de linha entrou na cópia.
- Falha na verificação da assinatura: a chave foi rotacionada, o key ID errado foi usado ou o token veio de outro ambiente.
algigual anone: rejeite. Esse valor indica um token sem assinatura e é um ataque clássico contra validações descuidadas.
Hábitos de segurança que valem a pena
- Nunca guarde dados pessoais, IDs internos ou informação confidencial no payload: ele é legível por definição.
- Mantenha tokens de acesso de vida curta e use um refresh token para sessões longas.
- Transmita tokens apenas por HTTPS e prefira cookies secure e HttpOnly ao armazenamento do navegador.
- Faça rotação programada das chaves de assinatura e publique-as em um endpoint JWKS para que os clientes acompanhem.
- Considere exposto qualquer token que você tenha colado em uma ferramenta online, e é exatamente por isso que esta não envia nada a lugar nenhum.
Funciona offline no seu navegador
O decodificador é JavaScript do lado do cliente. Depois que a página carrega, você consegue decodificar tokens sem nenhuma conexão de rede, e credenciais de produção nunca saem da sua máquina.
Decodificar um JWT em código ou no terminal
| Onde | Como |
|---|---|
| JavaScript (npm) | import { jwtDecode } from 'jwt-decode'; jwtDecode(token) - só o payload, sem verificação |
| Python (PyJWT) | jwt.decode(token, options={'verify_signature': False}) para ler, ou passe a chave para verificar |
| Bash | echo $TOKEN | cut -d. -f2 | tr '_-' '/+' | base64 -d 2>/dev/null - Base64URL omite o preenchimento, então um payload curto pode precisar de == no final |
| Console do navegador | JSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))) |
Todas essas opções leem o token sem conferir a assinatura, o que é bom para depurar e errado para autorizar; veja a seção acima.
Ferramentas relacionadas
Tokens ficam no cruzamento de vários formatos. Leia os segmentos brutos com o decodificador Base64, organize o payload com o formatador JSON, transforme exp e iat em datas com o conversor de timestamp e limpe um token extraído de uma URL com o decodificador de URL.