Decodificador JWT

Decodifica e inspeciona JSON Web Tokens

Experimente um exemplo

Token JWT

Roda localmente · Seguro para colar segredos
Veja também:Codificador JWT

O que é um JWT (JSON Web Token)?

Um JSON Web Token (JWT) é um formato de token compacto e seguro para URLs, definido na RFC 7519. Ele codifica um conjunto de claims como um objeto JSON, depois o assina — e opcionalmente o criptografa — para que o destinatário possa verificar que os dados não foram adulterados. JWTs são o padrão de fato para autenticação sem estado em REST APIs, sistemas de single sign-on e autorização de microsserviços.

Anatomia do JWT: Cabeçalho · Payload · Assinatura

Todo JWT é composto por três segmentos codificados em base64url separados por pontos. O cabeçalho e o payload são JSON simples — legíveis por qualquer pessoa — enquanto a assinatura é um valor criptográfico que só pode ser verificado com a chave correta.

Token codificado

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

CabeçalhoPayloadAssinatura
Cabeçalho
json
{
  "alg": "HS256",
  "typ": "JWT"
}
Payload
json
{
  "sub":  "user123",
  "name": "Alice",
  "role": "admin",
  "iat":  1717200000,
  "exp":  1717203600
}

Por que usar um decodificador de JWT?

JWTs brutos parecem texto aleatório. Esta ferramenta renderiza instantaneamente o cabeçalho e o payload como JSON formatado para que você possa inspecionar claims, verificar tempos de expiração e auditar escolhas de algoritmos sem escrever uma única linha de código.

🔍
Inspeção instantânea de claims
Veja cada claim no payload — sub, iss, aud, exp, roles personalizados, permissões — formatado e legível com um único clique.
🔓
Sem necessidade de chave secreta
O cabeçalho e o payload são públicos; apenas a assinatura requer o segredo. Esta ferramenta decodifica ambos sem a sua chave de assinatura.
⏱️
Análise de expiração e timestamps
Timestamps Unix (exp, iat, nbf) são convertidos automaticamente para datas legíveis para que você possa verificar instantaneamente se um token expirou.
🔒
Funciona inteiramente no seu navegador
Tudo é processado localmente — nenhum dado do token é enviado a qualquer servidor. Seguro para usar com tokens de produção durante a depuração.

Referência de claims padrão do JWT

A RFC 7519 define sete nomes de claims registrados. Eles não são obrigatórios, mas seu uso é fortemente recomendado para interoperabilidade. Você pode adicionar qualquer claim personalizado ao payload.

ClaimDescriçãoTipo
issEmissorIdentifica quem emitiu o token — ex.: a URL do seu servidor de autenticação ou o nome da aplicação.string
subSujeitoIdentifica o principal sobre o qual o JWT trata — tipicamente um ID de usuário ou conta de serviço.string
audAudiênciaIdentifica os destinatários pretendidos. A parte receptora deve verificar se isso corresponde ao seu identificador.string | string[]
expTempo de expiraçãoTimestamp Unix após o qual o token não deve ser aceito. Sempre defina isso para limitar o dano causado por um token roubado.number
nbfNão antes deTimestamp Unix antes do qual o token não deve ser aceito. Útil para programar tokens com data futura.number
iatEmitido emTimestamp Unix em que o token foi emitido. Usado para calcular a idade do token.number
jtiJWT IDUm identificador único para o token. Permite revogação armazenando e verificando valores JTI usados no lado do servidor.string

Algoritmos de assinatura JWT

O claim de cabeçalho alg declara qual algoritmo assinou o token. A escolha afeta a segurança, o desempenho e se serviços de terceiros podem verificar tokens sem a chave privada.

AlgoritmoFamíliaTipo de chaveObservações
HS256HMACSymmetricMais comum. Segredo compartilhado — qualquer pessoa com o segredo pode assinar e verificar.
HS384HMACSymmetricVariante HMAC mais robusta; custo de desempenho moderado.
HS512HMACSymmetricVariante HMAC mais forte.
RS256RSAAsymmetricAlgoritmo assimétrico mais usado (Google, Auth0, Okta). A chave pública verifica sem precisar da privada.
RS384RSAAsymmetricVariante RS de maior segurança.
RS512RSAAsymmetricVariante RS mais forte.
ES256ECDSAAsymmetricCurva elíptica — assinaturas menores que RSA, popular em mobile e IoT.
PS256RSA-PSSAsymmetricRSA-PSS: mais moderno e seguro do que RS256 baseado em PKCS1v1.5.
noneSem assinatura — criticamente perigoso. Nunca aceite tokens com alg: none em produção.

Considerações de segurança

Decodificar um JWT é sempre seguro. Confiar em um JWT sem verificação adequada da assinatura não é. Tenha estas regras em mente sempre que consumir tokens na sua aplicação.

Sempre seguro
  • Decodificar e inspecionar um JWT nas ferramentas de desenvolvedor ou nesta ferramenta
  • Usar exp, iat e nbf para entender o tempo de vida do token
  • Registrar claims do payload para depuração (omitir PII sensível)
  • Ler o cabeçalho alg para entender como o token foi assinado
Nunca faça isso
  • Confiar em claims do payload sem verificar a assinatura no lado do servidor
  • Aceitar tokens com alg: none — isso significa que não há assinatura alguma
  • Armazenar tokens de acesso em localStorage em aplicações de alta segurança (prefira cookies httpOnly)
  • Definir exp muito no futuro para tokens que carregam permissões sensíveis

Casos de uso comuns

Depuração de fluxos de autenticação
Cole um token da aba de rede do seu navegador para inspecionar claims, verificar roles e confirmar a expiração sem tocar no código de produção.
Inspeção de tokens de terceiros
Leia rapidamente tokens do Google, Auth0, Okta ou Azure AD para ver quais claims seu provedor inclui e compará-los com seu esquema esperado.
Desenvolvimento e testes de API
Ao escrever ou testar endpoints de API, decodifique o cabeçalho de autorização para confirmar que sua lógica de geração de tokens define os valores corretos de sub, aud e scope.
Autorização de microsserviços
Em malhas de serviços, cada serviço valida o JWT do chamador upstream. Decodifique tokens para rastrear qual serviço emitiu o token e quais permissões ele afirma.
Suporte e resposta a incidentes
Quando um usuário reporta um erro de autenticação, decodifique o token dele para verificar se expirou, se a audiência está errada ou se um claim obrigatório está faltando.
Auditoria de segurança
Audite o uso de JWT nos serviços verificando escolhas de algoritmos, janelas de expiração e se dados sensíveis são acidentalmente armazenados no payload não criptografado.

Decodificando JWT em código

O cabeçalho e o payload são codificados em base64url — basta reverter a codificação. Base64url substitui + por - e / por _, e omite o preenchimento =. Apenas a assinatura requer a chave secreta.

JavaScript (browser)
function decodeJWT(token) {
  const [, payload] = token.split('.')
  const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
  return JSON.parse(json)
}
Node.js
const [, payload] = token.split('.')
const decoded = JSON.parse(
  Buffer.from(payload, 'base64url').toString()
)
Python
import base64, json

def decode_jwt(token):
    payload = token.split('.')[1]
    padding = '=' * (-len(payload) % 4)
    return json.loads(base64.urlsafe_b64decode(payload + padding))
CLI (bash + jq)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .

Perguntas frequentes

Posso decodificar um JWT sem a chave secreta?
Sim. O cabeçalho e o payload de um JWT são simplesmente JSON codificado em base64url — não criptografado. Qualquer pessoa pode decodificá-los e lê-los. O segredo (ou chave privada para algoritmos RS/ES) só é necessário para verificar a assinatura, confirmando que o token não foi adulterado.
Decodificar um JWT significa que a assinatura foi verificada?
Não. Decodificar apenas lê os claims. A verificação é uma etapa separada que confere a assinatura criptográfica usando a chave correta. Sempre verifique a assinatura antes de confiar em qualquer claim na sua aplicação.
Qual é a diferença entre HS256 e RS256?
HS256 usa um único segredo simétrico compartilhado entre o emissor e o verificador — qualquer pessoa com o segredo pode criar e verificar tokens. RS256 usa um par de chaves assimétricas: a chave privada assina, a chave pública verifica. Com RS256 você pode distribuir a chave pública para que serviços externos possam verificar tokens sem a capacidade de forjá-los.
Por que a decodificação base64 às vezes falha?
JWTs usam codificação base64url, que usa - em vez de + e _ em vez de /, e omite os caracteres de preenchimento =. Decodificadores base64 padrão requerem + e / e podem precisar de preenchimento. Adicione o preenchimento (múltiplo de 4 com =) e troque os caracteres antes de decodificar manualmente.
É seguro colar um JWT de produção nesta ferramenta?
Sim — esta ferramenta funciona inteiramente no seu navegador e não envia dados a nenhum servidor. No entanto, tenha cuidado com quem pode ver sua tela ou o histórico do navegador. Para tokens muito sensíveis, decodifique-os localmente no seu terminal.
O que significa alg: none e é perigoso?
alg: none significa que o token não tem assinatura criptográfica — qualquer pessoa pode criar um token com claims arbitrários e definir alg como none. Algumas bibliotecas JWT antigas aceitavam esses tokens, criando uma vulnerabilidade crítica. Uma biblioteca JWT segura sempre rejeita tokens com alg: none a menos que configurado explicitamente de outra forma. Nunca desative essa verificação.