Skip to content

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.

Sem rastreamento Roda no navegador Grátis
Carga útil (Reivindicações)
Inserir uma reivindicação registrada:
Segredo
Assinado localmente no seu navegador — seu segredo e chave privada nunca saem do seu dispositivo.
Segue o comportamento de assinatura da RFC 7515/7518 com saída verificada de forma cruzada contra um verificador de chave pública independente — Equipe de segurança Go Tools · Jun 11, 2026

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. 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. 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. 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.

✗ Incorreto
secret: "password123"  // guessable, low entropy
✓ Correto
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.

✗ Incorreto
{ "sub": "user_123", "role": "admin" }  // no exp
✓ Correto
{ "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.

✗ Incorreto
-----BEGIN RSA PRIVATE KEY-----  // PKCS1, not supported
✓ Correto
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?
Edite o JSON da carga útil na caixa acima, escolha um algoritmo de assinatura (HS256 é o padrão e precisa apenas de um segredo) e insira seu segredo ou cole uma chave privada PEM PKCS8. O token assinado aparece instantaneamente, com os segmentos de cabeçalho, carga útil e assinatura destacados por cores para que você copie tudo com um clique. A assinatura é executada inteiramente no seu navegador usando a Web Crypto API nativa — não há botão Gerar para esperar e nenhuma requisição a um servidor, então é seguro assinar tokens com chaves reais durante o desenvolvimento.
O que é um gerador de JWT?
Um gerador de JWT é uma ferramenta que monta e assina criptograficamente um JSON Web Token a partir de um cabeçalho e de uma carga útil de reivindicações, produzindo uma string 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?
Sim — é completamente grátis, sem cadastro, sem anúncios e sem rastreamento. É seguro porque toda a assinatura acontece localmente no seu navegador via Web Crypto API: sua carga útil, segredo e chave privada nunca são enviados, registrados ou armazenados, e a ferramenta não faz nenhuma requisição de rede. Isso o torna adequado mesmo quando você está trabalhando com chaves sensíveis, embora usar chaves de teste descartáveis seja sempre o hábito mais seguro.
É seguro inserir meu segredo ou chave privada aqui?
Sim. A assinatura acontece localmente no seu navegador; seu segredo e chave privada nunca são enviados a um servidor, nunca registrados, nunca armazenados e nunca usados para análises. Não há cookies nem rastreamento. Isso importa porque uma chave de assinatura JWT pode cunhar credenciais válidas — colá-la em uma ferramenta remota seria equivalente a entregar as chaves do seu sistema de autenticação. Como tudo roda no lado do cliente, este codificador é seguro para uso com chaves de produção, mas você ainda deve preferir chaves descartáveis ou de teste sempre que possível.
Qual é a diferença entre HS256 e RS256?
HS256 (HMAC-SHA256) usa um único segredo compartilhado tanto para assinar quanto para verificar. É simples e rápido, mas toda parte que pode verificar o token também pode criar um, então o segredo deve permanecer apenas em servidores confiáveis. RS256 (RSA-SHA256) usa um par de chaves: você assina com uma chave privada e os outros verificam com a chave pública. Isso permite distribuir a chave pública livremente — para apps cliente, serviços parceiros ou um endpoint JWKS — sem dar a ninguém a capacidade de forjar tokens. Use HS256 para sistemas simétricos de dono único; use RS256 ou ES256 quando os verificadores não devem ser capazes de cunhar tokens.
Quais algoritmos este codificador JWT suporta?
Ele assina com HS256, HS384, HS512 (HMAC com um segredo compartilhado), RS256, RS384, RS512 (RSA PKCS#1 v1.5), PS256, PS384, PS512 (RSA-PSS) e ES256, ES384, ES512 (ECDSA nas curvas P-256, P-384 e P-521). Todos eles são produzidos com a Web Crypto API nativa do navegador, então não há bibliotecas de terceiros e nada sai da sua máquina. Os algoritmos HMAC recebem um segredo em texto ou Base64; as famílias RSA e ECDSA recebem uma chave privada PEM PKCS8.
Como defino a reivindicação exp (expiração)?
Adicione uma reivindicaçã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?
Para RSA: 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?
Cole-o em nosso decodificador JWT para confirmar que o cabeçalho e a carga útil decodificam como esperado. Para verificar a assinatura, use seu servidor ou um SDK com a chave correta: 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?
Mantenha-a enxuta. As reivindicações registradas da RFC 7519 são 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?
Não. Um JWT assinado padrão (um JWS) é codificado em Base64URL, não criptografado. A assinatura prova que o token não foi adulterado e foi emitido por alguém que possui a chave, mas o cabeçalho e a carga útil são totalmente legíveis por qualquer um que tenha o token. Se você precisa que a própria carga útil seja confidencial, você precisa de um JWE (JWT criptografado), que é um formato diferente. Esta ferramenta produz tokens JWS assinados, o tipo usado na grande maioria dos fluxos de autenticação e autorização.
Por que minha assinatura RS256 ou ES256 está falhando?
As causas mais comuns são: (1) a chave não está no formato PKCS8 — converta uma chave tradicional -----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?
Não, e deliberadamente. Um token 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?
Sim. Em Node.js: 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.