HTML・CSS・JS圧縮

コードを貼ると、空白・改行・コメントを取り除いてファイルを小さくします。言語は自動で判定し、どれだけ小さくなったかも表示します。

できること

  • HTML・CSS・JavaScriptの空白・改行・コメントを取り除いてファイルを小さくする。言語は自動で判定し、手で切り替えることもできる
  • 圧縮前後のバイト数と削減率、gzipで送るときの大きさの目安を表示
  • 壊さないことを優先: HTMLの空白の詰め込みは pre・textarea・script・style の中には当てず、要素の間の空白は既定で1つ残す。JavaScript・CSSの文字列やcalc()の空白も残す
  • JavaScriptはterser、CSSはcsso、HTMLはhtml-minifier-terserという広く使われているライブラリで圧縮
  • 構文エラーは行と列で示し、元のコードは消さない。HTMLの中のscript・styleにエラーがあれば、その部分だけそのまま残す
  • コピー・ダウンロード・ファイルの読み込み(ドラッグ&ドロップ)に対応。コードは送信しない

こんなときに

ページの表示を少しでも速くしたいとき

ビルドの仕組みがない小さなサイトやランディングページのHTML・CSSを、公開前に軽くできます。

ブログやCMSに貼るコードを小さくしたいとき

テンプレートやウィジェットに貼るCSS・JavaScriptを1行にまとめられます。

どれだけ小さくなるかを確かめたいとき

圧縮前後とgzip後の大きさを並べて見られるので、圧縮する価値があるかを判断できます。

コードに構文エラーがないかを確かめたいとき

JavaScriptとCSSは圧縮の前に構文を読むので、エラーの行と列が分かります。

プライバシー

貼り付けたコードと読み込んだファイルは、この端末のブラウザの中だけで圧縮し、どこにも送信しません。圧縮に使う部品(terser・csso・html-minifier-terser)は、最初に使うときにこのサイトから読み込みます。保存するのは設定(コメント・空白・変数名などの選択)だけで、この端末のブラウザの中に残ります。

よくある質問

圧縮すると、ページの表示や動きは変わりませんか?

取り除くのは、表示や動きに関係しない空白・改行・コメントです。JavaScriptは変数名の短縮と、動きが変わらない書き換えだけを行います。HTMLの空白の詰め込みは pre・textarea・script・style の中には当てず、要素の間の空白は既定で1つ残します(script・style の中は「中の <style>・<script> も圧縮する」がオンのとき、JavaScript・CSSとして圧縮します)。ただし、CSSで white-space: pre などを指定した要素の中の空白は詰まります。そうした部分を <!-- htmlmin:ignore --> と <!-- htmlmin:ignore --> で挟むと、その間は手を付けません。公開する前に、圧縮したもので表示と動作を確かめてください。

構文エラーと表示されました

エラーの行と列を表示し、元のコードはそのまま残します。表示された場所の前後で、かっこやクォートの閉じ忘れ、カンマの抜けを確かめてください。HTMLの中の <script>・<style> にエラーがある場合は、その部分だけ圧縮せずに残し、ほかの部分は圧縮します。CSSの入れ子(& を使う書き方)と @media (width >= 600px) のような範囲の書き方には対応しておらず、圧縮すると消えてしまうので、エラーとして止めます。

「gzip後の目安」とは何ですか?

多くのサーバーは、ファイルをgzipなどで圧縮してから送ります。そのときに実際に転送される大きさに近い値で、このブラウザの CompressionStream で実際にgzipして数えています。サーバーがBrotliを使っている場合は、これよりさらに小さくなることが多いです。

どのような仕組みで圧縮していますか?

JavaScriptは terser、CSSは csso、HTMLは html-minifier-terser という、広く使われているオープンソースのライブラリを使っています。このサイトに置いたものをブラウザに読み込んで動かすので、コードは外に出ません。CSSは規則の並べ替えや統合をしない設定にしています(順番が変わって見た目が変わるのを避けるため)。

圧縮したコードを元に戻せますか?

取り除いたコメントや改行、短くした変数名は元に戻せません。元のファイルは必ず残しておき、編集は元のファイルで行ってください。JSONを1行にまとめたいときは「JSON整形・検証」が向いています。

どのくらいの大きさまで扱えますか?

10MBまでのファイルを読み込めます。大きいほど時間がかかり、数MBのJavaScriptでは数秒から十数秒かかることがあります。

関連ツール

言語

コードを入れると、すぐに圧縮します。

ファイルをこの欄にドロップしても開けます。コードはこの端末の中だけで処理し、送信しません。

圧縮の結果

圧縮前
—
圧縮後
—
削減率
—
gzip後の目安
—

設定

<!--[if IE]> のような条件付きコメントと <!--! で始まるコメントは残します。

style 属性・onclick などの属性も含みます。構文エラーのある部分は、その部分だけ圧縮せずに残します。

既定ではブロック要素の前後にも空白を1つ残します。消すと、CSSで inline-block にして並べた div などの間隔が変わることがあります。文の中のインライン要素(a・span・button)の間の空白は、表示が変わるため、オンでも残します。

関数の中の変数名だけを短くします。外から使う名前(グローバル)は変えません。

設定はこの端末に保存されます。貼ったコードは保存しません。