JavaScript-Formatierer
Der JavaScript-Formatierer verwandelt komprimierten oder uneinheitlich gesetzten Quelltext in übersichtlichen Code, den Sie leichter untersuchen, erklären und prüfen können.
Im Browser ausführen – kostenlos
Fügen Sie ein minifiziertes Skript, ein gebündeltes Fragment, einen eingebetteten Handler oder generierten Code ein. Sie erhalten ein deterministisches Layout mit zwei Leerzeichen Einzug und Umbrüchen nach Anweisungen. Der Scanner schützt Zeichenketten, Template-Literale, Kommentare und reguläre Ausdrücke. Unpassende oder nicht geschlossene runde, eckige und geschweifte Klammern werden abgewiesen.
Machen Sie komprimiertes JavaScript wieder lesbar
JavaScript für Browser wird häufig minifiziert, um die Übertragung zu beschleunigen. Für Menschen ist diese kompakte Darstellung jedoch schwer nachzuvollziehen. Funktionskörper, Variablendeklarationen, Aufrufe, Bedingungen und Rückgaben können eine einzige durchgehende Zeile belegen. Dieser Formatierer stellt eine stabile visuelle Hierarchie her, ohne das übermittelte Programm auszuführen. Öffnende geschweifte Klammern beginnen eingerückte Blöcke, schließende kehren zur vorherigen Ebene zurück, und anweisungsabschließende Semikolons erzeugen außerhalb geklammerter Ausdrücke einen Zeilenumbruch. Jede Ebene verwendet zwei Leerzeichen, sodass wiederholte Läufe ein vorhersehbares Ergebnis für Notizen, Tickets, Codeprüfungen oder Editoren liefern. Besonders nützlich ist das Werkzeug, wenn nur eine Datei aus dem Browser, einem Build-Verzeichnis, einem eingebetteten Skript oder einer Diagnoseantwort vorliegt. Es benennt keine Variablen um, entpackt keine gebündelten Module, rekonstruiert keine Source Maps und stellt den ursprünglichen Stil nicht wieder her. Sein klarer Zweck besteht darin, die sichtbare Programmstruktur offenzulegen und dabei alle bedeutungstragenden Zeichen zu bewahren.
Schützen Sie Strings, Kommentare, Templates und reguläre Ausdrücke
Satzzeichen haben je nach JavaScript-Kontext unterschiedliche Bedeutungen. Ein zuverlässiger Formatierer darf den Text deshalb nicht an jeder Klammer oder jedem Semikolon trennen. Ein Semikolon in einer zitierten Nachricht gehört zu den Daten. Eckige Klammern in einem regulären Ausdruck beschreiben eine Zeichenklasse. Eine geschweifte Klammer in einem Template-Literal kann Inhalt sein, und Satzzeichen in Kommentaren dürfen die Programmstruktur nicht verändern. Der Scanner verfolgt daher einfach und doppelt zitierte Zeichenketten, Escape-Sequenzen, Template-Literale, Zeilen- und Blockkommentare sowie reguläre Ausdrücke. Strukturelle Formatierung findet nur außerhalb dieser geschützten Bereiche statt. Auch runde Klammern werden verfolgt, damit Semikolons in einem klassischen for-Kopf in derselben Zeile bleiben. Der deterministische Durchlauf nutzt weder Netzwerk noch Uhr, Zufall, Modell oder Laufzeitauswertung. Gleiche Eingaben ergeben gleiche Ausgaben, und das übermittelte JavaScript wird niemals ausgeführt. Das Ergebnis eignet sich für menschliche Prüfung und weitere Werkzeuge; dieser Strukturformatierer ersetzt jedoch weder einen vollständigen Standardparser noch einen projektspezifisch konfigurierten Formatierer.
Erkennen Sie unvollständige Begrenzer vor dem nächsten Schritt
Formatierung wird oft benötigt, weil Code aus einer unhandlichen Quelle kopiert wurde. Dabei kann am Anfang oder Ende ein Zeichen fehlen. Der Formatierer führt einen verschachtelten Stapel struktureller Begrenzer und gleicht jedes schließende Zeichen mit seinem öffnenden Gegenstück ab. Eine unerwartete schließende runde, eckige oder geschweifte Klammer löst sofort einen Fehler wegen ungültiger Eingabe aus. Endet der Text mit einem noch offenen Begrenzer, schlägt die Verarbeitung ebenfalls fehl, statt nur scheinbar saubere Ausgabe zu liefern. Begrenzer in geschützten Strings, Kommentaren, Template-Literalen und regulären Ausdrücken gelten als Inhalt. Diese Prüfung ist bewusst eingegrenzt: Ausgeglichene Begrenzer beweisen nicht, dass Bezeichner, Operatoren, Deklarationen, Modulsyntax oder Kontrollfluss gültiges JavaScript bilden, und das Werkzeug führt keinen Code aus. Sie warnen aber zuverlässig vor häufigen Kürzungen und Fehlpaarungen, bevor ein Fragment in Dokumentation, Prüfung, Vergleich oder spezialisierte Analyse gelangt. Im Browser kann die Formatierung lokal laufen; automatisierte API-Anfragen verwenden den veröffentlichten Grundpreis von $0.002 pro Element.
Anwendungsfälle
Minifizierte Browserdatei untersuchen
Gliedern Sie ein komprimiertes Skript in eingerückte Blöcke und Anweisungszeilen, bevor Sie eine Funktion, einen Handler oder einen verdächtigen Aufruf verfolgen.
Fragment für eine Codeprüfung vorbereiten
Geben Sie generiertem oder uneinheitlichem JavaScript ein deterministisches Layout, damit die Prüfung Verhalten und Struktur behandeln kann.
Kopiertes Skriptfragment kontrollieren
Erkennen Sie fehlende oder unpassende runde, eckige und geschweifte Klammern, bevor Sie den Code in Dokumentation oder andere Werkzeuge übernehmen.
Häufige Fragen
Welche Formatierung wird angewendet?
Jede Blockebene erhält zwei Leerzeichen Einzug; mit Semikolon abgeschlossene Anweisungen außerhalb geklammerter Ausdrücke beginnen in neuen Zeilen.
Führt das Werkzeug mein JavaScript aus?
Nein. Es durchsucht den Text deterministisch und wertet den bereitgestellten Code niemals aus.
Bleiben Strings, Kommentare, Templates und reguläre Ausdrücke erhalten?
Ja. Ihre Inhalte sind vor strukturellen Umbrüchen geschützt, während der umgebende Code untersucht wird.
Garantieren ausgeglichene Satzzeichen gültiges JavaScript?
Nein. Das Werkzeug prüft Begrenzer und Formatierungsgrenzen, validiert aber nicht die gesamte ECMAScript-Syntax.
Was kostet eine API-Anfrage?
Jede API-Anfrage verwendet den veröffentlichten Grundpreis von $0.002. Die Browserversion kann lokal ohne API-Anfrage ausgeführt werden.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev2/beautify-js \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"javascript":"function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"}'const res = await fetch("https://api.kit.forhosting.com/dev2/beautify-js", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"javascript": "function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/beautify-js",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"javascript": "function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/beautify-js", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"javascript":"function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"javascript":"function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/beautify-js", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"javascript": "function greet(name){const message=`Hello, ${name}!`;console.log(message);return message;}"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.beautify_js",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |