Entwickler-Werkzeuge

Die kleinen Handgriffe, die einen Nachmittag unterbrechen: ein JWT, das man lesen muss, ein Payload, der lesbar werden soll, ein String, der eine Query überleben muss. Jedes Werkzeug hier rechnet in der Seite, auf der du gerade bist — und genau darum geht es, denn was Entwickler in solche Formulare einfügen, ist regelmäßig das, was den Rechner nie hätte verlassen dürfen.

19 Werkzeuge

  • JSON formatierenJemand hat eine Wand aus JSON in einer einzigen Zeile bekommen — eine API-Antwort, ein Logfeld, einen Konfigurationsblob — und muss die Struktur sehen, bevor sich damit irgendetwas anfangen lässt.
  • Base64 dekodierenJemand hält eine Zeichenkette in der Hand, die wie Kauderwelsch aussieht, und muss wissen, was drinsteht — ein JWT, ein Wert aus einem Kubernetes-Secret, eine Logzeile —, ohne sie einem Fremden zu geben.
  • Unix-Zeitstempel umrechnenJemand sieht eine zehn- oder dreizehnstellige Zahl in einem Log, einer Datenbankspalte oder einem JSON-Payload und muss wissen, welchen Moment sie bezeichnet — und in welcher Zone.
  • JSON prüfenJemandes JSON wird von etwas abgelehnt, das nicht sagt warum, und er braucht Zeile und Spalte der ersten Stelle, an der es hängt.
  • Base64 kodierenJemand muss einen String irgendwo unterbringen, wo er so nicht angenommen wird — eine Data-URI, ein Basic-Auth-Header, ein JSON-Feld, das einen Transport überstehen muss, der eigene Meinungen darüber hat, welche Bytes erlaubt sind.
  • SHA-256-Hash erzeugenJemand braucht den SHA-256 eines Texts — einen Integritätswert, einen Fingerabdruck zum Vergleichen, eine deterministische Kennung — und will die aktuelle, ungebrochene Antwort.
  • URL kodierenJemand baut eine URL von Hand zusammen — einen Query-Parameter mit Leerzeichen oder kaufmännischem Und, ein Weiterleitungsziel, das als Wert in einer anderen URL überleben muss — und muss wissen, welche Zeichen maskiert werden müssen und welche nicht.
  • UUID-GeneratorJemand braucht sofort eine oder mehrere Kennungen — für eine Testdatenmenge, eine Migration, eine Konfigurationsdatei — und will dafür kein Terminal öffnen.
  • MD5-Hash erzeugenJemand braucht den MD5 eines Texts — zum Abgleich mit einem Wert in einer Datenbank, um einen Cache-Schlüssel nachzubauen, oder für eine alte Schnittstelle, die noch damit arbeitet.
  • URL dekodierenJemand liest eine URL aus einem Log, einem Analytics-Export oder einer Fehlermeldung, in der der interessante Teil unter Prozentsequenzen begraben ist.
  • HTML-Sonderzeichen kodierenJemand setzt fremden Text in eine Seite — einen Kommentar, eine Produktbeschreibung, ein Markup-Beispiel — und braucht, dass die Zeichen, die sonst zu Tags würden, Zeichen bleiben.
  • HTML-Sonderzeichen dekodierenJemand hat Text vor sich, in dem statt der Zeichen ihre Ersatzschreibweisen stehen — aus einem Datenbankfeld, einem RSS-Feed, einem Scraper-Export — und will lesen, was dort eigentlich steht.
  • JSON minifizierenJemand will formatiertes JSON auf eine Zeile bringen, weil es in eine Konfigurationsvariable, ein Datenbankfeld oder über eine Leitung muss, auf der jedes Byte zählt.
  • SHA-1-Hash erzeugenJemand muss einen SHA-1 erzeugen, weil etwas anderes ihn verlangt — ein Git-Objekt, ein altes Signaturverfahren, eine Schnittstelle von vor 2017 — und nicht, weil er ihn gewählt hätte.
  • URL zerlegenJemand hat eine lange Adresse vor sich und muss ihre Teile einzeln sehen — Host, Port, Pfad, Query, Anker — statt sie im Kopf abzuzählen.
  • Hex kodierenJemand muss die Bytes hinter einem Text sehen — für ein Protokoll, einen Hexdump-Vergleich, ein Feld, das hexadezimal erwartet wird — und will die Trennzeichen so, wie sein Werkzeug sie liest.
  • Hex dekodierenJemand hat einen Hexdump aus einem Log, einem Paketmitschnitt oder einer Fehlermeldung und will wissen, welcher Text dahintersteckt.
  • Query-String zerlegenJemand hat einen Query-String voller Tracking-Parameter und will je eine Zeile pro Parameter, mit dekodierten Werten und ohne dass wiederholte Schlüssel verschwinden.
  • UUID prüfenJemand hat eine Kennung vor sich und muss wissen, ob sie überhaupt eine wohlgeformte UUID ist — und welche Version und Variante sie behauptet.

Warum „läuft lokal“ hier keine Geschmacksfrage ist

Was Leute in einen Base64-Decoder einfügen, ist der Häufigkeit nach: ein JWT, ein Basic-Auth-Header, ein Webhook-Payload, eine Konfigurationsdatei. Drei von vier sind Zugangsdaten oder enthalten welche. Eine Seite, die das auf einem Server dekodiert, hat sie damit gesehen — und hat sie in ihren Request-Logs, ob das jemand wollte oder nicht.

Das ist kein theoretischer Einwand. Es ist der Grund, warum diese ganze Gattung von Website in vielen Unternehmen am Proxy blockiert ist, und warum dort, wo sie es nicht ist, meist eine Richtlinie existiert, die niemand liest. Alles auf dieser Seite ist Rechnerei, die ein Browser selbst erledigen kann; sie woanders laufen zu lassen ist eine Entscheidung, und zwar die falsche.

Was genau im Browser bleibt — und was nicht

Die Seite ist statisches HTML von einem CDN. Beim ersten Tastendruck wird ein kleines JavaScript-Modul nachgeladen, einmal und danach aus dem Cache, und die Arbeit passiert in deinem Tab. Kein Request trägt, was du eingegeben hast, und das kannst du im Netzwerk-Panel nachsehen, statt es uns zu glauben.

Zwei ehrliche Einschränkungen. Die Seite selbst ist ein Request, also ist der Umstand, dass du hier warst, für uns und für dein Netz sichtbar. Und die Website trägt Werbung sowie, wenn du zustimmst, Analytics — beides sieht keinen Inhalt eines Textfelds, beides sind aber Anfragen an Dritte. Der Unterschied ist der zwischen dem, was du tippst, und der Tatsache, dass du hier bist: das erste bewegt sich nie, das zweite zwangsläufig.

Was das für die DSGVO bedeutet

Wenn Daten das Gerät nicht verlassen, findet keine Übermittlung an uns statt — und damit auch keine Auftragsverarbeitung für den Inhalt, den du einfügst. Das ist der praktisch entscheidende Punkt, wenn im Textfeld ein Kundendatensatz, eine Support-Nachricht oder ein Payload mit personenbezogenen Daten steht, und es ist der Grund, warum diese Werkzeuge auch dort benutzbar sind, wo eine Server-Variante es nicht wäre.

Was dennoch stattfindet, steht in der Datenschutzerklärung und wird hier nicht schöngeredet: der Seitenaufruf, die Werbe- und Analytics-Anfragen, die Einwilligung. Ein Werkzeug, das lokal rechnet, macht die Website nicht datenschutzneutral — es nimmt nur den einen Teil heraus, der am meisten wiegt.

Eine Frage pro Seite, statt einer Seite mit Auswahlfeld

Eine einzige Seite, die Base64, URLs und HTML in beide Richtungen hinter einem Auswahlfeld erledigt, wäre weniger Seiten und schlechter. Kodieren und Dekodieren scheitern unterschiedlich, werden unterschiedlich erklärt und unterschiedlich gesucht — wer eine kaputte Prozentsequenz vor sich hat und wer eine Query zusammenbaut, haben einander fast nichts zu sagen.

Also bekommt jede Richtung ihre eigene Seite, mit den Fehlern, die zu ihr gehören: was zu tun ist, wenn Base64 zu Bytes zerfällt, die kein Text sind, warum `encodeURIComponent` ein Ausrufezeichen stehen lässt und was das mit einer OAuth-Signatur macht. Das ergibt eine Seite, die zu lesen sich lohnt, und möglich ist es nur, weil sie nicht sechs Zielgruppen gleichzeitig bedient.

Sie funktionieren ohne Netz

Sobald eine Werkzeugseite geladen ist, passiert alles lokal — sie arbeitet also im Zug, im Flugzeug und hinter einem Firmenproxy, der die Domain eine Stunde später sperrt. Es ist kein Service Worker installiert und nichts eingerichtet; eine Seite, die nie nach draußen ruft, hat schlicht nichts zu verlieren, wenn die Verbindung es tut.

Praktisch heißt das: Diese Werkzeuge sind genau in den Situationen benutzbar, in denen ein Online-Werkzeug sonst die falsche Wahl ist — auf einem fremden Rechner, in einem Netz, dem man nicht traut, mit Daten, die man eigentlich nicht bewegen sollte. Für diesen Fall sind sie gebaut.

Kein Konto, keine Grenze, kein Wasserzeichen

Es gibt nichts anzumelden, weil es nichts zu verwalten gibt. Die Werkzeuge speichern zwischen zwei Besuchen nichts — das Schließen des Tabs löscht deine Eingabe, weil die Eingabe nirgendwo sonst existiert hat als in diesem Tab.

Es gibt auch keine Mengenbegrenzung, und zwar nicht aus Großzügigkeit: Wir zahlen für deine Rechenzeit nichts, also gibt es nichts zu deckeln. Die einzige Obergrenze ist, wie viel Text dein eigener Browser in einem Feld halten mag.

Warum Fachbegriffe hier englisch bleiben

Auf diesen Seiten steht Payload, Token, Hash, Query-String und Base64 — nicht Nutzlast, Wertmarke, Streuwert oder Abfragezeichenkette. Das ist keine Bequemlichkeit, sondern die Sprache, in der in deutschen Teams tatsächlich über diese Dinge geredet und in der gesucht wird.

Wo ein deutsches Wort das übliche ist, steht es auch: Prüfsumme, Zeitstempel, Sonderzeichen, Umlaut. Die Regel ist nicht „so viel Deutsch wie möglich“, sondern „das Wort, das im Gespräch fällt“ — alles andere ergibt eine Seite, die korrekt übersetzt ist und die niemand findet.

Was hier bewusst fehlt

Es gibt keinen HTML-, CSS- oder JavaScript-Formatierer, und das ist eine Entscheidung, keine Lücke. Ein korrekter braucht einen echten Parser; die dafür üblichen Bibliotheken sind mehrere Megabyte groß und wären eine eigene Lizenz- und Ladezeit-Entscheidung, und ein selbstgebauter zerstört Eingaben stillschweigend. Der JSON-Formatierer ist nur deshalb unbedenklich, weil der Parser dafür im Browser eingebaut ist.

Ebenso fehlt eine Markdown- oder HTML-Vorschau. Beides hieße, fremdes HTML in dieser Seite zu rendern — und genau das lehnt die Seite zum Dekodieren von HTML-Sonderzeichen mit ausführlicher Begründung ab, weil ein solcher Parser Netzwerkanfragen auslösen kann. Ein Argument, das auf einer Seite gilt, kann auf der nächsten nicht ignoriert werden.

Entwickler-Werkzeuge: häufige Fragen

Wird das, was ich einfüge, an einen Server geschickt?

Nein. Jedes Werkzeug in diesem Bereich rechnet in der Seite, und das Netzwerk-Panel ist der Weg, das zu prüfen, statt es zu glauben. Die Seite selbst kommt von einem CDN und die Website trägt Werbung, es gibt also Anfragen — keine davon trägt den Inhalt eines Textfelds.

Gibt es eine Grenze, wie viel Text ich einfügen kann?

Nur das, was dein eigener Rechner mitmacht. Nichts wird in eine Warteschlange gestellt, gezählt oder gedeckelt, weil kein Server die Arbeit macht, der etwas zählen könnte. Sehr große Eingaben lassen den Tab kurz nachdenken — das ist die einzige Obergrenze.

Brauche ich ein Konto?

Nein, und es gibt auch nichts, wofür man sich anmelden könnte. Die Werkzeuge merken sich zwischen zwei Besuchen nichts: Das Schließen des Tabs löscht deine Eingabe, weil sie nirgendwo sonst existiert hat.

Darf ich das mit Firmendaten benutzen?

Das entscheidet eure Richtlinie, aber die technische Antwort lautet: Die Daten verlassen das Gerät nicht, und genau darum geht es in solchen Richtlinien üblicherweise. Wenn du es belegen statt behaupten musst, öffne das Netzwerk-Panel während der Benutzung — dort ist nichts zu zeigen.

Warum kommt vor dem Ergebnis kein Download-Schritt?

Weil es keine Datei gibt. Das Ergebnis ist Text auf der Seite, bereit zum Markieren und Kopieren, und es wäre nichts gewonnen, dich vorher noch auf einen Knopf drücken zu lassen. Wo ein Werkzeug tatsächlich eine Datei erzeugt, steht der Download am Ende und nicht als Schranke davor.