Comparativo · Atualizado 2026-05-05
As ferramentas JWT do TaskKit vs jwt.io
Ambas as ferramentas descodificam e verificam JSON Web Tokens inteiramente no navegador. As diferenças práticas estão no que cada uma carrega ao lado do editor, em como se comportam perante uma assinatura lenta ou maliciosa, e num punhado de funcionalidades que uma tem e a outra não. O resumo em baixo está medido; o resto da página mostra o quadro completo.
Resumo
- Privacidade: o TaskKit faz 0 pedidos a terceiros no primeiro paint. O jwt.io faz 10 (consent do OneTrust, Adobe Experience Platform, Google Tag Manager).
- Algoritmos e formatos de chave: idênticos em ambos para a especificação JWT — HS / RS / PS / ES / EdDSA, JWK e JWKS completo (com correspondência por
kid),x5c, PEM PKCS#1 / PKCS#8 / X.509. O TaskKit aceita ainda uma chave EdDSA como hex em bruto ou string base64url. - Segurança em runtime: o TaskKit verifica assinaturas num Web Worker com timeout de 2 segundos; um token hostil não pode bloquear a página. O jwt.io verifica na thread principal.
- Onde o jwt.io é mais forte: um diretório curado de bibliotecas, uma página de introdução extensa e links por claim para os RFCs correspondentes.
- O que o TaskKit deixa de fora deliberadamente: download automático de um JWKS a partir de uma URL (exigiria uma chamada de saída). Abrir o descodificador do TaskKit.
Privacidade, medida
Ambas as ferramentas afirmam fazer o seu trabalho no navegador. Essa afirmação só vale alguma coisa se a puderes verificar. Cada página abaixo foi carregada a 2026-05-05 num perfil Chrome limpo com cache apagada e foram contados todos os pedidos de rede de saída antes de premir uma única tecla. O mesmo teste corre contra o descodificador JWT do TaskKit.
| Rede no primeiro paint | jwt.io | TaskKit |
|---|---|---|
| Pedidos a terceiros | 10 | 0 |
| SDK de consentimento OneTrust | Carregado (5 chamadas) | Não |
| Adobe Experience Platform / DTM | Carregado (3 chamadas) | Não |
| Google Tag Manager | Carregado | Não |
| Geo-lookup | Endpoint geo do onetrust.com | Não |
| Banner de consentimento de cookies | Sim, bloqueia o paint inicial até confirmar | Nenhum |
| Login obrigatório para funcionalidades avançadas | Não | Não |
Cada uma dessas chamadas dispara antes de colares um token. Nenhuma é necessária para a página descodificar um JWT — são analítica, gestão de tags e fluxo de consentimento. O TaskKit não envia nada disso. Mais sobre como o TaskKit trata os teus dados.
Matriz de funcionalidades
Ambas as ferramentas cobrem praticamente toda a especificação JWT. Abaixo vês o que cada uma aceita hoje, agrupado por categoria.
| Capacidade | jwt.io | TaskKit |
|---|---|---|
| Algoritmos | ||
| HS256 / 384 / 512 | Sim | Sim |
| RS256 / 384 / 512 | Sim | Sim |
| PS256 / 384 / 512 | Sim | Sim |
| ES256 / 384 / 512 | Sim | Sim |
| EdDSA (Ed25519) | Sim | Sim (via @noble/ed25519) |
| Formatos de chave | ||
| JWK (solto) | Sim | Sim |
| JWKS com lookup por kid | Sim | Sim |
| PEM SPKI (BEGIN PUBLIC KEY) | Sim | Sim |
| PEM PKCS#1 RSA (BEGIN RSA PUBLIC KEY) | Parcial | Sim (leitor ASN.1 próprio) |
| Certificado X.509 (BEGIN CERTIFICATE) | Sim | Sim (SPKI extraído automaticamente) |
| Header x5c usado automaticamente | Sim | Sim (cadeia não validada, marcado explicitamente) |
| EdDSA em bruto como hex / base64url | Não | Sim (64 hex ou 43 base64url) |
| Segurança da verificação | ||
| Isolamento em Web Worker | Não | Sim |
| Timeout contra backtracking catastrófico | Não | Sim (2s) |
| alg:none rejeitado com explicação | Sim | Sim |
| Codificador | ||
| Editar header / payload | Sim | Sim |
| Campos de formulário para claims registados | Não | Sim |
| Chaves privadas PKCS#1 aceites diretamente | Não | Sim (envolvidas automaticamente em PKCS#8) |
| EdDSA privada como hex / base64url | Não | Sim |
| Token de exemplo com um clique | Sim | Sim (iat/exp atuais calculados ao vivo) |
| Privacidade / Runtime | ||
| Processamento integral no navegador | Sim | Sim |
| Zero pedidos a terceiros | Não | Sim |
| Diálogo de consentimento de cookies | Sim | Nenhum |
| Cloudflare Web Analytics opcional (preserva privacidade, desativado por defeito) | — | Off salvo se o operador o ativar com token |
Segurança em runtime
O verify do WebCrypto é rápido com assinaturas bem
formadas. Com input hostil não é. Expoentes RSA patológicos, chaves
sobredimensionadas, assinaturas Ed25519 corrompidas ou um JWKS
construído com má intenção podem manter o verificador ocupado o
suficiente para bloquear o separador — um risco real quando o token à
tua frente vem de uma fonte não confiável.
O TaskKit executa a verificação de assinatura num Web Worker dedicado
com um timeout wall-clock de 2 segundos. Se o worker exceder o
orçamento, é terminado e a página mostra um erro em vez de ficar
pendurada. O jwt.io verifica na thread principal, por isso uma
assinatura lenta é uma página lenta. A mesma arquitetura protege o
testador de regex do TaskKit (contra backtracking tipo
(a+)+b) e o formatador JSON (contra parses de vários
megabytes).
Detalhes do editor que importam no dia a dia
- Realce tricolor na entrada. As duas ferramentas colorem os três segmentos do token, mas o jwt.io só o faz num painel «Decoded» só de leitura. O TaskKit colore os segmentos no próprio textarea onde editas, o que facilita detetar um ponto mal colado.
- Etiquetas de claim sempre visíveis. Os nomes
legíveis do jwt.io (
iat → "Issued at") estão atrás de um separador «Claims Breakdown». O TaskKit mostra-os em linha, sob o payload, para que dados e descrições fiquem à vista de uma só vez. - Tratamento honesto de
x5c. Quando o headerx5cde um token é usado para verificar, o chip de resultado do TaskKit diz «verificado com o certificado x5c do header do token (cadeia não validada)», sem sugerir confiança ponta a ponta. Validar a cadeia até uma autoridade raiz exigiria descarregar as raízes de CA e fica fora do âmbito de uma ferramenta puramente no navegador. - Toggle base64url para HMAC. Algumas chaves HMAC são
guardadas como bytes codificados em base64url (por exemplo, uma
chave
octde um JWKS com um campok). Um pequeno toggle ao lado do chip de algoritmo muda a entrada do segredo entre string literal e bytes base64url, para não teres de descodificar à mão. - Entrada de chave EdDSA em bruto. Cola um Ed25519 como 64 caracteres hex, 43 caracteres base64url, JWK ou PEM. O jwt.io só espera PEM ou JWK.
Onde o jwt.io é mais forte
Um comparativo útil não é um pitch unilateral. Três coisas o jwt.io faz claramente melhor hoje:
- Diretório de bibliotecas. Um índice curado e pesquisável de bibliotecas JWT por linguagem. Se procuras uma implementação para um serviço, o diretório do jwt.io é a morada certa.
- Introdução extensa. Uma página canónica «O que é um JWT» que explica o conceito com profundidade suficiente para o transmitires de cabo a rabo. O texto explicativo sob o descodificador do TaskKit é mais curto e centrado na ferramenta.
- Links por claim para o RFC. Cada claim registado liga à secção do RFC que o define. Uma minudência, mas útil quando estás a verificar conformidade com a especificação.
O que o TaskKit deixa de fora deliberadamente
Uma garantia de privacidade é mais fácil de manter se não houver portas traseiras montadas. Algumas funcionalidades que outras ferramentas oferecem faltam aqui de propósito.
- Auto-discovery OIDC. Algumas ferramentas
deixam-te colar uma URL de issuer e descarregam silenciosamente
.well-known/openid-configurationpara obter as chaves. Isso é um pedido de saída do teu navegador para um terceiro — e a própria URL pode revelar detalhes do deployment. O TaskKit exige que coles tu o JWKS. - Campo "JWKS por URL". Mesma justificação. Um
curlde uma linha no teu terminal vence um fetch de saída a partir da página que estás a depurar. - Analítica por defeito. O código suporta um token opcional do Cloudflare Web Analytics (preserva privacidade), mas fica desativado a não ser que o operador o ative explicitamente. A versão alojada em taskkit.net também o tem desativado.
- Contas e histórico do lado do servidor. Guardar e partilhar acontecem por fragmentos de URL quando suportados. Nada é guardado num servidor porque não há servidor.
Experimenta as ferramentas JWT do TaskKit
Descodificador JWT
Cola um token, inspeciona claims e verifica a assinatura contra uma chave, um JWKS ou um certificado x5c embutido.
Codificador JWT
Assina tokens localmente com HS, RS, PS, ES ou EdDSA. A chave privada fica no separador.
Metodologia
Testado a 2026-05-05 no Chrome com cache e cookies first-party apagadas. Os pedidos de rede foram contados desde o carregamento da página até à primeira tecla pressionada. A matriz de funcionalidades reflete o comportamento das duas ferramentas nessa data e é revisitada quando alguma delas publica uma alteração relevante.
jwt.io é uma marca do seu titular respetivo. Esta página não está associada ao jwt.io nem conta com o seu apoio.