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

Conversor de Base64 para Base64URL (URL-safe)

Cole Base64 padrão para obter a forma URL-safe: + vira -, / vira _ e o preenchimento = é removido, a menos que você marque Preenchimento (=).

Grátis sem cadastro, sem limites Local nada é enviado Atualizado 27 de out. de 2026
Entrada 0Bytes 0 BSaída 0

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

Como converter Base64 para Base64URL

  1. Cole o Base64 em Entrada · Base64. Quebras de linha de Base64 quebrado e um prefixo data:...;base64, são removidos automaticamente.
  2. A string URL-safe aparece em Saída · Base64URL.
  3. Marque Preenchimento (=) abaixo da saída se o destinatário quiser o = final.
  4. Use Copiar saída. O seletor Base64URL → Base64, ou Base64URL para Base64, converte de volta.

A entrada é decodificada para bytes e recodificada, então uma string que não é Base64 válido recebe um erro em vez de um resultado convertido pela metade.

Exemplos

Base64Base64URLObservação
PDw/Pz8+Pg==PDw_Pz8-Pg/ e + trocados, == removido
eyJyb2xlIjoiYWRtaW4+In0=eyJyb2xlIjoiYWRtaW4-In0JSON com um >, um = removido
E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw+cM=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cMo desafio PKCE da RFC 7636, Apêndice B
+/8=-_8os bytes fb ff
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9sem mudança: não tem +, / nem =

A última linha é comum. JSON curto e texto ASCII muitas vezes codificam sem + ou /, e quando o comprimento é múltiplo de 3 bytes também não há preenchimento, então as duas formas são idênticas. É por isso também que uma conversão esquecida pode passar despercebida nos testes até algum valor gerar por acaso um + ou /.

Caracteres do Base64 padrão que quebram URLs

Três caracteres do Base64 padrão têm significado especial em URLs:

  • + significa espaço em query strings, então ?t=a+b chega como a b em muitos frameworks.
  • / separa segmentos do caminho, então Base64 num caminho pode ser dividido ou roteado errado.
  • = separa o nome do parâmetro de query do valor e precisa ser escrito como %3D para ficar seguro.

A seção 5 da RFC 4648 define o Base64URL para esse caso, com - e _ no lugar de + e / e um preenchimento que pode ser omitido. Valores assim dispensam escape em caminhos, query strings, cookies e nomes de arquivo. O artigo Base64 vs Base64URL traz os detalhes.

Onde o Base64URL é obrigatório

  • JWT e JWS. Os três segmentos de um JSON Web Token usam Base64URL sem preenchimento. O decodificador de JWT lê esses segmentos, e Base64 no JWT explica o formato.
  • PKCE do OAuth. Ferramentas de hash muitas vezes imprimem o digest SHA-256 do verifier em Base64 padrão, enquanto o code_challenge precisa ser esse digest em Base64URL sem preenchimento. Esta conversão é o último passo.
  • WebAuthn e JWK. IDs de credencial, desafios e os parâmetros de chave de um JSON Web Key são Base64URL.
  • URLs assinadas e tokens em links, como links de redefinição de senha ou de download, em que o valor fica num caminho ou numa query string.

Para codificar texto direto em Base64URL, sem passar pela forma padrão, use o codificador Base64URL.

Base64 para Base64URL no código

import base64
base64.urlsafe_b64encode(b"<<???>>").rstrip(b"=").decode()   # 'PDw_Pz8-Pg'
Buffer.from("PDw/Pz8+Pg==", "base64").toString("base64url");   // 'PDw_Pz8-Pg'
"PDw/Pz8+Pg==".replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");   // same, without Buffer

O urlsafe_b64encode do Python mantém o preenchimento, daí o rstrip. A codificação "base64url" do Node o remove. Mais nos guias de Python e Node.js.

Perguntas frequentes

Converter para Base64URL altera os dados?

Não. Os dois alfabetos codificam os mesmos bytes; só dois caracteres e o preenchimento mudam. Decodificar qualquer das duas formas dá bytes idênticos.

Na conversão, o preenchimento = sai?

Siga o que o destinatário pede. JWTs (RFC 7515) e PKCE (RFC 7636) exigem que não haja preenchimento. Algumas bibliotecas aceitam as duas formas, e alguns decodificadores mais antigos fazem questão dele; nesse caso, marque Preenchimento (=).

Dá para converter Base64 em Base64URL com uma regex?

Dá: s.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "") em JavaScript. Isso supõe que a entrada é uma única linha limpa; remova as quebras de linha antes se ela veio de um arquivo PEM ou de um e-mail.

Aplicar codificação percentual ao Base64 padrão é uma alternativa?

Funciona, mas +, / e = viram %2B, %2F e %3D, três caracteres cada, e o valor continua quebrando em sistemas que decodificam a URL duas vezes ou leem + como espaço. O Base64URL não tem nenhum desses problemas.