JS-Minifizierer
Minifizieren Sie JavaScript mit Terser — derselben Engine, auf die sich große Build-Tools verlassen. Entfernt Leerzeichen und Kommentare und verkürzt optional Variablennamen, um kleinere, weiterhin gültige Ausgabe vollständig in Ihrem Browser zu erzeugen.
- Dateien verlassen niemals Ihr Gerät
- Kostenlos, keine Anmeldung
- Keine Wasserzeichen
- Funktioniert nach dem Laden auch offline
So verwenden Sie JS-Minifizierer
- 1
Code einfügen
Fügen Sie eine beliebige gültige JavaScript-Datei oder ein Snippet ein.
- 2
Optionen wählen
Lassen Sie die Variablenverkürzung für die kleinste Ausgabe aktiviert, oder schalten Sie sie aus, wenn Sie das Ergebnis lesen müssen.
- 3
Ergebnis kopieren
Kopieren Sie den minifizierten Code samt der eingesparten Größe.
Was Minifizierung unter der Haube tatsächlich tut
Leerzeichen und Kommentare zu entfernen ist der einfache, offensichtliche Teil der Minifizierung — und für sich genommen bewegt das bei gut geschriebenem Code kaum etwas. Die eigentliche Größenreduktion kommt aus zwei tieferen Transformationen: der Namensverkürzung, die jede lokale Variable und jedes Funktionsargument in den kürzestmöglichen Bezeichner umbenennt (`accumulator` wird zu `a`, `temporaryResult` wird zu `t`), und der Entfernung toten Codes, die Zweige und Ausdrücke entfernt, von denen eine statische Analyse des Codes beweisen kann, dass sie nie ausgeführt werden oder nie die Ausgabe beeinflussen. Beides erfordert, die Struktur des Codes tatsächlich zu verstehen — seine Geltungsbereiche, welche Namen lokal statt exportiert sind, welche Zweige nachweislich unerreichbar sind —, weshalb ein echtes parserbasiertes Tool wie Terser eine deutlich kleinere Ausgabe erzeugt, als es ein simples Suchen-und-Ersetzen über Leerzeichen je könnte.
Warum die meisten Entwickler heute selten einen eigenständigen Minifizierer anfassen
Bundler wie Webpack, esbuild, Rollup und Vite minifizieren ihre Ausgabe automatisch als Teil eines Produktions-Builds, fast immer mit Terser oder einer Terser-kompatiblen Engine darunter — daher passiert Minifizierung für jeden, der in einem modernen JavaScript-Projekt arbeitet, bereits unsichtbar bei jedem Build-Befehl. Ein eigenständiges Tool wie dieses deckt die Fälle ab, die außerhalb dieser Pipeline liegen: ein einzelnes Script-Tag ohne Build-Schritt, ein schneller Test, wie stark ein Snippet schrumpfen würde, oder eine einmalige Datei, die komprimiert werden muss, ohne gleich eine ganze Bundler-Konfiguration nur dafür aufzusetzen.
Das Gegenteil von Formatierung, kein Ersatz dafür
Minifizieren und Formatieren sind entgegengesetzte Operationen auf demselben Code: Dieses Tool entfernt genau die Leerzeichen, Struktur und Lesbarkeit, die ein Formatierer wie Prettier absichtlich wieder hinzufügt. Sein Schwester-Tool, der JavaScript-Formatierer, macht genau das rückgängig, was dieses tut — nützlich für die umgekehrte Richtung, um eine Ihnen übergebene minifizierte Datei wieder in etwas ausreichend Lesbares zurückzuverwandeln, um es tatsächlich zu debuggen.
Eine echte Build-Pipeline kombiniert Minifizierung normalerweise mit einer Source Map — einer separaten Datei, die jede Position in der minifizierten Ausgabe auf ihre ursprüngliche Zeile im Quellcode zurückführt —, speziell damit ein Debugger trotz des tatsächlich laufenden, unlesbaren Codes weiterhin lesbaren Code und korrekte Zeilennummern in Produktion zeigen kann. Dieses eigenständige Tool erzeugt bewusst keine, da es für ein schnelles einmaliges Verkleinern gedacht ist statt für eine Produktionsbereitstellung; alles, was in eine echte Build-Pipeline geht, sollte durch einen Bundler laufen, der eine passende Source Map gleich mit ausgibt.
Häufig gestellte Fragen
Wird mein Code an einen Server gesendet?
Nein. Terser wird in Ihren Browser geladen und läuft dort — die Minifizierung geschieht vollständig auf Ihrem Gerät. Proprietärer oder interner Code verlässt nie Ihren Rechner, was bei nicht jedem Online-Minifizierer der Fall ist.
Kann Minifizierung meinen Code zerstören?
Bei korrekter Ausführung nicht — Terser analysiert Ihren Code in einen echten Syntaxbaum statt Text nach Mustern zu durchsuchen, daher verhält sich die umgewandelte Ausgabe bei der überwiegenden Mehrheit des Codes identisch zum Original. Der eine echte Grenzfall: Code, der zur Laufzeit seinen eigenen Quelltext untersucht, zum Beispiel `Function.prototype.toString()` auf einer Funktion aufruft und das Ergebnis analysiert, oder sich auf einen Variablen- oder Funktionsnamen als Zeichenkette verlässt (manche Dependency-Injection-Muster tun das). Die Namensverkürzung benennt Dinge um, daher kann solche Introspektion nach der Minifizierung andere Namen sehen. Das ist selten, aber wichtig zu wissen, falls Ihr Code etwas Ungewöhnliches mit Reflection macht.
Ist die minifizierte Ausgabe noch gültiges, ausführbares JavaScript?
Ja. Die Ausgabe ist gewöhnliches JavaScript — nur kürzer. Sie können sie direkt in ein `<script>`-Tag oder eine Build-Ausgabe einfügen, genau wie die Originaldatei.
Wann sollte ich das tatsächlich nutzen?
Für Produktions-Bundles, ein irgendwo größenbeschränktes eingebettetes Skript (eine Browser-Erweiterung, ein Tracking-Snippet, ein größenbegrenztes Widget), oder eine einmalige Datei, die Sie schnell verkleinern müssen, ohne einen Build-Schritt aufzusetzen. Sie würden Ihre Quell- oder Entwicklungsdateien nicht minifizieren — halten Sie diese lesbar, und minifizieren Sie nur die endgültige Build-Ausgabe, genauso wie es ein Bundler tun würde.
Warum sieht die Ausgabe unlesbar aus?
Das ist der Sinn der Sache. Leerzeichen, Kommentare und lange Variablennamen existieren für Menschen, die den Quellcode lesen, nicht für die JavaScript-Engine, die ihn ausführt. Sie zu entfernen (und Namen zu verkürzen, wenn die Verkürzung aktiviert ist) reduziert die Anzahl der über das Netzwerk gesendeten Bytes, ohne zu ändern, was der Code tut.
Das könnte Sie auch interessieren
JavaScript-Formatierer
JS und TypeScript mit einem echten Parser formatieren
CSS-Minifizierer
Stylesheets mit einem echten CSS-bewussten Minifizierer verkleinern
JSON-Formatierer
JSON sofort formatieren, validieren und minifizieren
Base64-Encoder und -Decoder
Base64 und Base64URL kodieren und dekodieren
CSS-Formatierer
Stylesheets verschönern oder minifizieren
Hash-Generator
MD5, SHA-1, SHA-256, SHA-384 und SHA-512
HTML-Formatierer
HTML korrekt verschönern und einrücken
JWT-Decoder
JSON Web Tokens dekodieren und untersuchen