Guide
Alternativas ao jwt.io: Decodificadores JWT online comparados
jwt.io é a implementação de referência. Use um decodificador somente do lado do cliente quando o token contiver credenciais reais.
By Buğra SözeriPublished
JWTs (JSON Web Tokens) são três segmentos codificados em Base64url separados por pontos. O cabeçalho e o payload não são criptografados — são legíveis por qualquer pessoa que tenha o token. Decodificá-los não requer nada mais do que uma decodificação Base64url e uma análise JSON. A questão não é se você pode decodificá-lo, mas onde — e se a ferramenta que você escolhe introduz risco desnecessário.
O que jwt.io faz muito bem
jwt.io é mantido pela Auth0 (agora Okta) e é o mais próximo de uma ferramenta de referência oficial que o ecossistema JWT tem. Seus pontos fortes são substanciais:
- Verificação de assinatura — cole um segredo (HMAC) ou chave pública (RSA, ECDSA, EdDSA) e jwt.io verificará se a assinatura do token é válida. Nenhuma outra ferramenta online gratuita popular suporta isso tão bem.
- Cobertura de algoritmos — HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 e Ed25519/Ed448.
- Conformidade com RFC — a ferramenta é mantida por pessoas que contribuíram para as especificações JWT. Quando um token é inválido conforme o RFC 7519, jwt.io diz.
- Lista de bibliotecas — a parte inferior do jwt.io lista bibliotecas JWT de código aberto para mais de 30 idiomas com links para seus repositórios. Este é um recurso de referência genuíno para engenheiros escolhendo uma implementação.
- Confiança do ecossistema — URLs jwt.io são o padrão de facto para compartilhar explicações de tokens em documentação, respostas do Stack Overflow e guias de referência de API.
A preocupação com privacidade
jwt.io afirma funcionar inteiramente no navegador. A Auth0 confirmou que os dados do token não são enviados aos seus servidores durante a decodificação. Isso é quase certamente verdade para a operação principal de decodificar e exibir.
No entanto, jwt.io carrega JavaScript de terceiros — análises, monitoramento e scripts de publicidade — que estão fora do controle da Auth0 no nível da rede. Pesquisadores de segurança e membros da comunidade levantaram essa preocupação no GitHub e em fóruns de segurança: um script carregado de um CDN de terceiros poderia, em princípio, ler o DOM.
A orientação prática segue diretamente do RFC 7519 §10 e OWASP: se o token carrega algo sensível — um identificador de sessão, reivindicações de identidade de um usuário, uma chave de API em uma reivindicação personalizada — decodifique-o localmente, não online.
O decodificador JWT da Convertitive é estritamente do lado do cliente. A página não contém scripts analíticos que leem campos de entrada, e nenhum dado de token sai do navegador. Essa é uma diferença significativa para tokens que são de baixo risco, mas não totalmente descartáveis — tokens de desenvolvimento, credenciais de teste, JWTs de demonstração.
O que o decodificador JWT da Convertitive não faz
A Convertitive não suporta verificação de assinatura, e isso é intencional.
A verificação de assinatura requer que você forneça um segredo compartilhado (HMAC) ou uma chave pública (RSA/ECDSA). Inserir qualquer um desses em uma ferramenta baseada em navegador é um antipadrão de segurança: segredos pertencem a gerenciadores de segredos, não a campos de entrada do navegador.
O RFC 7519 §10 aborda isso explicitamente: “As chaves usadas para assinar ou verificar JWTs DEVEM ser mantidas em segredo e NÃO DEVEM ser compartilhadas.” O RFC 8725 vai além, observando que ataques de confusão de algoritmo tornam-se trivialmente exploráveis quando a validação é delegada a superfícies não confiáveis.
Se você precisar verificar uma assinatura JWT, use a biblioteca JWT do seu aplicativo diretamente, ou um script local. A verificação de assinatura do jwt.io é útil para depuração no desenvolvimento — apenas use uma chave de desenvolvimento ou teste, nunca um segredo de produção.
Comparação de recursos
| Recurso | jwt.io | token.dev | Convertitive |
|---|---|---|---|
| Decodificação de cabeçalho + payload | Sim | Sim | Sim |
| Verificação de assinatura | Sim — todos os algoritmos principais | Sim — HMAC e RSA | Não (por design) |
| Exibição legível de exp / iat | Sim | Sim | Sim |
| Cobertura de algoritmos | Muito ampla — 12+ algoritmos | Moderada | Apenas exibição (sem verificação) |
| Scripts analíticos de terceiros | Sim (Auth0 / Okta analytics) | Mínimo | Não |
| Dados do token enviados ao servidor | Não (afirmado do lado do cliente) | Não | Não (verificado somente no lado do cliente) |
| Lista de referência de bibliotecas | Sim — 30+ idiomas | Não | Não |
| Suporte a JWE (token criptografado) | Não | Não | Não |
| Uso offline (após primeiro carregamento) | Parcial | Sim | Sim |
| Mantenedor | Auth0 / Okta | Comunidade | Convertitive |
Quando usar jwt.io
- Você precisa verificar uma assinatura durante o desenvolvimento e está usando uma chave de desenvolvimento ou teste (nunca um segredo de produção).
- Você precisa da lista de referência de bibliotecas para escolher uma implementação JWT para seu stack.
- Você quer compartilhar um link para uma explicação de token com um colega — links jwt.io são universalmente compreendidos por engenheiros.
- Você está depurando um token de demonstração ou sintético sem credenciais reais e quer a interface mais completa.
Quando usar o decodificador JWT da Convertitive
- O token é um token de desenvolvimento ou teste que você não quer expor a nenhum script de terceiros, mesmo com baixo risco.
- Você só precisa ler as reivindicações do payload — expiração, assunto, funções — e não precisa de verificação de assinatura.
- Você está auditando um formato de token (verificando o algoritmo do cabeçalho, verificando nomes de reivindicações) e não precisa do conjunto completo de recursos do jwt.io.
A estrutura JWT
Um JWT padrão tem três componentes separados por pontos:
- Cabeçalho — JSON codificado em Base64url especificando o tipo de token (
JWT) e algoritmo de assinatura (alg). - Payload — JSON codificado em Base64url contendo reivindicações. Reivindicações registradas incluem
iss(emissor),sub(assunto),aud(audiência),exp(expiração) eiat(emitido em). - Assinatura— calculada sobre cabeçalho + “.” + payload usando o algoritmo e chave especificados no cabeçalho. Não pode ser decodificada sem a chave.
As partes 1 e 2 não são secretas — elas são apenas codificadas, não criptografadas. Qualquer pessoa com a string de token pode ler o cabeçalho e o payload. A assinatura prova que o token foi emitido por alguém que possui a chave de assinatura, mas não oculta o conteúdo.
Para um guia técnico mais aprofundado, consulte nosso guia de decodificação de tokens JWT. Para entender especificamente a codificação Base64url, veja codificação Base64 explicada.
O resumo honesto
jwt.io é a melhor ferramenta se você precisar de verificação de assinatura ou quiser a experiência de referência JWT mais completa. É mantido por pessoas com contexto profundo na especificação JWT, e sua lista de bibliotecas é genuinamente útil.
O decodificador da Convertitive é a melhor escolha quando você quer garantir nenhuma interação de script de terceiros com seu token, ou quando você só precisa de inspeção de cabeçalho e payload sem a complexidade da verificação de assinatura. Ele faz menos — deliberadamente.
Para qualquer token contendo credenciais de produção reais: não use nenhum. Use a linha de comando.
Frequently asked questions
- jwt.io pode verificar uma assinatura JWT?
- Sim — jwt.io suporta verificação de assinatura. Você cola seu token, seleciona o algoritmo e fornece um segredo (para HMAC) ou uma chave pública (para RSA/ECDSA). O decodificador da Convertitive não suporta verificação de assinatura, por design: inserir uma chave de assinatura ou chave privada em qualquer ferramenta baseada em navegador é um antipadrão de segurança conforme RFC 7519 §10.
- jwt.io envia meu token para os servidores da Auth0?
- jwt.io é comercializado como funcionando inteiramente no navegador. A Auth0 (a mantenedora) afirma que nenhuma solicitação de servidor é feita para decodificação. Isso é quase certamente verdade para a operação principal de decodificar e exibir. No entanto, jwt.io carrega JavaScript de terceiros — análises, monitoramento e scripts de publicidade — que estão fora do controle da Auth0 no nível da rede. Para tokens com credenciais de produção reais, usar uma ferramenta offline ou um comando local é a opção mais segura.
- Por que a Convertitive não suporta verificação de assinatura?
- O RFC 7519 §10 alerta explicitamente contra o compartilhamento de chaves de assinatura. Uma ferramenta baseada em navegador que aceita um segredo ou chave privada normaliza a prática de inserir credenciais em formulários da web. A Convertitive decodifica apenas o cabeçalho e o payload — a parte de um JWT que é sempre codificada em Base64url sem criptografia e não carrega segredo de assinatura.
- Um JWT é criptografado?
- JWTs padrão (JWS, JSON Web Signature) são assinados, mas não criptografados — o cabeçalho e o payload são codificados em Base64url e visíveis para qualquer um que tenha o token. Tokens JWE (JSON Web Encryption) são criptografados. Se o seu token começa com eyJ e tem três partes separadas por ponto, é um JWS e seu cabeçalho e payload podem ser decodificados sem qualquer chave.
- Posso decodificar um JWT na linha de comando?
- Sim. No Node.js: node -e "const t='SEU_TOKEN'; console.log(JSON.parse(Buffer.from(t.split('.')[1],'base64url').toString()))". Com jq e base64: echo SEU_TOKEN | cut -d. -f2 | base64 -d | jq. Esses requerem nenhuma conexão de rede e são a abordagem recomendada para tokens que contêm credenciais de produção.
- O que significa 'exp' no payload de um JWT?
- exp é o timestamp de expiração POSIX definido no RFC 7519 §4.1.4. É um timestamp Unix (segundos desde 1970-01-01T00:00:00Z). Tanto jwt.io quanto a Convertitive o exibem como um datetime legível por humanos. Use nosso conversor de timestamp para verificar qualquer valor exp em relação à hora atual.
Related
Published May 31, 2026