Enviar um arquivo
  1. base64hub
  2. Web e tokens
  3. Codificador Base64URL

Codificador Base64URL: Base64 URL-safe online

Codifique texto em Base64 URL-safe: - e _ substituem + e /, e o = final é removido. O resultado vai para uma URL, um cookie ou um token sem nenhum escape adicional.

Grátis sem cadastro, sem limites Local nada é enviado RFC 4648 alfabeto da seção 5 Atualizado 27 de out. de 2026
Entrada 0 BSaída 0 BTamanho –

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como codificar em Base64URL

  1. Digite ou cole o texto em Entrada · texto.
  2. Copie o Base64URL de Saída · Base64. URL-safe (- _) e Sem preenchimento (=) já vêm marcados nesta página.
  3. Se o destino quiser preenchimento, desmarque Sem preenchimento (=). Se quiser Base64 padrão, desmarque também URL-safe ou use o codificador Base64.
  4. Copie a saída ou baixe como base64.txt.

Decodifique um valor com o decodificador Base64URL; para converter strings existentes entre os dois alfabetos, use Base64 para Base64URL.

O que muda em relação ao Base64 padrão

Só três caracteres mudam. Todo o resto, incluindo a regra de 3 bytes para 4 caracteres, continua igual:

Base64 padrãoBase64URL
Valor 62+-
Valor 63/_
Preenchimento= obrigatóriogeralmente omitido
Definido emRFC 4648, seção 4RFC 4648, seção 5

Em muitas strings curtas, as duas variantes diferem só no preenchimento. A diferença de alfabeto aparece sempre que um grupo de 6 bits tem valor 62 ou 63, o que acontece com caracteres como ? e > e com muitos bytes não ASCII:

EntradaPadrãoBase64URL, sem preenchimento
Hi!SGkhSGkh
?>?>Pz4/Pg==Pz4_Pg
subjects?_dc3ViamVjdHM/X2Q=c3ViamVjdHM_X2Q
https://example.com/?q=1aHR0cHM6Ly9leGFtcGxlLmNvbS8/cT0xaHR0cHM6Ly9leGFtcGxlLmNvbS8_cT0x

Base64 vs Base64URL aprofunda o histórico e as diferenças na decodificação.

Por que URLs precisam de um alfabeto próprio

Cada um dos três caracteres padrão tem significado em uma URL. A / separa segmentos do caminho, o = separa nomes de valores em uma query string, e o + é lido como espaço pelos decodificadores de formulário. Um valor Base64 padrão como a+b/c== em um parâmetro de query chega como a b/c==, a menos que cada caractere tenha recebido escape. A codificação percentual resolve, mas transforma cada um deles em três caracteres (%2B, %2F, %3D).

O Base64URL escolhe dois caracteres não reservados em URLs e descarta o preenchimento, então o valor pode ir sem alteração para um caminho, uma query string, um fragmento, um cookie ou um nome de arquivo. - e _ também são seguros em nomes de arquivo em todos os sistemas de arquivos comuns, ao contrário da /.

Onde o Base64URL é usado

  • JWT e JOSE. Todas as partes de um JSON Web Token são Base64URL sem preenchimento, conforme a RFC 7515. O decodificador de JWT lê tokens; Base64 em JWT explica a estrutura.
  • PKCE do OAuth. O code_challenge é o Base64URL do hash SHA-256 do code_verifier.
  • WebAuthn e passkeys. IDs de credenciais e challenges trafegam como Base64URL dentro de JSON.
  • Links e IDs. Links de compartilhamento, parâmetros de URL assinados e IDs curtos feitos de bytes aleatórios usam Base64URL para manter a URL limpa.

Base64URL no código

O Node.js tem a codificação base64url embutida, e o Python uma função URL-safe da qual você mesmo remove o preenchimento:

// Node.js
Buffer.from("subjects?_d").toString("base64url");   // "c3ViamVjdHM_X2Q"

// Browsers with Uint8Array.prototype.toBase64
new TextEncoder().encode("subjects?_d").toBase64({ alphabet: "base64url", omitPadding: true });
import base64, hashlib

base64.urlsafe_b64encode(b"subjects?_d").rstrip(b"=").decode()   # 'c3ViamVjdHM_X2Q'

# PKCE code_challenge, example from RFC 7636 appendix B
verifier = "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
digest = hashlib.sha256(verifier.encode("ascii")).digest()
base64.urlsafe_b64encode(digest).rstrip(b"=").decode()
# 'E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM'

Mais em Base64 no Node.js, JavaScript e Python, e a API do navegador em Uint8Array.toBase64.

Perguntas frequentes

O que é Base64URL?

A variante do Base64 segura para URLs e nomes de arquivo, definida na seção 5 da RFC 4648. Ela usa - e _ como os dois últimos caracteres do alfabeto, no lugar de + e /, e costuma ser escrita sem o preenchimento =.

Por que não aplicar codificação percentual ao Base64 normal?

Funciona, mas custa três caracteres para cada +, / e =, e um escape esquecido transforma + em espaço quando a query string é analisada. O Base64URL evita os dois problemas.

Devo manter o preenchimento =?

O JWT e a maioria dos formatos URL-safe o omitem, porque o = também precisa de escape em URLs e o decodificador consegue deduzir o preenchimento pelo comprimento. Mantenha só se o sistema de destino exigir: desmarque Sem preenchimento.

Como gerar um code_challenge do PKCE?

Calcule o hash SHA-256 do code_verifier e codifique os 32 bytes do hash em Base64URL sem preenchimento. Esta página codifica texto, não bytes de hash, então faça isso no código; o trecho abaixo reproduz o exemplo da RFC 7636.