Decodificador JWT
Decodifique tokens JWT online com nosso decodificador JWT grátis. Inspecione cabeçalho, carga útil, assinatura, expiração e reivindicações. 100% navegador — seu token nunca sai do dispositivo. Sem cadastro, sem rastreio.
O que é um JWT?
Um JSON Web Token, ou JWT (pronunciado 'jóti'), é um formato de token compacto e seguro para URL para transportar reivindicações entre duas partes. É definido na RFC 7519 e é o formato de credencial dominante usado por tokens de acesso OAuth 2.0, tokens de ID OpenID Connect, chaves de API em provedores modernos de autenticação (Auth0, Okta, Clerk, Supabase, Firebase) e tokens entre serviços em arquiteturas de microsserviços.
"JSON Web Token (JWT) é um formato compacto de representação de reivindicações destinado a ambientes com restrição de espaço, como cabeçalhos de autorização HTTP e parâmetros de consulta de URI." — RFC 7519, Seção 1
Um JWT são três objetos JSON codificados em Base64URL unidos por pontos: cabeçalho.carga.assinatura. O cabeçalho descreve como o token é assinado (a reivindicação alg — por exemplo, HS256 ou RS256 — e a reivindicação typ, geralmente 'JWT'). A carga útil transporta as reivindicações: reivindicações registradas como iss, sub, aud, exp, iat, além das reivindicações personalizadas que o emissor precisar (role, scope, email, tenant ID). A assinatura é uma prova criptográfica, calculada sobre o cabeçalho e a carga útil com o segredo ou chave privada do emissor, que permite ao destinatário detectar adulteração.
Fundamentalmente, um JWT é codificado, não criptografado. Qualquer pessoa com o token pode ler sua carga útil — decodificar é apenas Base64URL e parsing de JSON. A garantia de segurança vem da assinatura: um atacante pode ler um JWT, mas não pode produzir um JWT diferente que passe na verificação de assinatura sem a chave de assinatura. É por isso que JWTs são seguros para trafegar pela rede, mas inseguros para serem preenchidos com segredos.
Um decodificador JWT mostra exatamente o que um token contém — algoritmo, reivindicações, expiração — sem tocar na assinatura. É a forma mais rápida de responder 'este token está expirado?', 'qual papel este usuário possui?', 'qual emissor cunhou este token?' ou 'este é um token alg:none que eu deveria rejeitar?'. Toda a decodificação nesta ferramenta roda localmente no seu navegador, então colar um token de produção ativo é seguro.
Trabalhar com JWT frequentemente se combina com outras ferramentas de desenvolvedor. Você pode precisar decodificar um segmento envolvido em Base64URL ao depurar um token malformado, decodificar em URL um cabeçalho Authorization após capturá-lo de um proxy, ou converter manualmente a reivindicação exp em uma data legível. Para um passo a passo mais profundo sobre como JWTs são assinados, verificados e rotacionados em produção, veja nosso guia de fundamentos de Base64 — Base64URL é a base sobre a qual cada JWT é construído.
// Decode a JWT in the browser — header & payload only
function decodeJwt(token) {
const [h, p, s] = token.split('.');
const pad = (seg) => seg + '==='.slice((seg.length + 3) % 4);
const decode = (seg) => JSON.parse(
atob(pad(seg).replace(/-/g, '+').replace(/_/g, '/'))
);
return { header: decode(h), payload: decode(p), signature: s };
}
const { header, payload } = decodeJwt(token);
console.log(header); // → { alg: 'HS256', typ: 'JWT' }
console.log(payload); // → { sub: 'user_123', exp: 1999999999, ... }
// Expiration check
const expired = payload.exp * 1000 < Date.now(); Recursos principais
Decodifique JWT instantaneamente
Cole e veja o JWT decodificado em tempo real — cabeçalho, carga útil e assinatura analisados na hora. Sem botão Decodificar, sem ida e volta a um servidor.
Detecção de expiração
Lê automaticamente a reivindicação exp e exibe um selo vermelho quando o token está expirado, com a data exata de expiração no seu fuso horário local.
Agnóstico ao algoritmo
Decodifica todos os algoritmos JWS — HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512, EdDSA e alg:none.
100% local
A decodificação é executada no seu navegador via atob e JSON.parse nativos. Seu token nunca é enviado — seguro para credenciais de produção.
Exibição consciente das reivindicações
Destaca as reivindicações registradas da RFC 7519 (iat, exp, nbf, iss, aud, sub, jti) para que você identifique problemas de autenticação num relance.
Cópia com um clique
Copie o JSON do cabeçalho, o JSON da carga útil ou a assinatura bruta para sua área de transferência com um único clique — perfeito para relatórios de bug e testes.
Exemplos
Token HS256 (válido)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.4NhxPjwoZxPNuxG-2C5ugGxaUsUJ0QyskAz7Ymz5Sg0
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
} Token assinado com HMAC-SHA256 contendo um sujeito, papel e expiração futura — a configuração JWT mais comum para autenticação de sessão.
Token RS256 (expirado)
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtleS0yMDI1LTAxIn0.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsImlhdCI6MTYwMDAwMDAwMCwiZXhwIjoxNjAwMDAzNjAwLCJzY29wZSI6InJlYWQ6dXNlciB3cml0ZTpwb3N0In0.signature_placeholder
{
"alg": "RS256",
"typ": "JWT",
"kid": "key-2025-01"
}
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"iat": 1600000000,
"exp": 1600003600,
"scope": "read:user write:post"
} Token de acesso estilo OAuth assinado com RSA — observe o kid (ID da chave) no cabeçalho e a reivindicação exp indicando que o token já expirou.
Token de ID OIDC
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJzdWIiOiIxMTA1MDIyNTExNTU4OTkwNzY2Mzk1IiwiYXpwIjoiY2xpZW50LWlkIiwiYXVkIjoiY2xpZW50LWlkIiwiZW1haWwiOiJhbGljZUBleGFtcGxlLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OSwibm9uY2UiOiJhYmMxMjMifQ.signature
{
"alg": "ES256",
"typ": "JWT"
}
{
"iss": "https://accounts.google.com",
"sub": "110502251155899076639",
"azp": "client-id",
"aud": "client-id",
"email": "alice@example.com",
"email_verified": true,
"iat": 1715000000,
"exp": 1999999999,
"nonce": "abc123"
} Token de ID OpenID Connect com assinatura ECDSA, reivindicações de e-mail e um nonce para proteção contra replay.
Token alg:none (não assinado)
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJkZWJ1Zy11c2VyIiwiaWF0IjoxNzE1MDAwMDAwfQ.
{
"alg": "none",
"typ": "JWT"
}
{
"sub": "debug-user",
"iat": 1715000000
} Token não assinado com alg:none. Aceitá-lo em produção é uma vulnerabilidade clássica de JWT — sempre rejeite alg:none no servidor.
Como usar
- 1
Cole seu JWT para decodificar
Cole o token completo para decodificar — incluindo os três segmentos separados por pontos — na caixa de entrada. O decodificador é executado instantaneamente no seu navegador; você não precisa clicar em um botão.
- 2
Leia o cabeçalho, carga útil e status decodificados
Leia o algoritmo e o tipo de token no cabeçalho decodificado, as reivindicações na carga útil decodificada e os chips de expiração / emissão no topo. Um token expirado é sinalizado em vermelho.
- 3
Copie a saída decodificada
Use o botão Copiar em cada painel para copiar o JSON do cabeçalho decodificado, o JSON da carga útil decodificada ou a assinatura bruta. Seu token nunca foi enviado a lugar nenhum — a decodificação aconteceu localmente no seu navegador.
Common Errors
Aceitar alg:none
Um JWT não assinado pode ser forjado por qualquer pessoa. Nunca permita alg:none em produção — sempre passe uma lista explícita de algoritmos na sua chamada de verificação.
jwt.verify(token, secret) // library default may allow 'none'
jwt.verify(token, secret, { algorithms: ['RS256'] }) Reivindicação exp ausente
Um JWT sem exp vive para sempre. Se um token vazar, não há ponto natural de revogação. Sempre defina uma expiração apropriada ao tipo de token.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } Armazenar segredos na carga útil
Cargas úteis JWT não são criptografadas — qualquer pessoa com o token pode lê-las. Nunca coloque senhas, chaves de API ou PII sem truncamento dentro de uma carga útil JWT.
{ "sub": "user_123", "password": "hunter2" } { "sub": "user_123", "role": "admin" } // payload stays minimal Casos de uso comuns
- Decodifique tokens Authorization Bearer
- Decodifique tokens JWT de cabeçalhos Authorization: Bearer para verificar as reivindicações, a audiência e a expiração que seu backend está recebendo.
- Decodifique tokens OAuth 2.0 e OIDC
- Decodifique tokens de acesso e tokens de ID retornados por servidores de autorização (Auth0, Okta, Google, Keycloak) durante a integração OAuth 2.0 e OpenID Connect.
- Diagnóstico de sessão expirada
- Confirme em um segundo se um token rejeitado está expirado, usa a audiência errada ou tem problema de diferença de relógio.
- Verificação de rotação de chaves
- Leia o kid (ID da chave) no cabeçalho para verificar se a rotação do seu JWKS está emitindo tokens assinados com a chave esperada.
- Revisões de segurança
- Identifique tokens assinados com alg:none, sem exp, ou que vazam PII na carga útil durante revisão de código e pentesting.
- Inspeção de tokens entre microsserviços
- Decodifique tokens entre serviços dentro de uma mesh para ver quais escopos e sujeito uma chamada downstream está autorizando.
Detalhes técnicos
- Conforme a RFC 7519
- Lida com tokens JWS em conformidade com RFC 7519 (JWT), RFC 7515 (JWS) e RFC 7518 (JWA) — todos os algoritmos registrados são suportados para decodificação.
- Decodificação Base64URL
- Usa o alfabeto Base64 seguro para URL (- e _ em vez de + e /) definido na RFC 4648, com parsing tolerante a preenchimento.
- Nativo do navegador, zero dependências
- Construído sobre atob, TextDecoder e JSON.parse do navegador — sem bibliotecas externas, sem chamadas de rede, sem telemetria.
Melhores práticas
- Nunca confie sem verificar
- Um decodificador mostra reivindicações; ele não as prova. Sempre verifique a assinatura no servidor contra a chave do emissor antes de confiar em qualquer reivindicação.
- Rejeite alg:none em produção
- Configure sua biblioteca JWT com uma lista explícita de algoritmos permitidos. Nunca aceite alg:none e desconfie de incompatibilidades de alg na rotação de chaves.
- Mantenha as cargas úteis enxutas
- Coloque identificadores e reivindicações de vida curta no JWT; mantenha dados volumosos atrás de um ID de sessão opaco. Tokens grandes custam largura de banda em cada requisição.
Perguntas frequentes
Como decodificar um token JWT online?
header.payload.signature) — no decodificador acima. A decodificação ocorre instantaneamente no seu navegador: cabeçalho e carga útil são decodificados em Base64URL para JSON legível, e a assinatura é exibida como string bruta. Uma linha de status revela o algoritmo de assinatura, o horário de emissão e a expiração, para que você detecte um token expirado num piscar de olhos. Para decodificar um JWT manualmente, divida o token pelos pontos, decodifique os dois primeiros segmentos em Base64URL e analise-os como JSON — qualquer um com o token pode ler suas reivindicações porque a carga útil é codificada, não criptografada. Este decodificador é seguro para usar com tokens de produção porque nada sai do seu dispositivo: sem requisição de rede, sem logs, sem rastreamento. O que é um JWT (JSON Web Token)?
Meu token está seguro com este decodificador JWT?
Como funciona um decodificador JWT?
Esta ferramenta pode verificar a assinatura de um JWT?
O que são iat, exp, nbf, iss, aud, sub e jti?
Meu JWT está expirado — por que o decodificador ainda o decodifica?
Qual é a diferença entre JWT, JWS e JWE?
Por que alg:none é perigoso?
alg:none não possui assinatura — qualquer pessoa pode construir um, alegando ser qualquer usuário. Bibliotecas JWT antigas aceitavam alg:none por padrão, levando a uma classe bem conhecida de bypasses de autenticação, em que um atacante removia a assinatura, definia alg como none e forjava um token de administrador. Toda biblioteca JWT madura agora rejeita alg:none a menos que explicitamente permitido, e você nunca deve aceitá-lo em requisições autenticadas. Este decodificador ainda mostrará um token alg:none, porque inspecioná-lo durante a depuração é legítimo — mas trate qualquer token desse tipo recebido em produção como hostil. Quais algoritmos este decodificador JWT suporta?
Devo armazenar JWTs em localStorage ou em cookies?
Como decodifico um JWT em Node.js, Python ou Go?
jsonwebtoken.decode(token) para leitura apenas, jsonwebtoken.verify(token, key) para verificação. Python: PyJWT.decode(token, options={'verify_signature': False}) para ler, passe uma chave para verificar. Go: jwt.ParseUnverified(token, claims) para leitura apenas, jwt.Parse(token, keyFunc) para verificação. Em qualquer linguagem, nunca verifique com options={'verify_signature': False} em código de produção — é exatamente isso que esta ferramenta web faz de propósito para depuração, e só é seguro quando você está inspecionando, não autenticando. Qual é o tamanho máximo de um JWT?
Colei meu token e recebi 'Formato JWT inválido' — o que está errado?
cabeçalho.carga.assinatura. Causas comuns: (1) você copiou acidentalmente apenas o segmento da carga, (2) espaços em branco ou quebras de linha foram colados no meio, (3) o token foi truncado em trânsito (comum com quebra de linha no terminal), (4) o token é um JWE, cujo formato é cabeçalho.chaveCriptografada.iv.textoCifrado.tag (cinco segmentos), ou (5) o token foi codificado em URL e você precisa decodificá-lo em URL primeiro. Verifique o valor bruto que sua API retornou — a maioria dos editores mostra caracteres invisíveis ao passar o cursor. Posso decodificar um JWT sem a chave secreta?
Meu JWT funciona no Postman mas meu backend o rejeita — como depurar?
HS256 falhará em uma biblioteca configurada apenas para RS256. (4) kid — se você usa rotação de chaves, o ID da chave no cabeçalho está presente no seu JWKS? (5) assinatura — você colou a chave secreta/pública correta? Este decodificador expõe (1), (2), (3) e (4) nas visualizações do cabeçalho e da carga útil para que você possa eliminá-los rapidamente. Ferramentas relacionadas
Ver todas as ferramentas →Gerador de Hash MD5 e Ferramenta de Checksum
Ferramentas de Segurança
Gere hashes MD5, SHA-256, SHA-1 e SHA-512 online gratuitamente. Faça hash de texto ou arquivos no navegador, verifique checksums e copie resultados. Sem cadastro necessário.
Gerador de Senhas Aleatórias — Forte e Seguro
Ferramentas de Segurança
Gere senhas aleatórias fortes instantaneamente — grátis, sem cadastro, 100% no navegador. Personalize comprimento e tipos de caracteres, gere em lote até 50. Medidor de força com análise de entropia.
Gerador e Decodificador de UUID — v1, v4, v5, v7 em Lote
Ferramentas de Segurança
Gerador de UUID gratuito — crie UUIDs v1, v4, v5, v7 instantaneamente. Decodifique e valide qualquer UUID. Geração em lote de até 50. Sem cadastro, 100% no navegador.
Conversor de Base Numérica — Binário, Hex, Decimal e Octal
Ferramentas de Conversão
Converta números entre binário, hexadecimal, decimal, octal e qualquer base personalizada (2-36) instantaneamente. Gratuito, privado, sem cadastro — todo o processamento acontece no seu navegador.
Decodificador e Codificador Base64
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Comprimir Imagens Online — JPEG, PNG e WebP
Ferramentas de Conversão
Reduza o tamanho de imagens em até 80% — comprima JPEG, PNG e WebP no navegador, sem upload. Lote de 20 imagens, ajuste de qualidade, compare antes e depois. Gratuito e privado.