CSSミニファイア
圧縮されたCSSファイルは整形済みのものより明らかに速く読み込まれ、その差はページ読み込みごとに積み重なります。このミニファイアは空白とコメント、末尾のセミコロンを削ります。カスケードやルールの効果は変えません。出力は常に有効なCSSで、ブラウザは元と同じように解析します。
CSSを圧縮する手順
-
1
CSSを貼り付け
手書き、Sassのコンパイル結果、インラインのstyleブロックなど任意のCSSが対象です。
-
2
圧縮を実行
「Minify CSS」を押すと、コメント、空白、末尾のセミコロンを一括で削除します。
-
3
削減量を確認
バイト削減量が圧縮結果の横に表示されます。
-
4
結果をコピー
圧縮したCSSを本番バンドルに貼り付けるか、`.min.css`として保存します。
このミニファイアが行うこと
変換(動作は変わりません):
- コメントを削除します(
/*!ライセンスブロックを含むすべて)。 - 不要な空白(セレクタ間、宣言間、ブレース周り)を削除します。
- 閉じブレース直前の末尾セミコロンを削除します。
- 複数行のルールを1行に畳み込みます。
行うのはこれだけです。だから出力は元とまったく同じ挙動をします。すべてのセレクタ、プロパティ、値が書いたとおりのままです。
想定される削減率
| ソース | 元のサイズ | 圧縮後のサイズ | 削減率 |
|---|---|---|---|
| 整形済み手書きCSS | 20 KB | 12 KB | 40% |
| Sass出力、開発モード | 45 KB | 25 KB | 44% |
| すでに圧縮済み+gzip | 10 KB | 10 KB | 0% |
圧縮に加え、サーバーでのgzip圧縮はCSSが冗長性の高いテキストであるためさらに60〜80%削減します。両者は積み重なるので、常に両方を行ってください。
圧縮では行わないこと
- 未使用CSSの削除。これはツリーシェイキング/PurgeCSSの領域で、HTMLやコンポーネントの解析が必要です。
- HEXカラーの短縮、ゼロ単位の畳み込み、宣言のマージ。そうしたアグレッシブな変換はcssnano、esbuild、Lightning CSSの仕事で、このツールの対象外です。
- 重複セレクタを1つにマージ。ソースの順序がカスケードに影響するため危険です。試みるミニファイアもありますが、ほとんどは飛ばします。
- クラス名のリネーム。これはCSS-in-JSやCSS Modulesの仕事で、圧縮ではありません。
- クリティカルCSSのインライン化。これは別のビルド時ステップです。
ライセンスコメントの保持
多くのミニファイアは/*!で始まるコメントを保持します。ライセンスヘッダーで使われます。
/*! Bootstrap v5.3 · MIT License · https://github.com/twbs/bootstrap */
このツールはすべてのコメントを削除します。CSSにライセンスヘッダーが含まれる場合は、圧縮後に付け直すか、cssnanoやesbuildなどライセンス保持オプションのあるビルドツールを使ってください。
ソースマップ
本番デバッグ用には、ビルドツールが圧縮出力と並んでソースマップを生成します。
styles.min.css
styles.min.css.map
DevToolsはマップを読み込み、要素を調査した際に元の整形済み行番号を表示します。このツールはソースマップを生成しません。
ビルドパイプラインでのCSS圧縮
- Vite、Webpack、Parcel:本番ビルドで自動的に処理します。
- PostCSS + cssnano:標準的なスタンドアロンミニファイアです。
- esbuild:CSS圧縮も内蔵します。
- cssnanoプリセット:安全な変換は
default、アグレッシブ(一部トレードオフあり)はadvancedです。
このツールは単発の圧縮、緊急対応、ミニファイアの実態を学ぶ用途向けです。本番ワークフローではビルドツールを使い、ソースは読みやすいまま、出力だけを圧縮するのが良いでしょう。
圧縮がCSSを壊す可能性のあるケース
まれですがあり得ます。
- 空白に依存するセレクタ:
.foo .barと.foo.barはスペースの有無で意味が変わります。 - 空白を含むカスタムプロパティ値:
--shadow: 0 2px 4px rgba(0,0,0,0.1)、rgba()内のカンマを削ってはいけません。 - 閉じられていないブロックコメント:
/* missing closeはそれ以降をすべて飲み込みます。不正な入力ではミニファイアが誤動作することがあります。
対処:出荷前に必ず圧縮済み出力をlint/テストパスにかけてください。
よくある質問
いいえ。正しく圧縮されたCSSファイルはバイトは異なりますが意味的には同一です。すべてのセレクタ、プロパティ、値が同じ視覚結果を生みます。描画の変化が見えたら、ミニファイアのバグか、入力に空白依存の構文があったということです。
はい、「Minify CSS」を押すと送信されます。貼り付けたCSSは圧縮のためにサーバーに送られ、結果がページに返されます。データベースに保存されることも、ページのリンクに追加されることもありません。
後です。ブラウザに渡る最終的なコンパイル済みCSSを圧縮してください。Sass出力はそれなりにコンパクトですが、圧縮が削れる空白とコメントを含みます。
控えめですが確実で、gzipの上に通常5〜15%です。空白とコメントの削除がgzipのパターンもわずかに密にします。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
HTML フォーマッター
ブラウザ内で HTML を 2 または 4 スペースで整形します。HTML はアップロードも検証もされません。
カラーパレットジェネレーター
基準のHEXカラーから、モノクロマティック、類似色、補色、トライアド、テトラードのパレットを生成し、コピーしやすいCSS変数として書き出します。
バイナリからASCIIへの変換ツール
バイナリ(スペース区切りのバイト、または長いビット列)を貼り付けると、それが表すASCIIテキストを8ビットずつ復号して取得できます。