Unealtă gratuită pentru programatori

Encoder / decoder Base64

Codezi sau decodezi text în Base64, inclusiv cu diacritice, alegi varianta URL-safe sau transformi un fișier într-un data URI.

Exemple de Base64

Variante gata făcute: copiază codul direct sau deschide exemplul în generator și modifică-l după nevoie.

Imagine SVG ca data URI Pusă direct în CSS, fără o cerere în plus către server.
.icon {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMCAxMCI+PGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiLz48L3N2Zz4=");
}
Autentificare HTTP Basic utilizator:parola codat în Base64. Nu e criptare: oricine îl poate decoda, deci doar prin HTTPS.
Authorization: Basic dXRpbGl6YXRvcjpwYXJvbGE=
Diacritice corecte în JavaScript btoa() acceptă doar caractere Latin-1; textul trece întâi prin TextEncoder.
const bytes = new TextEncoder().encode('Țară și munți');
const base64 = btoa(String.fromCharCode(...bytes));
// yJphcsSDIMiZaSBtdW7Im2k=
În PHP și în terminal Aceeași codare în alte limbaje.
<?php
echo base64_encode('Salut!');   // U2FsdXQh
echo base64_decode('U2FsdXQh'); // Salut!

# Linux / macOS
echo -n 'Salut!' | base64       # U2FsdXQh
echo 'U2FsdXQh' | base64 -d     # Salut!

Cum folosești encoderul Base64

  1. Alege modul: codează sau decodează.
  2. Scrie sau lipește textul; rezultatul apare imediat. Diacriticele sunt tratate corect, ca UTF-8.
  3. Bifează varianta URL-safe dacă rezultatul ajunge într-o adresă sau într-un token.
  4. Ca să obții un data URI, apasă Alege un fișier. Fișierul este citit în browser; nu se trimite nimic către server.

Ce este Base64

Base64 scrie date binare folosind doar 64 de caractere sigure: A–Z, a–z, 0–9, + și /, plus = pentru completare la final. Fiecare 3 octeți devin 4 caractere, deci rezultatul este cu aproximativ 33% mai mare. Este o codificare, nu o criptare: oricine îl poate decoda, așa că nu ascunde nimic.

Varianta URL-safe înlocuiește + cu - și / cu _, caractere care nu au sens special în adrese, și de obicei renunță la =. O folosesc, de exemplu, token-urile JWT.

Data URI

Un fișier mic poate fi pus direct în HTML sau CSS, fără o cerere separată. Merită doar pentru fișiere foarte mici, pentru că nu se salvează separat în cache și mărește pagina.

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="">

Base64 în cod

În JavaScript, btoa() acceptă doar caractere Latin-1 și dă eroare la „ș” sau „ț”. Transformă întâi textul în octeți UTF-8 cu TextEncoder:

// JavaScript cu diacritice
const octeti = new TextEncoder().encode("Țară și munți");
const b64 = btoa(String.fromCharCode(...octeti));
const text = new TextDecoder().decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0)));

// PHP
base64_encode("Țară și munți");
base64_decode($b64);

# Linux și macOS
echo -n "Țară și munți" | base64
echo "yJphcsSDIMiZaSBtdW7Im2k=" | base64 --decode

Mai multe găsești în Învață JavaScript și Învață Linux.

Întrebări frecvente

De ce rezultatul se termină cu = sau ==?

Este completarea (padding) folosită când lungimea datelor nu se împarte exact la 3. Un = înseamnă că lipsea un octet, două înseamnă că lipseau doi.

De ce iese alt rezultat în terminal?

Fără -n, echo adaugă un rând nou la final, care este codat și el.