Charger un fichier
  1. base64hub
  2. Outils web et jetons
  3. Encodeur Base64URL

Encodeur Base64URL : Base64 URL-safe en ligne

Encodez du texte en Base64 URL-safe : - et _ remplacent + et /, et le = final est supprimé. Le résultat se place dans une URL, un cookie ou un jeton sans autre échappement.

Gratuit sans inscription, sans limites Local rien n'est envoyé RFC 4648 alphabet de la section 5 Mis à jour 27 oct. 2026
Entrée 0 BSortie 0 BTaille –

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment encoder en Base64URL

  1. Saisissez ou collez le texte dans Entrée · texte.
  2. Copiez le Base64URL depuis Sortie · Base64. URL-safe (- _) et Sans remplissage (=) sont déjà cochés sur cette page.
  3. Si le destinataire veut le remplissage, décochez Sans remplissage (=). S’il veut du Base64 standard, décochez aussi URL-safe, ou utilisez l’encodeur Base64.
  4. Copiez la sortie ou téléchargez-la sous base64.txt.

Décodez une valeur avec le décodeur Base64URL. Base64 en Base64URL convertit des chaînes existantes d’un alphabet à l’autre.

Ce qui change par rapport au Base64 standard

Seuls trois caractères diffèrent. Tout le reste, y compris la règle 3 octets pour 4 caractères, reste identique :

Base64 standardBase64URL
Valeur 62+-
Valeur 63/_
Remplissage= obligatoiregénéralement omis
Défini dansRFC 4648, section 4RFC 4648, section 5

Pour beaucoup de chaînes courtes, les deux variantes ne diffèrent que par le remplissage. La différence d’alphabet apparaît dès qu’un groupe de 6 bits vaut 62 ou 63, ce que produisent des caractères comme ? et > et beaucoup d’octets non ASCII :

EntréeStandardBase64URL, sans remplissage
Hi!SGkhSGkh
?>?>Pz4/Pg==Pz4_Pg
subjects?_dc3ViamVjdHM/X2Q=c3ViamVjdHM_X2Q
https://example.com/?q=1aHR0cHM6Ly9leGFtcGxlLmNvbS8/cT0xaHR0cHM6Ly9leGFtcGxlLmNvbS8_cT0x

Base64 ou Base64URL revient plus en détail sur l’historique et les différences de décodage.

Pourquoi les URL ont besoin de leur propre alphabet

Chacun des trois caractères standard a un sens dans une URL. / sépare les segments du chemin, = sépare noms et valeurs dans une query string, et + est lu comme une espace par les décodeurs de formulaires. Une valeur Base64 standard comme a+b/c== dans un paramètre de requête arrive sous la forme a b/c== si chaque caractère n’a pas été échappé. L’encodage pourcent règle le problème, mais transforme chacun d’eux en trois caractères (%2B, %2F, %3D).

Le Base64URL choisit deux caractères non réservés dans les URL et supprime le remplissage : une valeur peut ainsi être collée telle quelle dans un chemin, une query string, un fragment, un cookie ou un nom de fichier. - et _ sont aussi sans risque dans les noms de fichiers sur tous les systèmes de fichiers courants, contrairement à /.

Où le Base64URL est utilisé

  • JWT et JOSE. Chaque partie d’un JSON Web Token est en Base64URL sans remplissage, comme le définit la RFC 7515. Le décodeur JWT lit les jetons ; Base64 dans les JWT explique la structure.
  • OAuth PKCE. Le code_challenge est le Base64URL du hachage SHA-256 du code_verifier.
  • WebAuthn et passkeys. Les identifiants de credentials et les challenges circulent en Base64URL dans du JSON.
  • Liens et identifiants. Les liens de partage, les paramètres d’URL signés et les identifiants courts construits à partir d’octets aléatoires l’utilisent pour garder des URL propres.

Le Base64URL dans le code

Node.js dispose d’un encodage base64url intégré, et Python d’une fonction URL-safe dont vous retirez vous-même le remplissage :

// 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'

Plus de détails dans Base64 en Node.js, JavaScript et Python, et sur l’API du navigateur dans Uint8Array.toBase64.

FAQ

Qu'est-ce que le Base64URL ?

La variante de Base64 sûre pour les URL et les noms de fichiers, définie dans la RFC 4648, section 5. Elle utilise - et _ comme deux derniers caractères de l’alphabet au lieu de + et /, et s’écrit généralement sans remplissage =.

Pourquoi ne pas simplement encoder en pourcent du Base64 normal ?

Cela fonctionne, mais coûte trois caractères pour chaque +, / et =, et un échappement oublié transforme + en espace lors de l’analyse de la query string. Le Base64URL évite ces deux problèmes.

Faut-il garder le remplissage = ?

Les JWT et la plupart des formats URL-safe l’omettent, car = doit lui aussi être échappé dans les URL et le décodeur peut déduire le remplissage de la longueur. Ne le gardez que si le système destinataire l’exige : décochez Sans remplissage.

Comment créer un code_challenge PKCE ?

Hachez le code_verifier en SHA-256 et encodez les 32 octets du hachage en Base64URL sans remplissage. Cette page encode du texte, pas des octets de hachage : faites-le dans le code ; l’extrait ci-dessous reproduit l’exemple de la RFC 7636.