HTML Minifier & Beautifier

ブラウザで動く無料の HTML 圧縮・整形ツール。コメント削除・空白圧縮・再インデントが瞬時に完了。アップロード不要、登録不要。

  • ブラウザ内で処理
  • データはブラウザ外に出ません
  • 無料 · 登録不要
圧縮は通常のコメントを削除し、HTML の空白をまとめます。整形は解析したマークアップのインデントを整えます。選んだモードは次の入力にも使われ、Ctrl/⌘+Enter は圧縮を実行します。
クリアは両欄、ステータス、待機中の処理を消去します。ツール内にフォーカスがあるときは Ctrl/⌘+L でも実行できます。
整形用に 2 スペース、4 スペース、Tab を選べます。変更すると現在のモードで直ちに再処理します。
HTML の断片または完全な文書を入力します。入力停止から 300 ミリ秒後、最後に選んだモードで処理します。ブラウザーのパーサーは不正なマークアップを修復します。
結果はシリアライズされた HTML です。圧縮後のステータスには元と出力のバイト数、変化率が表示されます。インライン JavaScript と CSS は圧縮しません。
出力テキスト全体をコピーします。元のテキストには入力パネルのコピーを使えます。
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。

サンプル

圧縮前

<!DOCTYPE html>
<html lang="ja">
  <head>
    <!-- ページメタ情報 -->
    <title>こんにちは</title>
  </head>
  <body>
    <h1>Hello World</h1>
    <p>太字を含む <strong>テキスト</strong>。</p>
  </body>
</html>

圧縮後

<!doctype html><html lang="ja"><head>  <title>こんにちは</title> </head> <body> <h1>Hello World</h1> <p>太字を含む <strong>テキスト</strong>。</p> </body></html>

ステータス行:圧縮完了 — 234 B → 176 B (−24.8%)。コメントが消え、インデントはそれぞれ 1 つのスペースになっています。タグ間のスペースが残るのは、空白だけのテキストノードをすべて 1 つのスペースとして残すためです。<p>Hello <strong>world</strong>!</p> では <strong> の前のスペースが表示されるので、ツールはどのスペースを消してよいかを判断しません。html-minifier-terser などビルド時の圧縮ツールは collapseWhitespace などのオプションでさらに削れます。

圧縮されるもの

  • タグ間の空白(inter-tag whitespace)が折りたたまれます。
  • HTML コメントは削除されます — IE 条件付きコメント(<!—[if IE]>)は例外として保持されます。
  • disabled="" のような boolean 属性は disabled に簡略化されます。
  • テキスト内の連続した空白は 1 つのスペースにまとめます。タグ間の空白だけのテキストは削除せず 1 つのスペースにします。どの空白が表示されるかはパーサーでは判断できないためです。
  • <p> や <h1> などのブロック要素の中身がテキストだけの場合、そのテキストの前後の空白を取り除きます。<strong>・<a>・<span> などのインライン要素は、見える空白なので両端に 1 つずつ残します。<strong>Note: </strong>read this. はそのままです。

そのまま保持されるもの

  • <script>、<style>、<pre>、<textarea>、<code>、<samp>、<kbd> 内のコンテンツ。
  • 属性値(引用符内の空白や、インラインイベントハンドラを含む)。
  • <!DOCTYPE> 宣言。

HTML を手動圧縮するタイミング

モダンなビルドチェーン(Vite、Webpack、Astro、Next.js)はバンドル時に HTML を自動圧縮します。本ツールは単発の作業に向いています — CMS からエクスポートされたコード、圧縮前後のサイズ比較、手書きテンプレートの確認など。整形は日常的に使える機能で、本番環境の 1 行 HTML を貼り付けてデバッグや diff のための可読版を得られます。

制限

  • インライン要素の両端の空白は、CSS で見えなくなる位置(行頭など)でも残ります。ツールは CSS を読まないため、display や white-space で空白の表示が変わるかどうかは判断できません。
  • まとめるのは HTML の空白(スペース・タブ・改行・改ページ・復帰)だけです。ノーブレークスペースは残ります。Price:&nbsp;&nbsp;10&nbsp;EUR は 3 つのノーブレークスペースを保ったまま、&nbsp; ではなく文字 U+00A0 として出力されます。全角スペース U+3000 も残ります。
  • フラグメントで HTML パーサーが <body> の外へ移す内容は、元の順序で書き戻します。最初の要素より前の <!—[if mso]> のような条件付きコメントと、本文より前の <title>・<meta>・<link>・<style> です。通常のコメントはどこにあっても削除します。
  • インラインの JavaScript と CSS はそのままコピーし、圧縮はしません。
  • HTML はブラウザーの DOMParser で解析するため、不正なマークアップは修復された形で出力され(閉じタグの補完、余分なタグの削除)、doctype は <!doctype html> と書き出されます。

FAQ

<script> や <style> 内の JavaScript / CSS が壊れませんか?

壊れません。インラインスクリプトとスタイルブロックはそのまま保持されます。圧縮対象はタグ間の構造的空白と <script>/<style> 外部の HTML コメントのみです。

HTML はどこかにアップロードされますか?

アップロードされません。ネイティブ DOMParser API でブラウザ内処理が完結し、マークアップが端末を離れることはありません。サーバー通信もありません。

圧縮でどれくらい削減できますか?

入力のインデント量とコメントの多さで変わり、インラインのスクリプトとスタイルには手を加えません。下の例では 234 バイトが 176 バイト(24.8%)になります。圧縮後はステータス行に元サイズ・出力サイズ・削減率が表示されます。

整形はエディタのフォーマット機能と何が違いますか?

整形は HTML をゼロから再パースして階層に沿ってインデントし直します。CMS やテンプレートエンジンから書き出された不揃いなマークアップの整理、1 行に圧縮された HTML の展開、デバッグや diff の前処理に最適です。

doctype・属性値・インラインイベントハンドラは保持されますか?

はい。doctype、すべての属性値、boolean 属性、onclick / onload などのインラインハンドラはそのまま維持されます。IE 条件付きコメントは、フラグメントの最初の要素より前にあるものも含め、他のコメントを削除するときも保持されます。