Como decodificar Base64URL
- Cole a string em Entrada · Base64. A página abre com um exemplo URL-safe.
- Leia o resultado em Saída · texto. A linha de status mostra a variante (Base64URL ou Standard), a contagem de bytes decodificados e o tipo detectado. Se faltava preenchimento, aparece “Preenchimento ausente adicionado automaticamente.”
- JSON, o conteúdo habitual dos tokens, é indentado pela opção Formatar JSON.
- Para conteúdo binário, como hashes ou IDs aleatórios, a ferramenta avisa que os dados são binários e indica um decodificador adequado.
- Use Copiar saída ou Baixar para levar o resultado.
Para codificar, use o codificador Base64URL. Para converter uma string Base64URL em Base64 padrão sem decodificá-la, use Base64URL para Base64.
Exemplos
| Base64URL | Decodificado | Observação |
|---|---|---|
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 | {"alg":"HS256","typ":"JWT"} | Um header de JWT típico |
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImFkbWluIjp0cnVlfQ | {"sub":"1234567890","name":"Ada","admin":true} | Um payload de JWT; preenchimento restaurado |
c3ViamVjdHM_X2Q | subjects?_d | _ é a / URL-safe |
8J-Riw | 👋 | - é o + URL-safe |
E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM | 32 bytes binários | Um hash SHA-256, o exemplo de PKCE da RFC 7636 |
Para o hash da última linha, a saída em texto não faz sentido. Abra em Base64 para hex para ver os bytes como 13 d3 1e 96 ....
Preenchimento e por que ele pode ser restaurado
O Base64URL costuma ser escrito sem =. Isso não perde informação: uma string válida tem comprimento 4n, 4n + 2 ou 4n + 3 caracteres, e o resto diz ao decodificador se o último grupo tem um ou dois bytes. A ferramenta adiciona os = ausentes antes de decodificar e avisa na linha de status.
Um comprimento 4n + 1 nunca pode acontecer. Se você vir o erro “Comprimento incorreto: há um caractere a mais ou a menos”, um caractere se perdeu ou sobrou quando o valor foi copiado, por exemplo em uma quebra de linha de e-mail ou de log. Preenchimento explicado mostra a conta.
Muitos decodificadores padrão são menos tolerantes. O atob() dos navegadores rejeita - e _ com InvalidCharacterError, e o base64.urlsafe_b64decode do Python lança Incorrect padding quando falta =.
Tokens, cookies e parâmetros de URL
- JWT. Um token tem a forma
xxxxx.yyyyy.zzzzz. As duas primeiras partes são JSON em Base64URL; a terceira é a assinatura, que é binária. Decodifique as partes uma de cada vez aqui ou cole o token inteiro no decodificador de JWT, que também mostra a expiração e verifica assinaturas. Base64 em JWT explica o formato. - Cookies e IDs de sessão. Alguns cookies de sessão de frameworks, como os do Flask, juntam dados em Base64URL e uma assinatura com pontos. Decodifique só a parte dos dados.
- Parâmetros de URL. O
statedo OAuth, destinos de redirecionamento e links de compartilhamento às vezes levam JSON em Base64URL. Se o valor tiver%2Fou%2B, ele recebeu codificação percentual por cima e precisa de decodificação de URL antes.
Se uma string mistura - ou _ com + ou /, o decodificador para com “A entrada mistura caracteres padrão (+ /) e URL-safe (- _)”. Isso geralmente significa que dois valores foram concatenados ou que um foi convertido só em parte.
Decodificar Base64URL no código
// Node.js
Buffer.from("c3ViamVjdHM_X2Q", "base64url").toString("utf8"); // "subjects?_d"
// Browsers with Uint8Array.fromBase64
new TextDecoder().decode(Uint8Array.fromBase64("c3ViamVjdHM_X2Q", { alphabet: "base64url" }));
import base64
def b64url_decode(s: str) -> bytes:
return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))
b64url_decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9") # b'{"alg":"HS256","typ":"JWT"}'
A linha do preenchimento funciona para qualquer comprimento de entrada que seja Base64 válido. Mais em Base64 no Node.js, JavaScript e Python.
Perguntas frequentes
Como decodificar Base64URL?
Cole a string acima; nenhuma configuração é necessária. No código, troque - por + e _ por /, adicione = até o comprimento ser múltiplo de 4 e decodifique como Base64 normal, ou use um decodificador URL-safe como o Buffer.from(s, "base64url") do Node.
Por que aparece um erro sobre o caractere "."?
Você colou um JWT inteiro. As três partes dele são separadas por pontos, e cada parte precisa ser decodificada separadamente. Cole uma parte só ou use o decodificador de JWT para o token completo.
Por que a linha de status diz Standard para minha string Base64URL?
A string não contém nenhum dos caracteres -, _, + ou /, então é válida nos dois alfabetos e decodifica igual em qualquer um. Muitos headers de JWT são assim.
E se o valor ainda estiver com codificação percentual?
Um = codificado (%3D) é tratado. Outros escapes, como %2F, indicam que o valor passou por codificação de URL; passe-o antes pelo decodificador de URL.