Base64 dekodieren

Füge einen Base64-String ein und sieh sofort den Text dahinter. Angenommen wird, was du tatsächlich in der Hand hältst, und nicht, was eine Spezifikation gern hätte: Zeilenumbrüche aus einem kopierten PEM-Block, das URL-sichere Alphabet eines JWT und das fehlende Padding, an dem die meisten Decoder ein Token rundheraus ablehnen. Nichts wird hochgeladen — und bei dem, was Leute dekodieren, ist genau das der Punkt.

Ergebnis

Die Antwort erscheint hier, während du tippst.

  • Wo es läuft

    Es wird nichts hochgeladen, weil es keine Datei gibt — gerechnet wird in dieser Seite.

  • Keine Warteschlange, kein Konto

    Es antwortet so schnell, wie dein Rechner es hergibt, und fragt nie, wer du bist.

  • So oft du willst

    Nichts wird gezählt und nichts begrenzt — noch einmal zu antworten kostet uns nichts.

So funktioniert es

  1. Füge den Base64-String in das Feld ein. Leerzeichen und Zeilenumbrüche werden ignoriert.
  2. Lies das Ergebnis darunter. Es aktualisiert sich beim Einfügen.
  3. Kopiere es, wenn du es brauchst. Dein Rechner hat dabei nichts verlassen.

Warum ausgerechnet dieses Werkzeug nicht auf einem Server läuft

Man muss sich nur ansehen, was Leute in einen Base64-Decoder einfügen. Ein JWT, um zu sehen, wessen Token es ist. Einen Wert aus einem Kubernetes-Secret, also ein Passwort, das so geschrieben ist, als wäre es keines. Einen Basic-Authorization-Header aus einem Request-Log. Einen Webhook-Payload aus der Produktion. Drei davon sind Zugangsdaten, der vierte sind meist Kundendaten.

Ein Decoder, der auf einem Server arbeitet, hat jedes einzelne davon gesehen und hat es in seinen Zugriffsprotokollen, ob das jemand beabsichtigt hat oder nicht. Das ist kein theoretisches Risiko — es ist der Grund, warum diese Gattung von Seite vielerorts am Proxy blockiert wird. Diese Seite rechnet in deinem Tab, und das Netzwerk-Panel ist die Art, das zu prüfen, statt ein Versprechen zu glauben.

Ein JWT lesen — und was das nicht beweist

Ein JSON Web Token besteht aus drei URL-sicheren Base64-Segmenten, getrennt durch Punkte. Füge das mittlere hier ein, und du bekommst den Payload: die Claims, das Subject, die Gültigkeit als Unix-Zeitstempel. Das erste Segment ergibt den Header, der das Signaturverfahren nennt. Beides kann jeder lesen, der das Token hat — was überrascht und nicht sollte: Ein JWT ist signiert, nicht verschlüsselt.

Was Dekodieren nicht sagt, ist, ob das Token gültig ist. Das dritte Segment ist eine Signatur über die ersten beiden, und sie zu prüfen braucht den Schlüssel. Diese Seite zeigt dir also, dass ein Token behauptet, am Dienstag abzulaufen; sie zeigt nicht, ob jemand diesen Claim verändert hat. Wenn du dich auf den Inhalt verlässt, prüfe die Signatur dort, wo das Geheimnis liegt.

Wenn die Antwort lautet: das ist kein Text

Base64 trägt Bytes, und Bytes sind nicht immer Zeichen. Dekodiert man den Anfang eines PNG, kommen eine Signatur, eine Chunk-Länge und Binärdaten heraus — im besten Fall eine Reihe von Ersatzzeichen, im schlechteren Mojibake. Die meisten Decoder händigen das trotzdem aus, und man sitzt vor Unsinn, ohne zu wissen, ob die Eingabe falsch war oder der Inhalt einfach kein Text ist.

Dieser sagt es stattdessen. Der Decoder ist bei UTF-8 streng, also werden Bytes, die keinen gültigen Text ergeben, genau so gemeldet — mit der Byte-Anzahl —, statt still durch U+FFFD ersetzt zu werden. „Gültiges Base64 einer Datei“ und „gar kein Base64“ sind zwei verschiedene Probleme und bekommen zwei verschiedene Antworten.

Was verziehen wird, und warum das richtig ist

Padding ist hier optional. Ein JWT-Segment trägt keines, weil `=` in einer URL reserviert ist, und ein Decoder, der darauf besteht, lehnt jedes echte Token ab — das ist eine Spezifikation, die gegen die gesamte Population dessen durchgesetzt wird, was sie beschreibt. Leerraum und Zeilenumbrüche werden entfernt, weil ein aus dem Terminal kopierter PEM-Block nach 64 Zeichen umbricht und niemand ihn von Hand zusammenfügt.

Beide Alphabete werden angenommen, ohne dass man sie ansagen müsste. Standard-Base64 endet auf `+` und `/`, die URL-sichere Variante benutzt `-` und `_`. Verwechseln kann man sie nicht, also übersetzt der Decoder schlicht beide, und es gibt keine Einstellung, die man falsch stellen könnte.

Wenn gemeldet wird, dass die Eingabe kein Base64 ist

Am häufigsten hat die Kopie etwas mitgenommen: einen Punkt am Ende, ein Anführungszeichen aus dem umgebenden JSON oder das Präfix `data:image/png;base64,` aus einer Data-URI, das Metadaten sind und nicht Nutzlast. Base64 benutzt nur A–Z, a–z, 0–9 und zwei Symbole; alles andere ist ein Hinweis darauf, wo die Kopie schiefging.

Am zweithäufigsten ist die Kopie unvollständig. Terminals brechen um, Auswahlen enden zu früh, und Base64 gibt keinen Hinweis darauf, dass es abgeschnitten ist — es dekodiert, was da ist, und liefert Text, der mitten im Wort aufhört, oder scheitert an einer Länge, die kein Vielfaches von vier mehr ist. Endet die Ausgabe an merkwürdiger Stelle, prüfe die Eingabe auf dasselbe.

Kubernetes-Secrets sind keine Geheimnisse

In einem Kubernetes-Secret stehen die Werte Base64-kodiert, und weil das aussieht wie etwas Verschlossenes, werden solche Manifeste erstaunlich oft in Repositories eingecheckt oder in Tickets gehängt. Die Kodierung ist reine Transportformalität: Sie erlaubt Binärdaten in YAML und schützt gegen niemanden.

Wer einen Wert daraus hier einfügt, sieht das sofort — und das ist regelmäßig der Moment, in dem jemand merkt, dass ein Datenbankpasswort seit Monaten im Git-Verlauf liegt. Der Weg dahin ist ein Secret-Manager oder verschlüsselte Manifeste; die Kodierung selbst ist an dieser Stelle nur die Verpackung.

Was mit den Bytes danach passiert

Ergibt der Inhalt keinen Text, ist die nächste sinnvolle Frage, was für eine Datei es ist — und die ersten Bytes verraten das meist. `89 50 4E 47` ist ein PNG, `FF D8 FF` ein JPEG, `25 50 44 46` ein PDF und liest sich als `%PDF`, `50 4B 03 04` ist ein ZIP und damit auch ein modernes Office-Dokument.

Diese Seite gibt dir die Byte-Anzahl statt der Bytes selbst, weil sie eine Textseite ist. Wenn du die Bytes sehen willst, dekodiere anderswo oder benutze das Hex-Werkzeug auf dieser Website mit dem, was du sonst hast — die Frage „was ist das eigentlich“ beantwortet in fast allen Fällen die erste Zeile eines Hexdumps.

Base64 im Vergleich zu dem, wofür es gehalten wird

Es ist keine Verschlüsselung: kein Schlüssel, keine Geheimhaltung, sofort umkehrbar. Es ist keine Kompression, sondern das Gegenteil — die Ausgabe ist ein Drittel größer als die Eingabe. Und es ist kein Hash: Ein Hash ist einseitig und hat feste Länge, Base64 ist umkehrbar und wächst mit der Eingabe.

Diese drei Verwechslungen erklären fast alle falschen Erwartungen an dieses Werkzeug. Wer „Base64 entschlüsseln“ sucht, sucht in Wahrheit meist genau das hier und ist zufrieden; wer glaubt, etwas damit geschützt zu haben, ist es nicht — und sollte es besser jetzt erfahren als beim nächsten Sicherheitsaudit.

Data-URIs, und was vor dem Komma steht

Eine Data-URI sieht so aus: `data:image/png;base64,` und danach der eigentliche Inhalt. Wer die ganze Zeichenkette hier einfügt, bekommt eine Fehlermeldung, weil der Teil vor dem Komma kein Base64 ist — er ist Metadaten und nennt den MIME-Typ sowie die Kodierung.

Alles ab dem Komma ist die Nutzlast. Sie zu dekodieren ergibt fast immer keine Textausgabe, sondern die Meldung, dass es sich um Bytes handelt — und das ist die richtige Antwort, denn eine Data-URI trägt in aller Regel ein Bild oder eine Schrift. Der MIME-Typ vor dem Komma sagt dir bereits, was es ist, und ist damit oft die nützlichere Hälfte.

Base64 dekodieren: häufige Fragen

Wird das, was ich einfüge, irgendwohin geschickt?

Nein. Es wird in dieser Seite dekodiert und verlässt dein Gerät nicht — sieh im Netzwerk-Panel nach, während du einfügst, dort ist nichts. Das ist das Werkzeug auf dieser Website, bei dem das am meisten wiegt, weil dekodiert so oft Tokens, Secrets und Payloads werden.

Kann ich hier ein JWT dekodieren?

Ja. Füge eines der drei durch Punkte getrennten Segmente ein und du bekommst es zurück — den Header oder den Payload mit seinen Claims. Nicht möglich ist die Prüfung der Signatur, denn dafür braucht es den Schlüssel; behandle den Inhalt also als das, was das Token behauptet, nicht als etwas Bewiesenes.

Warum steht da, mein Base64 ergebe keinen Text?

Weil es keinen ergibt. Base64 trägt Bytes, und die sind häufig eine Datei statt einer Zeichenkette — ein PNG, ein Zertifikat, ein komprimierter Block. Statt dir einen Bildschirm voller Ersatzzeichen zu geben, sagt die Seite, was sie gefunden hat und wie viele Bytes es waren: Die Eingabe war also in Ordnung, der Inhalt ist nur kein Text.

Braucht es das Padding am Ende?

Nein. Fehlende Gleichheitszeichen werden vor dem Dekodieren ergänzt, und genau das lässt JWT-Segmente funktionieren — die tragen nie Padding, und ein strengerer Decoder lehnt sie deshalb alle ab. Leerraum und Zeilenumbrüche werden aus demselben Grund ignoriert: Ein aus dem Terminal kopierter PEM-Block kommt umbrochen an.

Ist es kostenlos, und gibt es eine Grenze?

Kostenlos, ohne Konto und ohne Deckel. Es gibt keinen Server, der die Arbeit macht, also gibt es für uns nichts zu messen — die einzige Obergrenze ist, wie viel Text dein Browser in einem Feld halten mag.

Weitere Werkzeuge