Skip to content

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.

Sem rastreamento Roda no navegador Grátis
Token JWT
Revisado quanto à conformidade com a RFC 7519 e garantias de privacidade — Equipe de segurança Go Tools · Apr 22, 2026

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. 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. 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. 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.

✗ Incorreto
jwt.verify(token, secret)  // library default may allow 'none'
✓ Correto
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.

✗ Incorreto
{ "sub": "user_123", "role": "admin" }  // no exp
✓ Correto
{ "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.

✗ Incorreto
{ "sub": "user_123", "password": "hunter2" }
✓ Correto
{ "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?
Cole o JWT completo — os três segmentos separados por pontos (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)?
Um JSON Web Token (JWT) é uma credencial compacta e segura para URL que transporta reivindicações entre duas partes. Definido na RFC 7519, consiste em três seções codificadas em Base64URL unidas por pontos: o cabeçalho (algoritmo e tipo de token), a carga útil (reivindicações — dados sobre o usuário e sobre o próprio token) e a assinatura (uma prova criptográfica de que o token foi emitido por uma parte confiável). JWTs são a forma padrão de representar tokens de acesso em OAuth 2.0 e tokens de ID em OpenID Connect.
Meu token está seguro com este decodificador JWT?
Sim. Toda a decodificação é executada no seu navegador usando JavaScript nativo (atob e TextDecoder). Seu token nunca é enviado a um servidor, nunca é registrado, nunca é armazenado e nunca é usado para análises. Não há cookies nem rastreamento. Isso importa porque JWTs podem conter tokens de acesso ativos — colá-los em um depurador remoto seria equivalente a entregar uma credencial. Nossa ferramenta é segura para uso com tokens de produção.
Como funciona um decodificador JWT?
Um decodificador JWT divide o token por pontos em três partes, decodifica o cabeçalho e a carga útil em Base64URL e os analisa como JSON. A assinatura é mantida como uma string opaca em Base64URL, pois verificá-la requer o segredo ou a chave pública do emissor — algo que um decodificador do lado do cliente não pode fazer com segurança. Isso significa que a decodificação é instantânea e revela as reivindicações, mas você deve verificar a assinatura no servidor com a chave correta antes de confiar em qualquer coisa contida nela.
Esta ferramenta pode verificar a assinatura de um JWT?
Não, e isso é intencional. A verificação de assinatura requer o segredo do emissor (para HMAC) ou a chave pública (para RSA/ECDSA/EdDSA), que nunca devem ser colados em uma ferramenta web pública. A verificação deve acontecer no seu servidor, no seu middleware de autenticação ou dentro de um SDK que tenha acesso ao seu endpoint JWKS. Este decodificador serve para inspecionar o que um token declara — ele não implica que o token é autêntico ou não foi adulterado.
O que são iat, exp, nbf, iss, aud, sub e jti?
Estas são as reivindicações registradas da RFC 7519. iat (issued at) é o timestamp Unix de quando o token foi criado. exp (expiração) é quando o token deixa de ser válido — esta ferramenta converte esse valor para uma data legível e marca o token como expirado se exp estiver no passado. nbf (not before) é o horário mais cedo em que o token pode ser usado. iss (issuer) identifica quem criou o token. aud (audience) indica o destinatário pretendido. sub (subject) identifica o principal — normalmente um ID de usuário. jti é um ID de token único usado para prevenir replay. Reivindicações específicas da aplicação (role, scope, email, name) convivem ao lado dessas.
Meu JWT está expirado — por que o decodificador ainda o decodifica?
Decodificar não é o mesmo que validar. Um decodificador JWT lê o conteúdo independentemente da expiração, para que você possa inspecionar um token expirado ou de outra forma inválido para depurar por que ele foi rejeitado. O selo 'Expirado' nesta ferramenta compara a reivindicação exp com o seu relógio local e sinaliza tokens cujo exp está no passado. Um servidor de autenticação real rejeitaria o token imediatamente — mas um decodificador que se recusasse a mostrar tokens expirados seria inútil para depuração.
Qual é a diferença entre JWT, JWS e JWE?
JWT é o conceito geral — um objeto JSON codificado como um token compacto. JWS (RFC 7515) é um JWT assinado: a carga útil é legível por qualquer pessoa que a decodifique, e uma assinatura prova que ele não foi adulterado. Este é de longe o JWT mais comum que você encontrará. JWE (RFC 7516) é um JWT criptografado: a própria carga útil é texto cifrado e não pode ser decodificada sem a chave de descriptografia. Esta ferramenta decodifica tokens JWS. Um token JWE só será decodificado até o cabeçalho — a carga útil criptografada não é legível sem a chave.
Por que alg:none é perigoso?
Um JWT com 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?
A decodificação do cabeçalho e da carga útil funciona para todo algoritmo, pois a decodificação só precisa de Base64URL e parsing de JSON — é agnóstica ao algoritmo. A ferramenta lê corretamente tokens assinados com HS256, HS384, HS512 (HMAC), RS256, RS384, RS512 (RSA + SHA), PS256, PS384, PS512 (RSA-PSS), ES256, ES384, ES512 (ECDSA), EdDSA (Ed25519/Ed448) e tokens não assinados (alg:none). Apenas a verificação de assinatura é específica do algoritmo, e esta ferramenta não realiza verificação.
Devo armazenar JWTs em localStorage ou em cookies?
Prefira cookies HttpOnly, Secure, SameSite=Strict para tokens de sessão. Um token em localStorage é legível por qualquer JavaScript que rode na página, então uma única vulnerabilidade de XSS vaza todas as sessões ativas. Cookies HttpOnly são invisíveis ao JavaScript, o que reduz o raio de impacto de um XSS ao que um atacante pode fazer dentro de uma página ativa — não a um token roubado que pode ser reutilizado por dias. Se você precisa usar localStorage (por exemplo, para aplicações entre domínios), mantenha o tempo de vida dos tokens de acesso curto (minutos, não horas) e use um refresh token separado em um cookie HttpOnly.
Como decodifico um JWT em Node.js, Python ou Go?
Node.js: 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?
O padrão JWT não impõe um limite rígido, mas os cabeçalhos na maioria dos servidores web têm por padrão cerca de 8 KB. Mantenha os tokens abaixo de 4 KB para que caibam confortavelmente em cabeçalhos Authorization e cookies. Se o seu token for maior que isso, provavelmente você está colocando reivindicações demais na carga útil — mova dados volumosos para trás de um ID de sessão opaco e busque-os no backend quando necessário. JWTs inchados também ficam caros em cada requisição, pois são enviados a cada chamada de API.
Colei meu token e recebi 'Formato JWT inválido' — o que está errado?
Um JWT válido tem exatamente três partes separadas por pontos: 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?
Sim — o cabeçalho e a carga útil são codificados em Base64URL, não criptografados. Qualquer pessoa que tenha o token pode ler suas reivindicações sem qualquer chave. Isso é por design: a carga útil deve ser legível para que o destinatário possa tomar decisões de autorização a partir dela. O segredo ou a chave pública só é necessário para verificar se o token não foi adulterado. É por isso que você nunca deve colocar dados sensíveis (senhas, chaves privadas, PII além do que o destinatário já conhece) dentro de uma carga útil JWT.
Meu JWT funciona no Postman mas meu backend o rejeita — como depurar?
Decodifique o token aqui e verifique: (1) exp — está no futuro em relação ao relógio do servidor? Diferença de relógio do servidor é um culpado frequente. (2) iss / aud — eles correspondem exatamente ao que o seu backend espera? Uma incompatibilidade em aud é o falso negativo mais comum. (3) alg — o seu código de verificação permite esse algoritmo? Um token 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.