Base62-koder og -dekoder

Konverter tekst, hex-byte eller filer til Base62 og tilbake. Utdataene inneholder bare sifre og bokstaver, så de kan brukes i URL-er, filnavn og identifikatorer uten escaping.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Velg Kode for å gjøre tekst om til Base62, eller Dekode for å gjøre Base62 om til tekst igjen.
  2. Velg den alfabetrekkefølgen som passer systemet ditt: 0-9 A-Z a-z (standard) eller 0-9 a-z A-Z.
  3. Skriv eller lim inn inndataene, eller åpne en liten fil (opptil omtrent 20 KB).
  4. Kopier resultatet eller last det ned som en fil.

Hva er Base62?

Base62 bruker de ti sifrene, de 26 store bokstavene og de 26 små bokstavene. Det er det største alfabetet som bare består av bokstaver og sifre, så resultatet trenger ingen escaping i URL-er, filnavn, databasenøkler eller identifikatorer i kode. Hvert tegn bærer omtrent 5,95 bit, noe som gjør utdataene omtrent 1,34 ganger så store som inndataene. Det er nesten like kompakt som Base64, men uten +, /, =, - eller _.

Fordi 62 ikke er en potens av to, behandler dette verktøyet hele inndataene som ett stort tall og konverterer det til grunntall 62, slik som Base58 og Base36. Hver innledende nullbyte skrives som en innledende 0, slik at den overlever konverteringen fram og tilbake. Inndataene er begrenset til omtrent 20 KB fordi aritmetikken går tregere for store datamengder.

Det finnes ingen felles Base62-standard

I motsetning til Base64 har Base62 ingen RFC, og implementasjonene varierer på måter som gjør utdataene deres inkompatible:

  • Alfabetrekkefølge. Dette verktøyet tilbyr 0-9A-Za-z (standard) og 0-9a-zA-Z. Noen andre biblioteker setter bokstavene foran sifrene.
  • Innledende nuller. Noen implementasjoner beholder én 0 per innledende nullbyte, slik dette verktøyet gjør, andre fjerner dem, og formater med fast lengde fyller ut resultatet til en bestemt bredde.
  • Hva som kodes. Mange Base62-funksjoner koder et heltall, for eksempel en database-ID, i stedet for en sekvens av byte. Andre deler dataene opp i blokker med fast størrelse.

Hvis en streng fra et annet system dekodes til rot her, kan du prøve det andre alfabetvalget. Hvis det fortsatt ikke fungerer, bruker det systemet sannsynligvis en annen metode.

Hvor Base62 brukes

URL-forkortere gjør en automatisk økende ID om til en kort kode: Sju Base62-tegn dekker over 3 500 milliarder verdier. Sorterbare ID-er som KSUID bruker en fast Base62-form på 27 tegn, og mange tjenester bruker Base62 til API-nøkler og tokener fordi et dobbeltklikk merker hele strengen og den kan limes inn hvor som helst. For å konvertere ett enkelt heltall kan du bruke tallsystemkonverteren eller noen få linjer kode:

// JavaScript: heltall (BigInt) til 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'

Spesifikasjon

Alfabet0-9 A-Z a-z
UtdatastørrelseOmtrent 134 % (konvertering som stort heltall)
UtfyllingIngen
StandardIngen formell standard
Skiller store og små bokstaverJa

Eksempler

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

Ofte stilte spørsmål

Er Base62 URL-sikker?
Ja. Den bruker bare A-Z, a-z og 0-9, som aldri trenger escaping i URL-er. Base64URL er også URL-sikker, men inneholder tegnene - og _.
Hvorfor dekodes Base62-strengen min til feil tekst?

Base62-implementasjoner varierer i alfabetrekkefølge og metode. Bytt mellom alfabetene 0-9A-Za-z og 0-9a-zA-Z. Hvis ingen av dem fungerer, ble strengen sannsynligvis laget fra et heltall eller med en annen algoritme.

Skiller Base62 mellom store og små bokstaver?

Ja. Store og små bokstaver står for ulike verdier, så en Base62-streng må aldri gjøres om til bare store eller bare små bokstaver.

Bør jeg bruke Base62 eller Base58?
Base58 utelater 0, O, I og l slik at folk ikke forveksler dem når de skriver av for hånd. Base62 beholder alle bokstaver og sifre og er litt kortere. Velg Base58 for strenger som folk skriver inn, og Base62 for strenger som maskiner håndterer.