Decodificar JWT: cabeçalho, payload e validade do token
Este decodificador JWT online separa um JSON Web Token em cabeçalho e payload e mostra os dois como JSON indentado assim que você cola o token. Marcas de tempo como exp ganham ao lado uma data local legível, e um indicador avisa se o token expirou. Conferir a assinatura é opcional. O token é lido no seu navegador e nunca é enviado. Pense nele como um JWT decoder e parser online que funciona na hora.
Decodificar JWT online: passo a passo
- Cole o token no campo JSON Web Token. O cabeçalho e o payload aparecem na hora, não existe botão de decodificar.
- Veja os indicadores de status acima do resultado: se o token expirou, ainda não é válido ou não tem validade, e como está a assinatura.
- Use Copiar cabeçalho ou Copiar payload para copiar esse bloco como JSON puro. As notas de data não vão na cópia.
- Use Limpar para esvaziar o campo e começar com outro token.
Você pode colar o token do jeito que veio: um «Authorization: Bearer» no início, aspas ao redor e quebras de linha são removidos, então copiar de um cabeçalho de requisição, de uma linha de log ou de uma resposta JSON funciona. O campo aceita até 100.000 caracteres. Números grandes e textos em outros idiomas nas claims aparecem exatamente como estão, e valores longos quebram a linha em vez de sair da tela.
O que há no cabeçalho e no payload
Um JWT são três partes em base64url unidas por pontos: header.payload.signature. As duas primeiras são JSON apenas codificado, e por isso dá para decodificar um JWT sem nenhum segredo. Estas são as claims mais comuns:
iss: emissor, quem criou o tokensub: assunto, de quem é o tokenaud: audiência, para quem o token se destinaexp: hora de expiraçãonbf: não vale antes desta horaiat: hora de emissãojti: ID único do token
O cabeçalho costuma ter alg (o algoritmo de assinatura), typ e, às vezes, kid, o ID da chave que assinou.
Token JWT expirado ou ainda válido?
exp, iat, nbf e auth_time são timestamps Unix em segundos. A ferramenta escreve cada um como data e hora locais ao lado do número, para você ler sem converter. Os indicadores acima do resultado usam o relógio do seu dispositivo:
- Pela claim
exp, mostram há quanto tempo o token expirou ou quanto tempo ainda resta. - Se não há
exp, aparece Sem validade: o token não tem a claim exp. - Se
nbfainda está no futuro, o token é marcado como ainda não válido.
Validar token JWT: confira a assinatura
Decodificar mostra o que um token diz; só a assinatura prova que ele não foi alterado. Abaixo do resultado fica Verificar a assinatura (opcional). Deixe Algoritmo na detecção automática, que lê o alg do token, ou escolha um: HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512 ou EdDSA. Depois cole uma chave em Segredo ou chave pública:
- um segredo simples para os algoritmos HS, usado exatamente como você digita, sem decodificar em base64 antes
- uma chave pública PEM (
-----BEGIN PUBLIC KEY-----) ou uma chave pública RSA no formato PKCS#1 - um certificado X.509
- um JWK, ou um JWKS inteiro, caso em que a chave é escolhida pelo
kiddo token
O indicador muda para Assinatura válida ou Assinatura inválida. Sem chave, ele fica em Assinatura não verificada. Um token que diz alg none mostra Sem assinatura: este token não é assinado. Se você colar uma chave privada, a ferramenta recusa e pede a pública, que é só o que se precisa para verificar. A conferência usa a WebCrypto do seu navegador; o EdDSA exige um navegador recente.
Quando o token não decodifica
O erro aparece abaixo do campo e aponta a parte com problema:
- O texto não tem três partes separadas por dois pontos, e a mensagem diz quantas encontrou.
- O cabeçalho, o payload ou a assinatura não é base64url válido, muitas vezes por um caractere perdido ao copiar.
- O cabeçalho ou o payload não é texto UTF-8 válido ou não é JSON válido.
- Um token com cinco partes é um JWE criptografado. Ele é reconhecido e explicado, mas não dá para ler sem a chave privada.
É seguro colar um token aqui?
O token e qualquer chave são decodificados e conferidos no seu dispositivo. Nada é enviado, nada é salvo e não é preciso ter conta. Mesmo assim, um token de acesso ativo é uma credencial, então use tokens expirados ou de teste sempre que puder.
Esta ferramenta só lê e confere tokens. Ela não cria nem assina JWT e não descriptografa JWE.
Perguntas frequentes
Dá para decodificar um JWT sem o segredo?
Dá. O cabeçalho e o payload de um JWT são apenas codificados em base64url, não criptografados, então qualquer pessoa com o token consegue lê-los. Cole no campo “JSON Web Token” e os dois aparecem de uma vez. O segredo ou a chave pública só é preciso para conferir a assinatura, que aqui é opcional.
Como saber se um JWT expirou?
Cole o token e leia o indicador acima do resultado. Ele diz há quanto tempo o token expirou ou quanto tempo falta, a partir da claim exp. Um token sem claim exp mostra “Sem validade: o token não tem a claim exp”, e se nbf ainda está no futuro, o indicador avisa que o token ainda não é válido.
Como converter o valor exp de um JWT em data?
Não precisa converter. O exp é um timestamp Unix em segundos, e a ferramenta escreve a data e a hora locais correspondentes ao lado, no bloco “Payload”. O mesmo vale para iat, nbf e auth_time.
Como verificar a assinatura de um JWT com uma chave pública?
Em “Verificar a assinatura (opcional)”, deixe “Algoritmo” na detecção automática ou escolha o que o token usa, e cole a chave pública em “Segredo ou chave pública”. Servem uma chave PEM (-----BEGIN PUBLIC KEY-----), uma RSA PUBLIC KEY, um certificado X.509, um JWK ou um JWKS. Depois o indicador muda para “Assinatura válida” ou “Assinatura inválida”.
É seguro ler JWT online sem enviar o token a um servidor?
Aqui é, porque a ferramenta funciona localmente. O token é separado, decodificado e conferido no seu navegador, e nada é enviado nem salvo. As conferências de assinatura usam a WebCrypto do navegador, então nem o token nem a chave vão para lugar nenhum.
O que há no cabeçalho e no payload de um JWT?
O cabeçalho descreve o token: normalmente o algoritmo de assinatura (alg), o tipo (typ) e, às vezes, um ID de chave (kid). O payload traz as claims, como quem emitiu (iss), de quem é (sub), para quem se destina (aud) e quando expira (exp). Os dois são JSON puro, mostrado nos blocos “Cabeçalho” e “Payload”.
O que significa alg none em um JWT?
Significa que o token se declara sem assinatura: a parte da assinatura está vazia e não há nada para conferir. A ferramenta mostra “Sem assinatura: este token não é assinado”. Um servidor nunca deveria aceitar esse token como prova de identidade.
Como decodificar um bearer token?
Se for um JWT, cole do jeito que está. Um “Authorization: Bearer” no início, aspas e quebras de linha são removidos por você, então dá para copiar direto de um cabeçalho de requisição ou de um log. Um bearer token opaco, que não tenha três partes separadas por pontos, não pode ser decodificado, e a ferramenta diz quantas partes encontrou.
Posso descriptografar um JWE ou criar e assinar um JWT aqui?
Não. Um token com cinco partes é um JWE e o conteúdo é criptografado, então não dá para ler sem a chave privada; a ferramenta reconhece e avisa em vez de mostrar um erro. Ela também não gera, assina nem edita tokens: só lê e confere.