ToolDeck

HTML ミニファイアー

空白とコメントを削除して HTML を圧縮

サンプルを試す

HTML 入力

圧縮済み HTML

ローカルで実行 · シークレットの貼り付けも安全
圧縮済み HTML がここに表示されます…

HTMLミニファイとは?

HTMLミニファイとは、ブラウザのレンダリング結果を変えることなく、HTMLドキュメントのサイズを削減するプロセスです。HTMLミニファイアーは、開発者の可読性のためだけに存在する文字を除去します。タグ間の空白、コメント、省略可能な閉じタグ、冗長な属性値などがその対象です。出力はソースと機能的に同一でありながら、バイトサイズが小さくなるため、ダウンロードが速くなり、ユーザーの初回描画までの時間が短縮されます。

ブラウザはHTMLをDOMツリーに解析する際に、ほとんどの空白を破棄します。2つのdivタグの間にある連続したスペースや改行は、レンダリングされたページにまったく視覚的な影響を与えません。コメントもパーサーによって無視されます。ミニファイはこれらのルールを活用し、パーサーがいずれ破棄するものを事前に除去することで、ネットワーク経由で転送されることなく済むようにします。

HTMLミニファイによる削減効果はドキュメントによって異なります。コメントが多いテンプレート、深いインデントを持つサーバーレンダリングページ、インラインスタイルが含まれるCMS出力では、ミニファイだけで15〜30%のサイズ削減が見込めます。小さなドキュメントでは絶対的な削減量は控えめですが、高トラフィックなサイトでは数キロバイトのページ削減が何百万リクエストにわたって積み重なり、実際の帯域節約になります。

このHTMLミニファイアーを使う理由

HTMLを貼り付けるだけで、即座に圧縮済みの出力が得られます。ビルドツールのインストールも、設定ファイルも、アカウント登録も不要です。

即時結果
入力と同時に出力が表示されます。ページ全体を貼り付けても、単一のスニペットを貼り付けても、CLIコマンドやビルドステップの完了を待たずにミニファイ結果を確認できます。
🔒
プライバシーファースト処理
すべてのミニファイはJavaScriptを使ってブラウザ内で実行されます。HTMLがデバイスから外に出ることは一切ありません。内部URL、トークン、顧客データを含むマークアップでも安全に使用できます。
📊
サイズレポート
元のバイト数と圧縮後のバイト数を並べて確認できます。ミニファイ済みバージョンを採用するかどうかを判断する前に、正確な削減量を把握できます。
📋
ワンクリックコピー
ミニファイ済みの出力をワンクリックでクリップボードにコピーできます。デプロイパイプラインに貼り付けたり、メールテンプレートにインライン化したり、そのままコミットしたりすることができます。

HTMLミニファイアーの使用例

フロントエンド開発
本番環境にデプロイする前にHTMLテンプレートをミニファイします。サーバーレンダリングページ、静的サイトジェネレーターの出力、シングルページアプリケーションのシェルのペイロードを削減します。
バックエンドエンジニアリング
Django、Rails、Laravelなどのサーバーサイドフレームワークが生成するHTMLレスポンスから、クライアントに送信する前にコメントと空白を除去します。
DevOpsとCIパイプライン
ビルドパイプラインにHTMLミニファイのステップを追加します。ステージングや本番にプッシュする前に、ミニファイ後も正しくレンダリングされることを確認します。
QAとテスト
2つのビルドのミニファイ済み出力を比較して、予期しない構造変化がないか確認します。ミニファイにより空白が正規化されるため、構造的な差分がよりわかりやすくなります。
メールテンプレート最適化
メールクライアントはHTMLメールにサイズ制限を設けています(GmailはHTMLが102KBを超えるとクリップします)。コンテンツをすべて保持しながら、メールテンプレートをミニファイして制限以内に収めます。
Webパフォーマンス学習
HTMLを貼り付けて、ミニファイによってどの部分が除去されるかを確認できます。ブラウザにとって意味的に重要な文字と、単に見た目のための文字を学ぶのに役立ちます。

HTMLミニファイが除去するもの

本格的なHTMLミニファイアーは、空白除去以外にもいくつかの変換を適用します。下の表は一般的な手法を、最も安全(常にロスレス)から最も積極的(闇雲に適用するとエッジケースで問題が生じる可能性)の順に示しています。

手法変換前変換後
Whitespace between tags<div> <p> text </p> </div><div><p>text</p></div>
HTML comments<!-- TODO: fix later -->(removed entirely)
Redundant attribute quotesclass="main"class=main
Boolean attribute valuesdisabled="disabled"disabled
Empty attribute valuesid=""(attribute removed)
Optional closing tags</li>, </td>, </p>(removed when safe)
Type on script/styletype="text/javascript"(removed — default)
Protocol in URLshttps://cdn.example.com//cdn.example.com

ミニファイ vs Gzip圧縮

サーバーがすでにGzipまたはBrotli圧縮を適用しているのにミニファイが必要かどうか、開発者から尋ねられることがあります。簡単な答え:はい、両方を組み合わせると最も効果的です。

ミニファイ
テキストレベルで動作します。パーサーが無視するコメント、空白、冗長な属性などの文字を除去します。圧縮が適用される前の生のファイルサイズを削減します。ビルド時に一度だけ実行されます。
Gzip / Brotli圧縮
バイトレベルで動作します。繰り返すバイトパターンを見つけ、短い参照でエンコードします。WebサーバーによってすべてのHTTPレスポンスに適用されます。到着時にブラウザによって解凍されます。

ミニファイはGzipが処理する入力を削減するため、圧縮後の出力もより小さくなります。GoogleのPageSpeedガイドラインでは両方を適用することを推奨しています。一般的なページでは、ミニファイで生のサイズの15〜25%が削減され、さらにGzipで結果が60〜80%圧縮されます。組み合わせることで、総転送サイズは元のミニファイなし・圧縮なしのドキュメントの10〜20%程度まで削減できます。

コード例

以下は4つの環境でHTMLミニファイを行う実用的な例です。各例ではコメントの削除と空白の圧縮を行います。

JavaScript (html-minifier-terser)
import { minify } from 'html-minifier-terser'

const html = `
  <div class="card">
    <!-- user profile -->
    <p>  Hello, world!  </p>
  </div>
`

const result = await minify(html, {
  collapseWhitespace: true,
  removeComments: true,
  removeRedundantAttributes: true,
  removeEmptyAttributes: true,
})
// → '<div class="card"><p>Hello, world!</p></div>'
Python (htmlmin)
import htmlmin

html = """
<div class="card">
  <!-- user profile -->
  <p>  Hello, world!  </p>
</div>
"""

result = htmlmin.minify(html, remove_comments=True, remove_empty_space=True)
# → '<div class="card"><p>Hello, world!</p></div>'
Go (tdewolff/minify)
package main

import (
    "fmt"
    "github.com/tdewolff/minify/v2"
    "github.com/tdewolff/minify/v2/html"
)

func main() {
    m := minify.New()
    m.AddFunc("text/html", html.Minify)

    input := `<div class="card">
  <!-- user profile -->
  <p>  Hello, world!  </p>
</div>`

    result, _ := m.String("text/html", input)
    fmt.Println(result)
    // → <div class=card><p>Hello, world!</div>
}
CLI (html-minifier-terser)
# Install globally
npm install -g html-minifier-terser

# Minify a file
html-minifier-terser --collapse-whitespace --remove-comments input.html -o output.html

# Pipe from stdin
cat index.html | html-minifier-terser --collapse-whitespace --remove-comments

# With all common optimizations
html-minifier-terser \
  --collapse-whitespace \
  --remove-comments \
  --remove-redundant-attributes \
  --remove-empty-attributes \
  --minify-css true \
  --minify-js true \
  input.html -o output.min.html

よくある質問

HTMLミニファイでページが壊れることはありますか?
安全なミニファイ(コメントの削除と空白の圧縮)はブラウザのレンダリングを変えません。省略可能な閉じタグの削除やboolean属性の圧縮などの積極的なオプションはHTML仕様の一部であり、すべての現代のブラウザで動作します。注意すべき点はpreとtextareaのコンテンツで、ここでは空白が重要です。優れたミニファイアーはこれらの要素内の空白を保持します。
ミニファイ後、HTMLはどれくらい小さくなりますか?
典型的な削減量は元のファイルサイズの10〜30%で、ソースにどれだけ空白やコメントが含まれているかによります。インデントが深く、コメントが多いテンプレートほど大きな効果が得られます。すでにコンパクトでフォーマットが最小限のHTMLでは、5〜8%程度しか縮小しない場合もあります。
すでにGzipを使用している場合でもHTMLをミニファイすべきですか?
はい。ミニファイと圧縮は異なるレベルで動作します。ミニファイは冗長なテキスト文字を除去し、Gzipは繰り返すバイトパターンを見つけます。先にミニファイすることでGzipが処理するデータが少なくなり、より小さな圧縮出力が得られます。Googleは両方を適用することを推奨しています。
インラインJavaScriptを含むHTMLをミニファイしても安全ですか?
基本的な空白圧縮ミニファイアーはscriptタグ内のコンテンツを変更しません。--minify-jsオプションを持つミニファイアーはJSミニファイアーを使ってインラインJavaScriptも圧縮します。インラインスクリプトが重要な空白に依存している場合(まれ)は、出力をテストしてください。ほとんどのインラインスクリプトはミニファイ後も正常に動作します。
HTMLミニファイとHTML圧縮の違いは何ですか?
ミニファイはビルド時のテキスト変換で、不要な文字を除去します。圧縮(Gzip、Brotli)はサーバー時のバイナリエンコードで、HTTPレスポンスを縮小します。ミニファイは不可逆(コメントは完全に消える)ですが、圧縮は到着時にブラウザによって逆変換されます。
ミニファイはSEOに影響しますか?
いいえ。検索エンジンのクローラーはブラウザと同様にDOMを解析します。空白やコメントは無視されます。ミニファイはDOM構造を変えないため、検索エンジンによるページのインデックスに影響しません。HTMLが小さくなることによるページ読み込み時間の短縮は、Core Web Vitalsシグナルを通じて間接的にランキングを改善する可能性があります。
HTMLミニファイはCSSやJavaScriptのミニファイとどう違いますか?
CSSやJavaScriptのミニファイアーは変数名の変更、デッドコードの除去、各言語固有の最適化を行います。HTMLミニファイアーはよりシンプルで、HTMLには最適化すべき変数や実行可能なロジックがありません。HTMLミニファイは空白、コメント、冗長な属性構文に焦点を当てています。