Base62-encoder en -decoder

Zet tekst, hex-bytes of bestanden om naar Base62 en terug. De uitvoer bevat alleen cijfers en letters en is daardoor zonder escaping bruikbaar in URL's, bestandsnamen en ID's.

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Kies Coderen om tekst naar Base62 om te zetten, of Decoderen om Base62 terug te zetten naar tekst.
  2. Kies bij Alfabet de volgorde die bij je systeem past: 0-9 A-Z a-z (standaard) of 0-9 a-z A-Z.
  3. Typ of plak je invoer, of open met Bestand openen een klein bestand (tot ongeveer 20 KB).
  4. Kopieer het resultaat met Kopiëren of sla het met Downloaden op als bestand.

Wat is Base62?

Base62 gebruikt de tien cijfers, de 26 hoofdletters en de 26 kleine letters. Het is het grootste alfabet dat alleen uit letters en cijfers bestaat, dus het resultaat heeft geen escaping nodig in URL's, bestandsnamen, databasesleutels of ID's in code. Elk teken draagt ongeveer 5,95 bits, waardoor de uitvoer ongeveer 1,34 keer zo groot is als de invoer. Dat is bijna even compact als Base64, maar zonder +, /, =, - of _.

Omdat 62 geen macht van twee is, behandelt deze tool de hele invoer als één groot getal en zet die om naar grondtal 62, net als bij Base58 en Base36. Elke voorloopnulbyte wordt als een voorloop-0 geschreven, zodat hij heen en terug behouden blijft. De invoer is beperkt tot ongeveer 20 KB, omdat de berekening bij grote hoeveelheden gegevens traag wordt.

Er is niet één Base62-standaard

Anders dan Base64 heeft Base62 geen RFC, en implementaties verschillen op punten waardoor hun uitvoer onderling niet compatibel is:

  • Alfabetvolgorde. Deze tool biedt 0-9A-Za-z (de standaard) en 0-9a-zA-Z. Sommige andere bibliotheken zetten de letters vóór de cijfers.
  • Voorloopnullen. Sommige implementaties houden één 0 per voorloopnulbyte aan, zoals deze tool, andere laten ze weg, en formaten met een vaste lengte vullen het resultaat aan tot een vaste breedte.
  • Wat er wordt gecodeerd. Veel Base62-functies coderen een geheel getal, zoals een database-ID, in plaats van een reeks bytes. Andere verdelen de gegevens in blokken van vaste grootte.

Levert een string uit een ander systeem hier onzin op, probeer dan de andere alfabetoptie. Lukt het dan nog steeds niet, dan gebruikt dat systeem waarschijnlijk een andere methode.

Waar Base62 wordt gebruikt

URL-verkorters maken van een automatisch oplopende ID een korte code: zeven Base62-tekens dekken meer dan 3,5 biljoen waarden. Sorteerbare ID's zoals KSUID gebruiken een vaste Base62-vorm van 27 tekens, en veel diensten gebruiken Base62 voor API-sleutels en tokens, omdat je met een dubbelklik de hele string selecteert en hem overal kunt plakken. Om één geheel getal om te zetten, gebruik je de talstelselconverter of een paar regels code:

// JavaScript: geheel getal (BigInt) naar Base62
const A = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function toBase62(n) {
  let s = '';
  do { s = A[Number(n % 62n)] + s; n /= 62n; } while (n > 0n);
  return s;
}
toBase62(123456789n);   // '8M0kX'

Specificatie

Alfabet0-9 A-Z a-z
UitvoergrootteOngeveer 134% (conversie als groot getal)
OpvullingGeen
StandaardGeen formele standaard
HoofdlettergevoeligJa

Voorbeelden

Invoer (UTF-8)Uitvoer
Hello, World!1wJfrzvdbtXUOlUjUf
Base64.isNWxjrFq4r3rv
你好19PqtKE1t

Veelgestelde vragen

Is Base62 URL-veilig?
Ja. Het gebruikt alleen A-Z, a-z en 0-9, en die hoeven in URL's nooit te worden ge-escapet. Base64URL is ook URL-veilig, maar bevat de tekens - en _.
Waarom levert mijn Base62-string bij het decoderen de verkeerde tekst op?

Base62-implementaties verschillen in alfabetvolgorde en methode. Wissel tussen de alfabetten 0-9A-Za-z en 0-9a-zA-Z. Werkt geen van beide, dan is de string waarschijnlijk gemaakt van een geheel getal of met een ander algoritme.

Is Base62 hoofdlettergevoelig?

Ja. Hoofdletters en kleine letters staan voor verschillende waarden, dus een Base62-string mag nooit naar hoofdletters of kleine letters worden omgezet.

Kies ik Base62 of Base58?
Base58 laat 0, O, I en l weg, zodat mensen ze niet verwarren als ze een string met de hand overnemen. Base62 behoudt alle letters en cijfers en is iets korter. Kies Base58 voor strings die mensen typen en Base62 voor strings die door machines worden verwerkt.