O que é esta ferramenta?
Um JWT (JSON Web Token) é uma cadeia de caracteres compacta e segura para URLs, utilizada para transportar reivindicações entre duas partes — mais frequentemente como um token de autenticação após o início de sessão. É composto por três partes separadas por pontos: um cabeçalho (algoritmo e tipo de token), uma carga útil (as reivindicações propriamente ditas — ID do usuário, funções, data de validade, etc.) e uma assinatura (utilizada pelo servidor para verificar se o token não foi adulterado).
O cabeçalho e a carga útil são apenas JSON codificado em Base64URL — não estão encriptados — pelo que qualquer pessoa pode descodificá-los e lê-los sem uma chave secreta. Apenas a assinatura requer uma chave secreta para ser verificada. É exatamente isso que esta ferramenta faz: descodifica as partes legíveis e apresenta-as como JSON formatado, sem tentar verificar a assinatura.
Por que usar?
- Cabeçalho e carga útil imediatamente legíveis, formatados em JSON — já não é necessário dividir manualmente a cadeia de caracteres nem descodificá-la manualmente de Base64.
- Verificação automática da validade: se a carga útil tiver uma declaração «exp», esta é convertida numa data legível e marcada como expirada ou válida.
- Cópia com um clique, separadamente para o cabeçalho ou para o corpo da mensagem.
- 100% do lado do cliente — o token é descodificado localmente e nunca é transmitido, sendo seguro de utilizar mesmo com tokens provenientes de um sistema de produção.
- Não foi realizada nem declarada qualquer verificação de assinatura — trata-se de uma ferramenta de depuração/inspeção, não de um validador.
Como usar
- Cole o seu JWT na caixa (a sequência completa, incluindo as três partes separadas por pontos).
- O cabeçalho e a carga útil são descodificados automaticamente à medida que escreve.
- Verifique a linha de validade se o token tiver uma reivindicação «exp» — esta indica a data exata e se o token já expirou.
- Clique em «Copiar» por baixo de qualquer uma das caixas para copiar essa secção em formato JSON.
Exemplo
Entrada
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQResultado
Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}A assinatura (terceira parte) nunca é descodificada nem verificada — trata-se de um hash opaco utilizado do lado do servidor para verificar a autenticidade.
Dicas práticas
- Resolução de erros do tipo «token inválido»: descodifique primeiro a carga útil para verificar a reivindicação «exp» — um token expirado é a causa mais comum, e nem sempre é óbvio apenas a partir da mensagem de erro.
- Verificar o que o token de uma API de terceiros contém realmente: muitas APIs devolvem um JWT que parece opaco como token de acesso — descodifique-o aqui para ver os âmbitos, o ID do usuário ou a data de validade que a sua integração está efetivamente recebendo.
- Nunca presuma que um JWT está encriptado: se, durante o desenvolvimento, encontrar dados sensíveis (e-mail, IDs internos) numa carga descodificada, isso é um sinal de que deve transferir esses dados para o lado do servidor, em vez de confiar que o cliente não os irá ler.
Afirmações comuns que se encontram numa carga útil
| Reivindicação | Significado |
|---|---|
| sub | Assunto — normalmente o ID de usuário que o token representa |
| exp | Tempo de validade (timestamp Unix) — o token deixa de ser válido após este momento |
| iat | Emitido em — quando o token foi criado |
| iss | Emissor — qual o serviço/servidor que emitiu o token |
| aud | Público-alvo — a que serviço se destina o token |
| função / funções / âmbito | Reivindicações personalizadas — permissões ou funções atribuídas ao usuário (não fazem parte da norma JWT, mas são extremamente comuns) |
Perguntas frequentes
Esta ferramenta verifica a assinatura do JWT?
Não. A verificação de uma assinatura requer a chave secreta ou a chave pública utilizada para assinar o token, que apenas o servidor emissor possui. Esta ferramenta apenas descodifica o cabeçalho e a carga útil — as partes legíveis por humanos — para que possa verificar as reivindicações e a data de validade sem necessitar de qualquer chave.
É seguro colar aqui um JWT de produção real?
A descodificação ocorre inteiramente no seu navegador através de JavaScript — o token nunca é enviado para nenhum servidor, incluindo o nosso. Dito isto, trate os tokens como se fossem senhas: não os cole em ferramentas nas quais não confia e evite partilhar capturas de tela de tokens descodificados que contenham informações confidenciais.
Por que é que qualquer pessoa consegue ler o conteúdo do meu JWT sem uma senha?
Por definição — o cabeçalho e a carga útil de um JWT são codificados em Base64URL, não encriptados. A codificação não é sinónimo de segurança; serve apenas para tornar o JSON seguro para transmissão via URL. Nunca coloque informações confidenciais (senhas, números de cartão de crédito) diretamente na carga útil de um JWT — parta do princípio de que qualquer pessoa que tenha o token pode ler o seu conteúdo.
O que significa a indicação «exp» e por que é que é importante?
«exp» é a data de validade do token, expressa como um timestamp Unix (segundos desde 1970). Os servidores rejeitam um JWT assim que este tempo tiver decorrido, obrigando o cliente a voltar a autenticar-se. Esta ferramenta converte-o numa data legível e indica se já expirou, o que é útil para depurar problemas do tipo «por que razão a minha sessão foi encerrada?».
O meu token apresenta um erro de análise de JSON — porquê?
Ou a cadeia de caracteres não é um JWT válido (deve ter exatamente três partes separadas por pontos), ou foi truncada ou alterada — uma causa comum é um token acidentalmente dividido em várias linhas ou a falta de caracteres finais ao ser copiado.