100% ローカル — データがブラウザの外に出ることはありません

HTMLミニファイア|見た目はそのままにページを軽くできます

HTMLから空白を取り除きます。属性値と、インライン要素どうしの間の空白は残るので、ページは小さくなり、画面での見え方のほうは、これまでと少しも変わることがありません。

高速 プライベート Cookieゼロ

HTML 入力

HTML 出力

このツールの動作

読みやすい HTML が、同じように表示される最小の HTML になります。

<div>
  <p>  こんにちは  </p>
</div>
<div><p> こんにちは </p></div>

続いた空白はひとつになり、ブロック要素のあいだの空白は落ち、コメントも落ちます。条件付きのものは別です。読み手への覚え書きではなく、古いブラウザーへの指示だからです。

行内要素のあいだの空白は内容

<span>a</span> <span>b</span>
<span>a</span> <span>b</span>

ここに取り除くものはありません。この空白は表示され、消せば「a b」が「ab」になります。以前は消していました。小さくするどころか、ページを変えていたわけです。本物の欠陥で、このページを書く過程で見つけ、直しました。ブロック要素のまわりでは、同じ空白は表示に現れないので落とします。

<div>a</div>   <div>b</div>
<div>a</div><div>b</div>

属性の値は体裁ではない

<input value="a  b">
<input value="a  b">

空白は二つのまま残ります。以前はひとつにまとめられていました。空白をまとめる処理が属性の中まで通っていたからです。フォームが送る値、title の文言、alt の中身はデータであって、字下げではありません。引用符で囲まれた値は、まとめる前に脇へ置き、手を触れずに戻します。

けっして踏み込まないもの

  • <pre> と <textarea>。 書かれたとおりに表示され、送信されます。
  • <script> と <style>。 中身は JavaScript と CSS です。それぞれの圧縮ツールはこの場所に別に用意してあり、かけるかどうかはあなたの判断であって、こちらの副作用ではありません。
  • 条件付きコメント。 <!--[if IE]>…<![endif]--> はブラウザーが読むので残します。

知っておくとよい限界がひとつ。守られた区域は、模様で見つけた閉じタグで終わります。JavaScript の文字列の中に書かれた </script> は、したがって区域を早く閉じてしまいます。その場合まで正しく扱うには、本物の HTML 解析器が要ります。空白を落とす道具とは別のものです。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

ページの見た目は変わりますか。
いいえ。そしてこれは直す価値のある点でした。行内要素のあいだの空白は表示されます。`<span>a</span> <span>b</span>` は「a b」と読まれ、その空白を取ると「ab」になっていました。いまは両側が行内要素なら残し、ブロック要素のまわりでは取り除きます。そこでは表示に現れないからです。小さくはしますが、変えはしません。
属性の値は触られますか。
もう触りません。空白をまとめる処理が属性の中まで通っていたので、`<input value="a b">` は空白ひとつになって返っていました。フォームが送る値は体裁の話ではありません。`title` も `alt` も `data-*` も同じ問題を抱えていました。引用符で囲まれた値は、まとめる前に脇へ置き、そのまま戻します。
まったく手を触れないものは何ですか。
`<pre>` と `<textarea>` です。中の空白は書かれたとおりに表示され、あるいは送信されます。`<script>` と `<style>` も同じで、中身は HTML ではありません。条件付きコメント(`<!--[if IE]>`)も残します。読み手への覚え書きではなく、ブラウザーへの指示だからです。ふつうのコメントは取り除きます。既知の限界がひとつ。JavaScript の文字列の中に書かれた `</script>` は、守られた区域を早く閉じてしまいます。そこまで見分けるには、本物の HTML 解析器が要ります。
` は、守られた区域を早く閉じてしまいます。そこまで見分けるには、本物の HTML 解析器が要ります。"}}]}

関連ツール