Codificador e Gerador JWT
Gerador e codificador JWT online grátis. Monte o cabeçalho e a carga útil, assine com HS256, RS256 ou ES256 instantaneamente. 100% no navegador — seu segredo e sua chave nunca saem do dispositivo.
O que é um Codificador JWT?
Um codificador JWT monta e assina criptograficamente um JSON Web Token a partir de um cabeçalho e de uma carga útil de reivindicações. Um JWT, definido na RFC 7519, são três seções codificadas em Base64URL unidas por pontos: header.payload.signature. O cabeçalho nomeia o algoritmo de assinatura; a carga útil transporta as reivindicações (sobre quem é o token, o que ele pode fazer, quando expira); e a assinatura é uma prova criptográfica, calculada sobre o cabeçalho e a carga útil com um segredo ou chave privada, que permite ao destinatário detectar adulteração.
"JSON Web Token (JWT) é um formato compacto de representação de reivindicações destinado a ambientes com restrição de espaço, como cabeçalhos de autorização HTTP e parâmetros de consulta de URI." — RFC 7519, Seção 1
Codificar é o inverso de decodificar. Um decodificador JWT lê as reivindicações de um token existente; um codificador recebe reivindicações que você fornece e produz um token assinado totalmente novo. A etapa de assinatura é o que separa um JWT real de um Base64 arbitrário — sem uma assinatura válida, nenhum verificador aceitará o token. Esta ferramenta assina usando a Web Crypto API nativa do navegador nas famílias HMAC (HS), RSA (RS, PS) e ECDSA (ES), então toda a operação acontece no seu dispositivo com zero dependências e zero chamadas de rede.
Os desenvolvedores recorrem a um codificador JWT constantemente: para cunhar um token que exercita um endpoint de API protegido, para reproduzir o formato exato de reivindicações que um servidor OAuth emite a fim de depurar um bug, para construir fixtures para testes de integração ou para entregar a um colega um token Bearer pronto para uso em um comando curl. Como a carga útil é codificada, não criptografada, um JWT é seguro para trafegar pela rede, mas nunca deve transportar segredos — qualquer um com o token pode ler todas as reivindicações, e só a assinatura impede que ele altere alguma.
O trabalho com JWT se combina naturalmente com outras ferramentas de desenvolvedor. Após assinar, decodifique o token para confirmar suas reivindicações, converta exp e iat entre o tempo Unix e datas legíveis, ou calcule um hash SHA-256 quando precisar da função de hash subjacente sobre a qual o HMAC do HS256 é construído. Como cada segmento JWT é codificado em Base64URL, uma ferramenta Base64 é útil quando você inspeciona um token manualmente; para um olhar aprofundado sobre a codificação, veja nosso guia de fundamentos de Base64.
// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
const b64url = (bytes) =>
btoa(String.fromCharCode(...new Uint8Array(bytes)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
const enc = (obj) =>
b64url(new TextEncoder().encode(JSON.stringify(obj)));
const header = { alg: 'HS256', typ: 'JWT' };
const signingInput = `${enc(header)}.${enc(payload)}`;
const key = await crypto.subtle.importKey(
'raw', new TextEncoder().encode(secret),
{ name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const sig = await crypto.subtle.sign(
'HMAC', key, new TextEncoder().encode(signingInput));
return `${signingInput}.${b64url(sig)}`;
}
const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0.... Recursos principais
Gere e Assine JWTs Instantaneamente
Edite a carga útil e veja o token assinado atualizar em tempo real — cabeçalho, carga útil e assinatura calculados na hora. Sem botão Gerar, sem ida e volta a um servidor.
Cobertura Completa de Algoritmos
Assine com HS256/384/512, RS256/384/512, PS256/384/512 e ES256/384/512 — todas as famílias JWS comuns, todas via a Web Crypto API nativa do navegador.
As Chaves Nunca Saem do Seu Dispositivo
Seu segredo e chave privada PKCS8 são usados inteiramente no navegador. Nada é enviado, registrado ou armazenado — seguro para desenvolvimento e resposta a incidentes.
Auxiliares de Reivindicação Rápida
Insira iss, sub, aud, iat, nbf ou um exp de uma hora com um único clique — sem timestamps Unix manuais, sem deslizes de sintaxe.
Saída Destacada por Cores
O token assinado é segmentado em cabeçalho, carga útil e assinatura com cores distintas, então a estrutura é óbvia num relance e fácil de copiar.
Zero Dependências
Construído apenas sobre a Web Crypto API do navegador e JSON — sem bibliotecas externas, sem telemetria, sem chamadas de rede de qualquer tipo.
Exemplos
Token de Sessão HS256
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>
Um token HMAC-SHA256 assinado com um segredo compartilhado — a configuração mais comum para autenticação de sessão sem estado. Qualquer um que possua o mesmo segredo pode verificá-lo.
Token de Acesso RS256
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"scope": "read:user write:post",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8) eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>
Um token de acesso estilo OAuth assinado com RSA. O token é assinado com sua chave privada e verificado por qualquer um que possua a chave pública correspondente — ideal quando o verificador não deve ser capaz de cunhar tokens.
Token Compacto ES256
{
"sub": "device-42",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256) eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>
Um token ECDSA na curva P-256. As assinaturas ES256 são bem mais curtas que as RSA, oferecendo segurança equivalente, o que mantém o token pequeno para ambientes com restrições.
Como usar
- 1
Edite as Reivindicações da Carga Útil
Escreva as reivindicações que seu token precisa como JSON no editor de carga útil. Use os chips de reivindicação rápida para inserir iss, sub, aud, iat, nbf ou um exp de uma hora sem digitar timestamps.
- 2
Escolha o Algoritmo e Insira a Chave
Escolha um algoritmo de assinatura. Para HS256/384/512 insira um segredo; para os algoritmos RS, PS ou ES cole uma chave privada PEM PKCS8. O token é assinado localmente conforme você digita.
- 3
Copie o JWT Assinado
O token assinado aparece instantaneamente, destacado por cores por segmento. Clique em Copiar para levá-lo a um cabeçalho Authorization, comando curl ou teste. Sua chave nunca saiu do seu navegador.
Common Errors
Usar um Segredo HMAC Fraco
A segurança do HS256 depende inteiramente da entropia do segredo. Um segredo curto ou previsível permite que atacantes o quebrem por força bruta e forjem tokens. Use pelo menos 256 bits de aleatoriedade.
secret: "password123" // guessable, low entropy
secret: base64(crypto.randomBytes(32)) // >=256 random bits
Omitir a Reivindicação exp
Um token sem exp nunca expira. Se vazar, não há ponto natural de revogação. Sempre defina uma expiração apropriada ao tipo de token.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } Colar uma Chave PKCS1 em Vez de PKCS8
A Web Crypto API importa apenas chaves privadas PKCS8. Uma chave RSA PKCS1 tradicional falha ao importar — converta-a primeiro.
-----BEGIN RSA PRIVATE KEY----- // PKCS1, not supported
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem
Casos de uso comuns
- Gere Tokens para Teste de API
- Gere um token Bearer HS256 em segundos para exercitar um endpoint protegido a partir do curl, Postman ou um teste de integração.
- Reproduza Tokens OAuth e OIDC
- Monte um token RS256 ou ES256 que espelha o que seu servidor de autorização emite, para que você possa depurar incompatibilidades de reivindicações e audiência.
- Crie Fixtures de Teste
- Produza tokens assinados determinísticos para testes unitários e de integração sem precisar subir um servidor de autenticação completo.
- Depure Falhas de Autorização
- Recrie o formato de token de um cliente — issuer, audience, scope, expiração — para descobrir por que um backend o rejeita.
- Valide um Verificador
- Assine tokens com uma chave conhecida para confirmar que seu middleware de verificação aceita tokens válidos e rejeita os adulterados.
- Prototipe Fluxos de Autenticação
- Entregue aos colegas tokens prontos para uso enquanto configura um novo login, microsserviço ou chamada entre serviços.
Detalhes técnicos
- Conforme a RFC 7519 / 7515 / 7518
- Produz tokens JWS em conformidade com a RFC 7519 (JWT), RFC 7515 (JWS) e RFC 7518 (JWA), com os identificadores de algoritmo registrados no cabeçalho.
- Assinatura Nativa via Web Crypto
- Assina via crypto.subtle para HMAC, RSASSA-PKCS1-v1_5, RSA-PSS e ECDSA. As assinaturas ECDSA são emitidas como r||s bruto, exatamente como o JWS requer.
- Base64URL, Zero Dependências
- Cabeçalho e carga útil são codificados em Base64URL com o alfabeto seguro para URL (RFC 4648), sem preenchimento. Sem bibliotecas externas, sem chamadas de rede, sem telemetria.
Melhores práticas
- Sempre Defina uma Expiração
- Inclua uma reivindicação exp para que um token vazado deixe de ser válido. Tempos de vida curtos reduzem o raio de impacto — minutos para tokens de acesso, não dias.
- Mantenha Segredos Fora da Carga Útil
- Uma carga útil JWT é legível por qualquer um com o token. Coloque nela identificadores e escopos; nunca senhas, chaves de API ou PII completa.
- Assine no Servidor em Produção
- Use esta ferramenta para testes e depuração. Em sistemas reais, assine tokens no servidor com uma biblioteca mantida e uma chave do seu gerenciador de segredos.
Perguntas frequentes
Como gerar um JWT online?
O que é um gerador de JWT?
header.payload.signature que você pode usar como token Bearer. É o inverso de um decodificador JWT: em vez de ler um token existente, ele cria um novo assinado com seu segredo (HS256) ou chave privada (RS256/ES256). Este gerador é executado inteiramente no seu navegador, então o token é produzido instantaneamente e sua chave de assinatura nunca sai do seu dispositivo. Este gerador de JWT é grátis e seguro de usar?
É seguro inserir meu segredo ou chave privada aqui?
Qual é a diferença entre HS256 e RS256?
Quais algoritmos este codificador JWT suporta?
Como defino a reivindicação exp (expiração)?
exp à carga útil como um timestamp Unix em segundos — por exemplo "exp": 1999999999. A forma mais rápida é o chip exp +1h abaixo da carga útil, que insere uma expiração de uma hora a partir de agora. Você também pode adicionar iat (issued-at) e nbf (not-before) da mesma maneira. Lembre-se de que exp está em segundos, não milissegundos, e que os verificadores o comparam com o próprio relógio, então mantenha os horários dos servidores sincronizados para evitar rejeições prematuras. Para converter uma data legível em um timestamp Unix, use nosso conversor de timestamp Unix. Como obtenho uma chave privada PEM PKCS8 para RS256 ou ES256?
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Para ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Ambos os comandos emitem um bloco PEM PKCS8 começando com -----BEGIN PRIVATE KEY-----, que é exatamente o que esta ferramenta espera. Cole o bloco inteiro, incluindo as linhas de cabeçalho e rodapé. A chave pública correspondente — usada para verificar o token — pode ser derivada com openssl pkey -in private.pem -pubout. Como verifico o token que acabei de gerar?
jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) em Node.js, PyJWT.decode(token, key, algorithms=['RS256']) em Python, ou jwt.Parse(token, keyFunc) em Go. Nunca verifique com uma lista de algoritmos vazia ou com verify_signature=False em produção — sempre fixe o algoritmo exato que você espera. O que devo colocar na carga útil?
iss (issuer), sub (subject — normalmente um ID de usuário), aud (audience), exp (expiração), nbf (not before), iat (issued at) e jti (ID do token). Junto a estas você pode adicionar reivindicações de aplicação como role, scope ou email. Não coloque segredos na carga útil — um JWT é codificado, não criptografado, então qualquer um com o token pode ler todas as reivindicações. Mantenha os tokens abaixo de cerca de 4 KB para que caibam em cabeçalhos Authorization e cookies. Um JWT é criptografado?
Por que minha assinatura RS256 ou ES256 está falhando?
-----BEGIN RSA PRIVATE KEY----- (PKCS1) com openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem; (2) a curva não corresponde ao algoritmo — ES256 precisa de uma chave P-256, ES384 precisa de P-384, ES512 precisa de P-521; (3) você colou uma chave pública ou um certificado em vez da chave privada; ou (4) a chave está criptografada com uma senha, que a Web Crypto API não consegue importar diretamente. Descriptografe-a primeiro com openssl pkey e cole o bloco PKCS8 não criptografado. Esta ferramenta suporta o token não assinado alg:none?
alg:none não tem assinatura, o que significa que qualquer um pode forjar um — é a raiz de uma vulnerabilidade clássica de bypass de autenticação JWT. Como o propósito de um codificador é produzir um token assinado, esta ferramenta oferece apenas algoritmos de assinatura reais. Se você está estudando alg:none para pesquisa de segurança, pode construir um manualmente codificando o cabeçalho e a carga útil em Base64URL e deixando o segmento de assinatura vazio — o token ainda termina com um ponto final (header.payload.) — mas você nunca deve aceitar tal token em produção. Posso gerar um JWT em código?
jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). Em Python: jwt.encode(payload, key, algorithm='RS256') com PyJWT. Em Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Esta ferramenta é a forma mais rápida de produzir um token para um teste rápido, uma requisição curl ou um fixture — mas em código de aplicação você deve gerar tokens no servidor com uma biblioteca mantida e uma chave carregada do seu gerenciador de segredos, nunca fixada no código. Ferramentas relacionadas
Ver todas as ferramentas →Decodificador JWT
Ferramentas de Segurança
Decodifique tokens JWT online com nosso decodificador JWT grátis. Inspecione cabeçalho, carga útil, assinatura, expiração e reivindicações. 100% navegador — seu token nunca sai do dispositivo. Sem cadastro, sem rastreio.
Gerador de Hash MD5 e Ferramenta de Checksum
Ferramentas de Segurança
Gere hashes MD5, SHA-256, SHA-1 e SHA-512 online gratuitamente. Faça hash de texto ou arquivos no navegador, verifique checksums e copie resultados. Sem cadastro necessário.
Gerador de Senhas Aleatórias — Forte e Seguro
Ferramentas de Segurança
Gere senhas aleatórias fortes instantaneamente — grátis, sem cadastro, 100% no navegador. Personalize comprimento e tipos de caracteres, gere em lote até 50. Medidor de força com análise de entropia.
Gerador de Hash SHA-1 (160 bits — Legado)
Ferramentas de Segurança
Gere hashes SHA-1 no navegador — saída hex de 40 caracteres, sem upload. Ferramenta legada para impressões digitais do Git, verificação de certificados antigos e auditorias de migração. Dados nunca saem do dispositivo.
Gerador de Hash SHA-256 e Ferramenta de Checksum
Ferramentas de Segurança
Gere hashes SHA-256 online gratuitamente. Faça hash de texto ou arquivos no navegador, verifique checksums e copie saída hex de 64 caracteres. Sem cadastro; dados nunca saem da página.
Gerador de Hash SHA-3 (Keccak SHA3-256)
Ferramentas de Segurança
Gere hashes SHA-3 online gratuitamente. Construção sponge NIST FIPS 202 — o padrão pós-SHA-2. Saída SHA3-256 em 64 hex. Somente no navegador via js-sha3 carregado sob demanda; zero uploads.