Se você trabalha com APIs, autenticação ou integrações, mais cedo ou mais tarde vai precisar olhar dentro de um JWT. O cenário é sempre parecido: a requisição volta 401 Unauthorized, o login “funciona mas não funciona”, ou a API reclama que o token expirou — e você está ali, com uma string gigante de letras e números aparentemente aleatórios, sem ideia do que tem dentro.
O problema é que um JWT parece criptografado, mas não é. As partes de header e payload são apenas Base64Url — qualquer pessoa pode ler o conteúdo. O que falta é uma forma rápida de decodificar essa string e ver, em texto legível, quem emitiu o token, para quem ele vale, quais permissões carrega e — o clássico — se ele já expirou.
O JWT Decoder da DevPlus resolve exatamente isso. É uma ferramenta online, gratuita e sem cadastro, que decodifica o token e mostra header, payload, tabela de claims e status de expiração em tempo real — 100% no navegador, sem enviar o token para nenhum servidor.
O que é um JWT (JSON Web Token)
JWT é um padrão aberto definido pela RFC 7519 para transmitir informações de forma compacta e verificável entre duas partes, codificadas como um objeto JSON. É a forma mais comum de carregar identidade e permissões em APIs REST — normalmente enviado no header Authorization: Bearer <token>.
Um JWT é formado por três partes separadas por ponto (.):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNsYXl0b24ifQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
└──────────── header ────────────┘ └──────────── payload ───────────┘ └────────── signature ──────────┘
- Header — diz o algoritmo de assinatura (
alg, ex.:HS256,RS256) e o tipo do token (typ: JWT). - Payload — carrega os claims, ou seja, os dados: quem é o usuário, quando o token expira, qual o emissor, etc.
- Signature — é a assinatura que garante que o token não foi adulterado. Ela é calculada com uma chave secreta (HMAC) ou par de chaves (RSA/ECDSA).
O ponto importante: header e payload não são secretos. Eles são apenas codificados em Base64Url, não criptografados. Por isso é trivial — e seguro — decodificá-los para inspeção. A assinatura é a única parte que protege a integridade, e ela exige a chave para ser validada (o que é diferente de ler o conteúdo).
Decodificar não é o mesmo que validar
Vale separar dois conceitos que costumam ser confundidos:
- Decodificar um JWT é converter as partes Base64Url de volta para JSON legível. Não precisa de chave nenhuma. É o que você faz para ver o que tem dentro — o trabalho de depuração.
- Validar um JWT é recalcular a assinatura com a chave secreta/pública e conferir se ela bate, além de checar expiração, emissor e audiência. É o que o seu backend faz para confiar no token.
O JWT Decoder foca no primeiro caso: dar visibilidade imediata sobre o conteúdo do token para debug. A validação criptográfica continua sendo responsabilidade do seu servidor — e deve continuar sendo, porque é lá que a chave secreta vive (e onde ela deve permanecer).
Como usar o JWT Decoder
O fluxo é direto:
- Acesse o JWT Decoder.
- Cole o token na área de texto. A decodificação acontece em tempo real, a cada caractere — sem botão de “executar”.
- Veja o header e o payload decodificados em JSON formatado.
- Confira a tabela de claims, com nome, descrição e valor de cada campo.
- Verifique o badge de expiração, que mostra se o token ainda é válido ou já expirou.
Se a string não for um JWT bem formado, a barra de status sinaliza o erro na hora — útil para pegar aquele caso em que faltou um pedaço do token no copia-e-cola, ou em que veio o Bearer junto por engano.
O que a ferramenta mostra
Decodificação instantânea de header e payload
Cole o token e veja imediatamente as duas partes legíveis em JSON com formatação. Não há refresh nem etapa intermediária — o resultado aparece conforme você digita ou cola.
Tabela de claims detalhada
Esta é a parte que poupa mais tempo. Em vez de você decorar o que cada sigla significa, a ferramenta monta uma tabela com nome do claim, descrição e valor. Os claims registrados mais comuns da RFC 7519:
| Claim | Significado | Descrição |
|---|---|---|
iss | Issuer | Quem emitiu o token |
sub | Subject | A quem o token se refere (geralmente o ID do usuário) |
aud | Audience | Para qual destinatário o token é válido |
exp | Expiration | Data/hora em que o token expira |
nbf | Not Before | Data/hora a partir da qual o token passa a valer |
iat | Issued At | Quando o token foi emitido |
jti | JWT ID | Identificador único do token |
Além desses, qualquer claim customizado (como role, email, tenant_id ou scope) aparece na tabela com o seu valor.
Datas Unix convertidas
Os campos exp, iat e nbf vêm como timestamps Unix — aqueles números longos como 1718668800 que não dizem nada a olho nu. A ferramenta converte automaticamente para data e hora legíveis, então você sabe na hora se o token foi emitido hoje de manhã ou na semana passada.
Verificação de expiração
Um badge mostra claramente o status: ✅ válido até [data] ou ⛔ expirado em [data]. É a resposta mais rápida para o clássico “será que meu token ainda está bom?” — sem precisar pegar o exp, jogar num conversor de timestamp e comparar com o relógio.
100% no navegador
Nenhum dado é enviado para servidores. Toda a decodificação acontece localmente, no seu navegador. Isso importa muito: um JWT é uma credencial. Colá-lo em um site que envia o token para um backend é, na prática, entregar acesso à sua sessão. Como o processamento aqui é local, o token nunca sai da sua máquina.
Gratuito, sem cadastro e responsivo
Sem criar conta, sem limite de uso e funcionando em desktop, tablet e celular.
Um aviso importante sobre segurança
Tokens são credenciais. Trate-os como senhas:
- Nunca cole em produção um token de outra pessoa em ferramentas que não sejam locais. Mesmo com decodificação no navegador, evite expor tokens reais de usuários em telas compartilhadas, prints ou tickets de suporte.
- A assinatura é o que protege o token, não o conteúdo. Não coloque dados sensíveis (senhas, números de cartão) no payload — qualquer um que tenha o token pode lê-los.
- Decodificar revela tudo do payload. Se você consegue ler as permissões de um token só colando-o num decoder, um atacante também consegue. Por isso a autorização real precisa ser sempre validada no servidor, com a chave secreta.
O JWT Decoder roda inteiramente no seu navegador justamente para que você possa inspecionar tokens com tranquilidade durante o desenvolvimento, sem que eles trafeguem para lugar nenhum.
Casos de uso no dia a dia
Depurar erros 401/403 — cole o token que a API rejeitou e confira na hora se ele expirou, se o aud está errado ou se falta um scope/role esperado.
Conferir permissões e roles — veja exatamente quais claims de autorização o token carrega, útil quando o usuário “não consegue acessar” uma rota que deveria.
Validar integrações de SSO/OAuth — ao integrar com provedores como Auth0, Keycloak, Azure AD ou Cognito, inspecione o token emitido para garantir que iss, aud e os claims customizados vieram como esperado.
Entender a janela de validade — descubra rapidamente quando o token foi emitido (iat) e quando expira (exp) para diagnosticar problemas de refresh token e sessões que caem antes do tempo.
Aprender e ensinar JWT — para quem está estudando autenticação, ver um token de verdade dissecado em header, payload e claims é a forma mais rápida de entender o padrão.
Conclusão
JWT é a espinha dorsal da autenticação em APIs modernas, e inspecionar um token é uma daquelas tarefas que você faz dezenas de vezes por semana sem perceber. Ter uma ferramenta que decodifica header, payload e claims na hora — e ainda converte as datas e mostra a expiração — transforma um debug chato em algo de cinco segundos.
E como tudo roda no navegador, sem cadastro e sem enviar o token para servidor, dá para usar com segurança até no meio de um incidente em produção.
Veja também outras ferramentas gratuitas para desenvolvedores da DevPlus: Validador de JSON, Gerador de UUID, Encoder/Decoder Base64, Visualizador de HTML e Planning Poker Online. E se o seu próximo desafio for depurar webhooks, conheça o HookScope.