Base64 Decode

Base64 Decode und Encode in einem: Füg einen Token, die Payload einer Data-URI oder einen Config-Wert ein und lies ihn – oder tipp Text ein und bekomm die kodierte Form. Konvertiert beim Tippen in beide Richtungen, kann UTF-8 und das URL-sichere Alphabet und sagt dir bei einem kaputten String, was falsch ist, statt Unsinn auszugeben.

Kostenlos · Ohne Anmeldung · Läuft komplett in deinem Browser

Tippe in eines der beiden Felder, und das andere zieht nach. Text läuft über UTF-8, also funktionieren Emoji und nicht-lateinische Schriften – das nackte btoa(), das die meisten Tools verwenden, wirft bei beidem einen Fehler. Nichts wird hochgeladen; die Umwandlung passiert in diesem Tab.

1 Zeile · 12 Zeichen · 18 Byte UTF-8

1 Zeile · 24 Zeichen · +33 % mehr als die Eingabe

Standardalphabet mit Padding, nach RFC 4648. Beim Dekodieren wird auch die URL-sichere Form akzeptiert, du kannst also ein JWT-Segment direkt einfügen.

Einen Token von Hand zu dekodieren heißt meist, dass weiter vorne etwas nicht dokumentiert ist. Verbinde GitHub, und Tekks Loops lesen das echte Repo und bringen dir Proposals, was als Nächstes zu beheben ist; gib eines mit Greenlight frei, und dein Coding-Agent bekommt die Spec.

So funktioniert’s

  1. 1

    In eins der beiden Felder einfügen

    Die beiden Felder bleiben synchron. Für Base64 Decode kommt der String ins rechte Feld; zum Kodieren tippst du links. Es gibt keinen Button und keinen Request – die Umwandlung passiert in diesem Tab, und das zählt, wenn du gerade ein Credential dekodierst.

  2. 2

    URL-sicher einschalten, wenn der String aus einer URL kommt

    JWT-Segmente, Query-String-Werte und Dateinamen nutzen das URL-sichere Alphabet aus RFC 4648: Bindestrich und Unterstrich statt Plus und Slash, ohne Padding. Beim Dekodieren wird jede der beiden Formen automatisch erkannt, die Ausgabe eines Base64-URL-Encoders kannst du also einfügen, ohne darauf zu achten.

  3. 3

    Lies den Fehler statt des Datenmülls

    Lässt sich ein String nicht dekodieren, sagt das Tool, welches Zeichen falsch ist und wo – oder dass die Bytes gültig sind, aber kein Text. Die meisten Tools geben Ersatzzeichen aus und lassen dich raten, ob das Problem der String ist oder die Kodierung.

So funktioniert Base64

Aus drei Bytes Eingabe werden vier Zeichen Ausgabe. Jedes Ausgabezeichen trägt sechs Bit, aus einem Alphabet mit 64 Zeichen: A–Z, a–z, 0–9, + und /.

Geht die Eingabe nicht glatt durch drei auf, wird der Rest mit = aufgefüllt:

Eingabe Bytes Ausgabe
f 1 Zg==
fo 2 Zm8=
foo 3 Zm9v
foob 4 Zm9vYg==
fooba 5 Zm9vYmE=
foobar 6 Zm9vYmFy

Das sind die Testvektoren aus RFC 4648 §10, und sie werden gegen den Solver dieses Tools geprüft – was die Seite dokumentiert und was das Feld tut, kann also nicht auseinanderlaufen.

Das UTF-8-Problem

Die Implementierung, die fast jedes Online-Tool ausliefert, ist eine Zeile:

btoa(text)  // throws on anything above U+00FF

btoa bildet jedes Zeichen auf ein Byte ab. Das klappt für ASCII und Latin-1 und scheitert, sobald du einen Namen mit kyrillischem Zeichen, einen chinesischen String oder ein Emoji einfügst. Manche Tools werfen einen Konsolenfehler und zeigen nichts; schlimmere kürzen still.

Der richtige Weg kodiert zuerst in UTF-8-Bytes:

const bytes = new TextEncoder().encode(text);

Dekodieren braucht das Gegenstück dazu, mit fatal: true, damit Bytes, die kein gültiges UTF-8 sind, gemeldet statt durch � ersetzt werden. Durch diese Unterscheidung kann dir dieses Tool „gültiges Base64, aber die 2 Bytes darin sind kein UTF-8-Text“ sagen, statt dir eine Reihe Fragezeichen zu zeigen.

base64url, und warum sich dein JWT nicht dekodieren ließ

+ und / haben beide eine Bedeutung in einer URL. RFC 4648 §5 definiert eine Variante, die sie austauscht:

Standard URL-sicher
+ -
/ _
=-Padding meist weggelassen

Ein JWT besteht aus drei solchen Segmenten, verbunden durch Punkte. Füg das mittlere in einen Decoder ein, der nur das Standardalphabet kennt, und er wirft einen Fehler oder liefert Unsinn. Hier werden beim Dekodieren beide Formen akzeptiert, ohne dass du sagen musst, welche du hast, und das fehlende Padding wird ergänzt.

Was die Größe kostet

Base64-Ausgabe ist immer 4/3 so groß wie die Eingabe, plus bis zu zwei Padding-Zeichen:

output length = 4 × ceil(input bytes ÷ 3)

Also rund 33 % größer. Für einen Token in einem Header ist das egal, für ein 400-KB-Bild, das als Data-URI eingebettet ist, wird es teuer: Du zahlst den Aufschlag bei jedem Seitenaufruf und kannst das Asset nicht mehr separat cachen.

Wenn sich ein String nicht dekodieren lässt

Base64 kann nur auf drei Arten schiefgehen, und das Tool unterscheidet sie:

  • Ein Zeichen außerhalb des Alphabets. Meist ein verirrtes Anführungszeichen vom Kopieren aus JSON oder ein URL-sicheres - in einem Decoder, der keins erwartet. Die Position wird angezeigt, damit du es findest.
  • Eine Länge, die nicht stimmen kann. Gültiges Base64 hat, das Padding mitgerechnet, eine Länge, die ein Vielfaches von vier ist. Ein Rest von eins ist unmöglich, also sind unterwegs Zeichen verloren gegangen.
  • Gültige Bytes, die kein Text sind. Das Dekodieren hat geklappt; der Inhalt war einfach kein String. Häufig bei Schlüsseln, Bildern und komprimierten Payloads.

Häufige Fragen

Was ist Base64?
Eine Art, beliebige Bytes nur mit 64 Zeichen zu schreiben, die textbasierten Transport überstehen: A–Z, a–z, 0–9, Plus und Slash. Es gibt sie, weil E-Mail-Header, URLs und JSON Textkanäle sind und rohe Bytes dort nicht unbeschadet durchkommen. Es ist eine Kodierung, keine Verschlüsselung – jeder kann sie umkehren.
Wie mache ich Base64 Decode bei einem String?
Füg ihn oben ins rechte Feld ein, links erscheint der dekodierte Text. Kommt er aus einer URL oder einem JWT, nutzt er vielleicht das URL-sichere Alphabet und hat kein Padding; das wird automatisch erkannt, du musst vorher also nichts umwandeln.
Wie kodiere ich Text in Base64?
Tipp ihn ins linke Feld, rechts erscheint beim Tippen die kodierte Form. Der Text wird zuerst in UTF-8-Bytes umgewandelt, deshalb funktioniert jedes Zeichen – auch Emojis und nicht-lateinische Schriften, an denen die meisten Online-Encoder scheitern.
Warum scheitern andere Tools an Emojis und Umlauten?
Weil sie das eingebaute btoa() des Browsers nutzen, das nur Zeichen bis U+00FF annimmt und bei allem darüber einen Fehler wirft. Kodieren muss zuerst über UTF-8 laufen. Dieses Tool macht das, deshalb übersteht 世界 und 🚀 hier den Hin- und Rückweg und geht anderswo kaputt.
Ist Base64 eine Verschlüsselung?
Nein, und es so zu behandeln, ist ein echter Sicherheitsfehler. Alles, was du in Base64 kodierst, kann jeder in einer Sekunde dekodieren, ganz ohne Schlüssel. Base64 ist für den sicheren Transport von Bytes durch Textkanäle da – muss der Inhalt geschützt werden, braucht er darunter echte Verschlüsselung.
Was ist das URL-sichere Alphabet?
RFC 4648 §5 definiert eine Variante, in der das 62. Zeichen ein Bindestrich statt eines Plus ist und das 63. ein Unterstrich statt eines Slashs, weil Plus und Slash in URLs eine Bedeutung haben. Das Padding fällt meist auch weg. Ein Base64-URL-Encoder erzeugt diese Form, und genau sie nutzen JWTs.
Warum macht Base64 Daten größer?
Weil jedes 8-Bit-Zeichen nur 6 Bit Daten trägt, ist die Ausgabe 4/3 so groß wie die Eingabe – rund 33 % größer, plus Padding. Das ist der Preis dafür, Bytes durch einen Textkanal zu schicken, und der Grund, warum große Bilder als Data-URI einzubetten meist ein Fehler ist.
Was bedeuten die Gleichheitszeichen am Ende?
Padding. Base64 arbeitet in Gruppen aus drei Bytes, die vier Zeichen ergeben; geht die Eingabe nicht glatt auf, markieren ein oder zwei Gleichheitszeichen den Rest. Die URL-sichere Form lässt sie meist weg, und dieses Tool ergänzt sie beim Dekodieren wieder, damit auch ein gekürzter String funktioniert.
Kann ich hier ein JWT dekodieren?
Die Payload, ja. Ein JWT besteht aus drei base64url-Segmenten, getrennt durch Punkte – füg das mittlere oben ins Feld für Base64 Decode ein, und du bekommst die Claims als JSON. Gewöhn dir nicht an, Produktions-Tokens in Online-Tools einzufügen; hier passiert die Arbeit in deinem Browser, bei den meisten Seiten mit demselben Angebot aber nicht.
Was heißt „gültiges Base64, aber kein UTF-8-Text“?
Dass sich der String sauber in Bytes dekodieren ließ, diese Bytes aber kein lesbarer Text sind – meist, weil die Originaldaten ein Bild, ein komprimierter Blob oder ein binärer Schlüssel waren. Die Anzahl der Bytes wird trotzdem angezeigt, weil das oft der nützliche Teil ist.
Kommt es mit Zeilenumbrüchen in der Eingabe klar?
Ja. Base64 aus einem Terminal, einer PEM-Datei oder einem E-Mail-Header ist oft nach 64 oder 76 Zeichen umbrochen. Leerzeichen und Zeilenumbrüche werden vor dem Dekodieren entfernt, du kannst also direkt einfügen, wo auch immer du den String gefunden hast.
Kann ich ein Bild oder eine Datei kodieren?
Nicht hier – das ist ein Text-Tool, und keine Datei verlässt je deinen Rechner, weil gar keine angenommen wird. Für eine Data-URI bräuchtest du die Bytes der Datei statt ihres Namens, also ein Tool, das Dateien liest – und das ist beim Datenschutz eine deutlich andere Sache.
Speichert ihr, was ich einfüge?
Nein. Die Umwandlung läuft komplett in deinem Browser. Nichts geht an einen Server, nichts wird geloggt, und es gibt kein Konto. Trenn die Internetverbindung, und es funktioniert trotzdem – genau die Eigenschaft, die zählt, wenn du einen Token dekodierst.
Warum ist das kostenlos, und was ist Tekk?
Tekk macht dein Produkt zu einem, das sich selbst verbessert: 16 Loops beobachten deine Codebase und bringen dir Proposals, die du mit Greenlight freigibst oder ablehnst, und dein Coding-Agent baut das Ergebnis. Dieses Tool kostet uns im Betrieb nichts, und wer einen kodierten Wert debuggt, gehört genau zu den Leuten, für die wir bauen. Ohne Anmeldung, ohne Limit, kein Upsell im Tool.

Willst du eine echte Spec für das, was du baust?

Schreib einen Satz. Tekk liest deinen Code und schreibt die Spec, die dein Coding-Agent baut – und seine Loops behalten im Blick, was du auslieferst.

Kostenlos testen · GitHub bei der Registrierung verbinden