Decodificar JWT
Um JWT carrega os dados do usuário codificados em Base64 — não criptografados. Cole o token e veja na hora o que há dentro: algoritmo, claims, quando foi emitido e quando expira. A decodificação roda inteira no seu navegador, o que importa quando o token é de verdade.
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
JWT não é segredo: é só codificação
Muita gente descobre tarde que o payload de um JWT é legível por qualquer pessoa que tenha o token — Base64 se reverte com uma linha de código. A assinatura no final impede alteração, não leitura. Consequência prática: nunca coloque senha, documento ou dado sensível dentro das claims. O token deve carregar apenas o mínimo para identificar e autorizar: um ID de usuário, papéis, prazos.
As claims que você vai encontrar
O payload típico traz sub (o dono do token), iat (quando foi emitido), exp (quando expira) e, conforme o sistema, aud, iss e claims personalizadas com papéis e permissões. As datas chegam como timestamp Unix — segundos desde 1970 —, por isso a ferramenta já as converte para data legível. É aqui que se descobre, por exemplo, que o token que deveria expirar em uma hora está sendo emitido com oito.
O clássico erro de token inválido, destrinchado
Quando a API rejeita um token, decodificar é o primeiro passo do diagnóstico: o exp já passou? O aud aponta para outro serviço? O iss é do ambiente de homologação enquanto você chama produção? O algoritmo do header é o que o backend espera? Boa parte dos chamados de login quebrado termina aqui — um relógio dessincronizado ou uma claim apontando para o ambiente errado.
Colar token em site: por que aqui é diferente
Colar um token de produção num site qualquer é entregar uma credencial válida a um desconhecido. Esta ferramenta decodifica localmente: o token não é transmitido, não passa por servidor e não fica registrado. Mesmo assim, higiene vale sempre — prefira tokens expirados ou de teste quando servirem, e revogue qualquer credencial que tenha circulado por canais inseguros. Para automatizar a inspeção num fluxo, a decodificação existe também via API, a US$ 0,002 por chamada.
Casos de uso
Descobrir por que a sessão expira cedo demais
Usuários reclamam que o login cai a cada poucos minutos. Decodificando o token, o dev vê que o exp está sendo calculado com fuso errado — o backend usa horário de Brasília, mas grava como se fosse UTC, encurtando a sessão em três horas.
Conferir o que o backend está emitindo
Depois de mudar o serviço de autenticação, o time cola um token recém-gerado e confere claim por claim: os papéis certos estão lá? O aud aponta para a API certa? Mais rápido que subir um depurador.
Atender chamado de integração
Um cliente da TecnoSul reporta erro 401 na integração. O suporte pede o token de homologação, decodifica e encontra o problema em segundos: a claim iss aponta para o emissor antigo, desativado na última migração.
Perguntas frequentes
É seguro colar um token real aqui?
O token não sai do seu navegador — a decodificação é local, sem transmissão nem registro. Dito isso, tratar credencial ativa com cerimônia é sempre bom hábito: se o token já expirou ou é de homologação, melhor ainda.
Decodificar é o mesmo que validar a assinatura?
Não, e a diferença importa: decodificar mostra o conteúdo; validar exige a chave secreta ou pública do emissor e prova que o token não foi adulterado. Um token pode ser perfeitamente legível e mesmo assim ter assinatura inválida.
Por que as datas do token aparecem como números gigantes?
São timestamps Unix: segundos contados desde 1º de janeiro de 1970, em UTC. A ferramenta converte para data e hora legíveis — lembre que o horário de Brasília fica três horas atrás do UTC.
Funciona com refresh token?
Se o refresh token for um JWT, sim — a estrutura é a mesma. Alguns sistemas, porém, usam refresh tokens opacos (uma string aleatória sem conteúdo); nesses não há nada para decodificar.
Quanto custa usar a decodificação via API?
US$ 0,002 por chamada, com preço publicado e sem mensalidade. Na página, o uso é gratuito, ilimitado e sem cadastro.
O que eu faço se um token de produção vazou?
Revogue no emissor e reduza o tempo de vida dos próximos. Decodificá-lo ajuda a medir o estrago: o exp diz até quando a credencial vazada continua válida.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/jwt-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/jwt-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/jwt-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/jwt-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/jwt-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"items": [
"valor-1",
"valor-2"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.jwt_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |