PK Systems
Codificadores e decodificadores

Decodificador de JWT

Inspecione o header e o payload de um JSON Web Token. A verificação não é feita por design — esta ferramenta é só para debug.

Decodificador de JWT

Tokens dão acesso — nunca cole um JWT de produção numa ferramenta na qual não confia. Esta página roda inteira no seu navegador, mas, por hábito, decodifique tokens não confiáveis localmente.

Decodificado

Header


            

Payload


                
            

Assinatura


                

A assinatura é mostrada em base64url. Esta ferramenta não verifica a assinatura — para isso é preciso o segredo ou a chave pública do emissor.

O que é um JWT?

Um JSON Web Token (JWT, pronuncia-se "djóte") é uma forma compacta e segura para URLs de carregar JSON assinado entre partes — geralmente entre um servidor de autenticação e o seu app. Um JWT tem três partes em base64url separadas por ponto: header.payload.assinatura. O header diz qual algoritmo de assinatura foi usado; o payload é um JSON com claims (sujeito, expiração, dados customizados); a assinatura permite ao receptor verificar que o token não foi adulterado. O padrão está na RFC 7519.

Como usar

Cole um JWT na caixa acima. A ferramenta separa pelos pontos, decodifica os dois primeiros segmentos em base64url e formata o JSON resultante em dois painéis — Header e Payload. O terceiro painel mostra a assinatura crua. Se o payload tiver iat, nbf ou exp, a ferramenta também exibe esses valores como timestamps UTC legíveis e diz se o token expirou. A decodificação é ao vivo: assim que você termina de digitar, os painéis atualizam.

Decodificado ≠ verificado

Um decodificador de JWT é uma ajuda para debug, não uma ferramenta de segurança. Qualquer um pode decodificar um JWT — a codificação é reversível por design. O que torna o token confiável é a assinatura, e verificar a assinatura precisa do segredo do emissor (HS256) ou da chave pública (RS256, ES256). Nunca confie no conteúdo de um JWT em código de produção sem verificar a assinatura antes. Use a biblioteca de JWT que vem com o seu framework; nunca implemente do zero.

Claims padrão de JWT

Claim Nome Significado
issEmissorIdentifica quem emitiu o token (ex: a URL do servidor de auth).
subSujeitoIdentifica a entidade sobre a qual o token fala — geralmente um ID de usuário.
audAudiênciaPara quem o token é destinado. Receptores devem rejeitar tokens que não são para eles.
expExpiraçãoTimestamp Unix depois do qual o token não deve mais ser aceito.
nbfNão antesTimestamp Unix antes do qual o token não pode ser aceito.
iatEmitido emTimestamp Unix de quando o token foi emitido.
jtiID do JWTIdentificador único do token, útil para listas de revogação.

Perguntas frequentes

Meu JWT é enviado para algum lugar?
Não. A decodificação roda inteira no seu navegador — o token não sai do seu dispositivo. Você pode confirmar abrindo DevTools > Network e colando um token; nenhuma requisição é disparada. Mesmo assim, trate qualquer JWT de produção como uma credencial: só cole tokens que você não se importa de ver no histórico do navegador.
Por que esta ferramenta não verifica a assinatura?
Verificar precisa do segredo do emissor (HS256) ou da chave pública (RS256, ES256, etc.). Pedir para o usuário colar segredos de produção numa página web é receita para o desastre, então a ferramenta deliberadamente não oferece essa opção. Use a biblioteca de JWT da sua aplicação ou uma CLI como o jwt para verificar assinaturas num ambiente controlado.
Aparece "Não é um JWT" — o que está errado?
Um JWT válido tem exatamente três segmentos separados por ponto. Causas comuns: espaços extras ou um Bearer que veio junto do header HTTP (tire), só o payload foi colado (você precisa do header e da assinatura também), ou o token na verdade é um JWE (criptografado), que tem cinco segmentos e não dá para decodificar sem a chave privada do destinatário.
Por que o payload é base64url e não base64 normal?
Base64 padrão usa +, / e o padding = — nenhum dos três é seguro em URL. Base64url troca + por -, / por _ e tira o padding. Assim o resultado pode ir em URL ou header HTTP sem novo escape. Este decodificador converte de volta para base64 padrão antes de chamar o atob do navegador.
O que significa alg: none?
Significa que o JWT está sem assinatura — qualquer um pode emitir um token com qualquer payload. alg: none existe na spec, mas é perigoso na prática: uma classe famosa de vulnerabilidades explorou bibliotecas que aceitavam tokens com alg: none como se estivessem assinados. Se você vir isso num token de produção, é um achado sério.
Posso compartilhar um JWT para debug?
Em geral, não. JWTs são bearer tokens — quem tem o token tem os direitos que ele representa até ele expirar (ou ser revogado, se o emissor mantém lista de revogação). Compartilhe screenshot do payload decodificado em vez do token cru, ou peça para o emissor gerar um token de debug curto e com escopo reduzido. Nunca cole tokens de produção em chat, e-mail ou ferramentas de terceiros.