Coloque seu arquivo
Escolha ou arraste um arquivo .txt ou .jwt. Dá para colar o conteúdo também.
Cole o token completo ou escolha um arquivo .txt ou .jwt e a ferramenta separa os três segmentos. Cabeçalho e payload são decodificados de Base64url, lidos como UTF-8 estrito e interpretados como JSON estrito, aparecendo exatamente como foram decodificados para copiar ou baixar como .header.json e .payload.json. Os campos alg, typ, cty, kid, jku e x5u do cabeçalho ganham linhas próprias; as claims registradas iss, sub, aud, exp, nbf, iat e jti aparecem como claims padrão, com exp, nbf e iat mostradas como número original e como data UTC. A ferramenta indica se o token expirou ou ainda não vale pelo relógio do seu aparelho. Uma tabela lista todas as claims com o valor bruto, preservando inteiros longos. A assinatura só é checada como Base64url e contada em bytes, nunca convertida em texto.
ou arraste um arquivo aqui
Escolha ou arraste um arquivo .txt ou .jwt. Dá para colar o conteúdo também.
O arquivo é lido e analisado neste navegador; nada é enviado.
Veja o que voltou e então copie, baixe ou siga em frente.
Quer saber o que acontece com os arquivos? Leia o aviso de privacidade →
Cole o token inteiro na caixa de entrada ou selecione um arquivo .txt ou .jwt e o JSON do cabeçalho e do payload aparece na hora. Espaços e quebras de linha nas pontas são ignorados. Os painéis de cabeçalho e payload têm botões para copiar ou baixar o JSON exatamente como foi decodificado.
Dá: o token é decodificado dentro da aba do navegador e esta ferramenta não o envia para servidor nenhum. Se o cabeçalho trouxer uma URL em jku ou x5u, ela só é exibida com um alerta; nenhuma conexão é feita para esse endereço.
Abra esta página no navegador do celular, do Windows, do Mac ou do Linux e cole o token; não precisa de aplicativo, terminal nem extensão. No celular, copie o token do app ou do e-mail de teste e cole só o trecho que começa com eyJ.
Um JWT assinado precisa ter três partes separadas por dois pontos, e um ponto a mais ou a menos gera esse erro. Normalmente a assinatura foi cortada na cópia ou dois tokens foram colados juntos. Com exatamente cinco partes a mensagem muda, pois isso indica um JWE criptografado.
Esse erro indica que o payload saiu do Base64url, mas não é JSON estrito, por isso não é exibido como texto. Aspas simples, vírgula sobrando ou escape inválido causam o problema; corrija na origem do token. Se o JSON for válido mas for array ou texto, aparece o aviso de que não é objeto.
Porque o arquivo provavelmente foi salvo em UTF-16 ou em outra codificação, e a ferramenta só aceita arquivos UTF-8. Salve de novo escolhendo UTF-8 ou simplesmente cole o token na caixa de texto. A marca BOM no início de um arquivo UTF-8 é removida sem problemas.
O limite é 1.000.000 bytes por token ou arquivo, e o JSON pode ter até 64 níveis de aninhamento. O tamanho é checado antes de qualquer decodificação. Tokens reais costumam ter poucos KB, então o limite só pesa em payloads anormalmente grandes.
Não dá para decodificar JWE aqui: só tokens assinados de três partes (JWS) são aceitos, e os de cinco partes são rejeitados com aviso próprio. No JWS o payload é apenas codificado e qualquer um lê; no JWE ele é criptografado e exige a chave de descriptografia correspondente.
Não. A ferramenta nunca verifica a assinatura e não aceita chave, então um token bem decodificado não prova que seja legítimo. Qualquer pessoa consegue montar um JWT que decodifica perfeitamente; a decisão de confiar cabe ao servidor que guarda a chave.
Não é: alg none afirma que o token não tem assinatura, e um servidor que o aceite permite forjar identidades. A ferramenta mostra um alerta crítico para none em qualquer combinação de maiúsculas e minúsculas, para você bloquear esse caso na validação.
A data aparece em UTC ao lado do número original de exp, e o status de expirado é calculado pelo relógio do seu aparelho. iat e nbf também são convertidos. Relógio errado gera resultado errado, e sem exp a ferramenta avisa a ausência em vez de considerar o token válido.