CSS-Formatter / Minifier
CSS-Code formatieren, verschönern und minimieren.
Geprüft von ZeroUtil Editorial Team · Zuletzt geprüft
Den CSS-Formatter verwenden
- Dein Stylesheet einfügen in das Eingabe-Textfeld. Rohes unminiertes CSS, ein einzeiliges Produktions-Bundle oder ein aus den DevTools kopiertes Fragment funktionieren alle.
- Einen Einrückungsstil wählen aus dem Dropdown: 2 Leerzeichen (der verbreitete Prettier-Standard), 4 Leerzeichen (Googles CSS-Styleguide) oder ein Tab-Zeichen.
- Auf Format klicken, um die Quelle in eine Deklaration pro Zeile mit geschweiften Klammern auf eigenen Zeilen zu expandieren, oder auf Minimieren, um die Regeln in ein einzeiliges Bundle zu kollabieren, das zum Ausliefern geeignet ist.
- Das Ergebnis kopieren mit der Schaltfläche über dem Ausgabebereich. Operationen können auch verkettet werden: formatieren zum Überprüfen, dann dasselbe Buffer minimieren, bevor in ein Build-Artefakt eingefügt wird.
Was das Werkzeug macht und wie es funktioniert
Der Formatter durchläuft den Quellcode Zeichen für Zeichen mit einem leichten Tokenizer, der drei Zustände verfolgt: innerhalb eines Selektors, innerhalb eines Deklarationsblocks und innerhalb eines Strings oder url()-Literals. Wenn er auf eine öffnende geschweifte Klammer trifft, erhöht er einen Einrückungszähler, gibt einen Zeilenumbruch aus und puffert Deklarationen bis zur übereinstimmenden schließenden Klammer. Semikolons lösen Zeilenumbrüche zwischen Deklarationen aus, und At-Regeln wie @media, @supports und @keyframes werden erkannt, sodass ihre verschachtelten Blöcke eine zusätzliche Einrückungsebene erhalten.
Minimierung führt den entgegengesetzten Durchgang aus: Leerzeichen kollabieren zu einzelnen Leerzeichen, Leerzeichen um {, }, :, ; und , verschwinden, und nachfolgende Semikolons innerhalb der letzten Deklaration jedes Blocks werden entfernt. Kommentare durch /* ... */ werden vollständig entfernt. Da der Tokenizer keinen vollständigen AST aufbaut, bewahrt er unbekannte Eigenschaften und Vendor-Prefixes unverändert, anstatt sie abzulehnen.
Wann du darauf zurückgreifst
- Ein minimiertes Stylesheet untersuchen, das von einer Produktionssite ausgeliefert wird, ohne eine vollständige IDE zu öffnen.
- Ein CSS-Snippet für einen Blog-Post, eine Stack-Overflow-Antwort oder Code-Review vorbereiten, wo lesbare Diffs wichtig sind.
- Ein handgeschriebenes Stylesheet schrumpfen, bevor es in eine transaktionale E-Mail-Vorlage ohne Build-Schritt eingebettet wird.
- Eine bestehende Codebasis zwischen zwei- und vierstelliger Einrückung umschalten, wenn eine neue Lint-Konfiguration übernommen wird.
- Prüfen, ob die Stile eines kopierten Drittanbieter-Widgets keine überraschenden Imports oder nicht geschlossenen Klammern enthalten.
- Die Ausgaben mehrerer Generatoren (Sass, PostCSS, Tailwind JIT) normalisieren, sodass Diffs in Git über Inhalt und nicht über Leerzeichen sind.
Typische Fallstricke
- Nicht geschlossene Blöcke. Eine fehlende
}lässt jeden nachfolgenden Selektor verschachtelt erscheinen. Das Werkzeug gibt weiterhin Ausgabe aus, aber der Einrückungszähler driftet; nach Selektoren mit unmöglich tiefer Einrückung suchen und die Quelle reparieren. - Data-URIs. Lange Base64-Payloads innerhalb von
url(data:image/png;base64,...)werden unberührt beibehalten. Der Minifier lässt sie in Ruhe, weil Zeilenumbrüche die dekodierten Bytes korrumpieren würden. - CSS-Custom-Properties mit Semikolons. Ein Wert wie
--content: "a;b";wird korrekt behandelt, weil der Tokenizer den String-Zustand verfolgt, aber nur wenn übereinstimmende Anführungszeichen verwendet wurden. - Calc mit Leerzeichen. Operatoren in
calc(100% - 16px)erfordern umgebendes Leerzeichen gemäß CSS Values Level 4; der Minifier bewahrt die einzelnen Leerzeichen dort. - Verschachteltes CSS. Natives Nesting (Chrome 112+) mit
&parst korrekt, wird aber als gewöhnliche Blöcke behandelt, sodass du die Einrückung aus den DevTools deines Browsers behalten möchtest.
CSS-Syntax-Hintergrund
Die formale Grammatik lebt im W3C-Dokument CSS Syntax Module Level 3. Diese Spezifikation definiert CSS als Strom von Token: Leerzeichen, Kommentare, Bezeichner, Funktionen, At-Schlüsselwörter und Blöcke begrenzt durch {, [ und (. Jegliches Leerzeichen zwischen Token ist semantisch irrelevant, außer innerhalb von Strings und calc()-Operatoren, weshalb sowohl "hübsche" als auch "minimierte" Darstellungen dasselbe Stylesheet beschreiben. Browser sind verpflichtet, Fehlerwiederherstellung zu implementieren - eine unbekannte Eigenschaft wird bis zum nächsten Semikolon übersprungen und ein fehlerhafter Block bis zur nächsten übereinstimmenden geschweiften Klammer - weshalb schlechtes CSS bei einigen Regeln noch "funktioniert".
Vergleich mit anderen Werkzeugen
Gegenüber Prettier oder stylelint --fix ist dieses Werkzeug absichtlich kleiner. Prettier baut einen vollständigen PostCSS-AST auf und formatiert gemäß einem Stil, der lange Selektoren, Eigenschaftssortierung und Anführungsnormalisierung handhabt, die ein regex-basierter Durchgang nicht kann. Wenn du in einem Repo arbeitest, npx prettier --write oder das Format-beim-Speichern des Editors bevorzugen. Wo dieses Werkzeug gewinnt, ist der zero-install-Fall: einmalige Snippets aus einem DevTools-Panel, Inline-E-Mail-CSS oder eine schnelle Minimierung für ein CMS-Feld ohne Build-Pipeline. Für schwere Minimierung (Entfernung toter Regeln, Shorthand-Zusammenführung) cssnano oder lightningcss verwenden; dieses Werkzeug ist ein Kompressor, kein Optimierer.
Häufig gestellte Fragen
Analysiert dieser Formatter einen echten CSS-AST?
Nein. Er verwendet einen Tokenizer, der geschweifte Klammern, Semikolons und String-Begrenzer verfolgt, aber keinen vollständigen Syntaxbaum. Das hält das Bundle klein und macht das Werkzeug tolerant gegenüber experimentellen oder herstellerspezifischen Eigenschaften, die es noch nie gesehen hat. Der Kompromiss ist, dass es keine Shorthand-Eigenschaften umstrukturiert, unerreichbare Regeln entfernt oder Deklarationen alphabetisch sortiert, wie es ein dediziertes Werkzeug wie Prettier oder cssnano tun würde.
Wird irgendein Teil meines CSS hochgeladen, während ich die Seite verwende?
Nein. Die Seite liefert eine Preact-Insel, die den Formatter in deinem Tab ausführt; es gibt keinen fetch-Aufruf an einen Backend-Endpunkt während der Verarbeitung, und kein Service Worker fängt die Eingabe ab. Du kannst den Netzwerk-Tab in den Entwicklertools nach dem ersten Laden deaktivieren und jede Schaltfläche funktioniert weiterhin. Der Ergebnis-Buffer lebt im JavaScript-Speicher und wird verworfen, wenn du den Tab schließt.
Warum enthält die minimierte Ausgabe noch einige Leerzeichen?
CSS erfordert Leerzeichen an wenigen bestimmten Stellen: zwischen Plus- oder Minus-Operatoren innerhalb von <code>calc()</code>, nach einer <code>@import</code>-URL gefolgt von Media-Queries und innerhalb von String- Literalen. Diese zu entfernen würde ungültiges CSS erzeugen, sodass der Minifier sie beibehält. Jeder andere Leerzeichenlauf kollabiert zu nichts oder einem einzelnen Leerzeichen, wo für die Tokenisierung benötigt.
Unterstützt er Sass, Less oder PostCSS-Syntax?
Nur soweit sie wie CSS aussehen. Variablen mit <code>$</code>, <code>@</code> oder <code>--</code> überleben Round-Trips, aber Sass-spezifische Konstrukte wie <code>@mixin</code>, <code>@include</code> oder übergeordnete Selektoren mit <code>&</code> werden als undurchsichtige Blöcke behandelt. Die Sass- oder Less-Quelle zuerst durch den jeweiligen Compiler laufen lassen, wenn ein echtes Hübschdrucken der Präprozessor-Ausgabe benötigt wird.
Wie werden CSS-Kommentare von jedem Modus behandelt?
Format bewahrt <code>/* ... */</code>-Kommentare und platziert Block-Kommentare auf einer eigenen Zeile. Minimieren entfernt alle Kommentare, einschließlich Lizenz-Banner. Wenn ein Lizenz-Header nach der Minimierung beibehalten werden muss, einen <code>/*!</code>-Bang-Kommentar hinzufügen und die Ausgabe nachbearbeiten - dieses Werkzeug behandelt Bang-Kommentare derzeit nicht besonders.
Wie groß darf das stylesheet sein, das ich einfügen kann?
Es gibt keine feste Obergrenze. In der Praxis formatiert alles unter einem Megabyte in weit unter einer Sekunde auf einem modernen Laptop. Stylesheets über fünf Megabyte können den Tab kurz unresponsive machen, weil der Tokenizer synchron ist. Für Build-Zeit-Verarbeitung in diesem Maßstab stattdessen durch <code>lightningcss</code> oder <code>esbuild</code> in der Kommandozeile pipen.
Kann ich die minimierte Ausgabe direkt in einem <code><style></code>-Tag verwenden?
Ja. Der Minifier erzeugt gültiges CSS, das jeder Browser parst. Ein gängiges Muster ist, ein Komponenten-Stylesheet hier zu minimieren und es dann in den <code><head></code> einer HTML-E-Mail-Vorlage oder einer Landing-Page ohne Build-Schritt einzubetten. Daran denken, <code></style></code>-Sequenzen zu escapen, wenn sie innerhalb eines Strings erscheinen.
Ändert es die Cascade-Reihenfolge meiner Regeln?
Nein. Der Tokenizer gibt Regeln in genau der Reihenfolge aus, in der er sie gelesen hat. CSS-Spezifität und Quellreihenfolge sind erhalten, sodass zwei Stylesheets, die sich nur in Leerzeichen unterscheiden, im Browser identische berechnete Stile erzeugen. Diese Eigenschaft macht Format- und Minimier- Operationen zu sicheren Refactorings und nicht zu Umschreibungen.
Wie soll ich mit Stylesheets umgehen, die <code>@import</code> oben haben?
At-Import-Regeln werden erkannt und oben in der Ausgabe gehalten, weil CSS erfordert, dass sie vor allen anderen Regeln außer <code>@charset</code> erscheinen. Der Formatter folgt den Imports nicht und bündelt sie nicht - dafür einen Bundler wie <code>postcss-import</code> verwenden. Das Ausführen dieses Werkzeugs nur auf der Hauptdatei erzeugt weiterhin ein gültiges Stylesheet.
Warum sollte ich CSS vor dem Committing in Git formatieren?
Konsistente Leerzeichen machen Diffs überprüfbar. Eine einzeilige minimierte Datei zwingt Reviewer dazu, eine riesige geänderte Zeilenanzahl zu begutachten, wenn sich nur ein Selektor tatsächlich geändert hat. Den Quellcode vor dem Commit hübschzudrucken bedeutet, dass Diffs nur die geänderten Deklarationen zeigen, weshalb die meisten Teams einen Pre-Commit-Hook konfigurieren, der Prettier oder stylelint auf gestagte Stylesheets ausführt.
Verwandte Tools
- HTML-Formatierer / Beautifier
HTML-Code formatieren, verschönern und minifizieren.
- JavaScript-Formatierer / Minimierer
JavaScript-Code mit Prettier-artigen Standardeinstellungen formatieren, verschonern und minimieren.
- JSON-Formatter
JSON formatieren, validieren und minimieren mit Syntaxhervorhebung.
- XML-Formatierer / Validator
XML mit anpassbarer Einrückung formatieren, verschönern und validieren.
- SQL-Formatierer
SQL-Abfragen formatieren und verschönern mit Schlüsselwort-Großschreibung.
- Farb-Konverter
Farben zwischen HEX, RGB, HSL und CMYK konvertieren.
Mehr Developer Tools
AI Token Counter
Count tokens for GPT-4o, Claude, and Gemini models instantly.
Open toolBase64 Encoder & Decoder
Encode UTF-8 text to Base64 online or decode Base64 back to UTF-8 and plain text. Runs in your browser with no upload.
Open toolBulk URL Encode / Decode
Encode or decode many URLs at once. Paste a newline-separated list and the tool processes each line in parallel, preserving order and blank lines.
Open toolchmod Calculator
Calculate and convert Unix file permission modes between octal and symbolic.
Open toolCode Screenshot
Create beautiful code snippet images with customizable themes.
Open toolColor Converter
Convert colors between HEX, RGB, HSL and CMYK formats.
Open tool