§

Options

Minify options
§

Вставьте HTML

§

Минифицированный вывод

html
§

Сэкономлено %

  • Исходный размер
  • Минифицированный размер
  • Сэкономлено
  • Сэкономлено %

Российские JAMstack-команды Ozon, Яндекс.Маркет и РИА Новости запускают HTML-минификацию в конце каждого CI-сборщика, потому что Yandex Cloud CDN и CloudFront тарифицируют переданные байты, а Lighthouse снижает баллы за объёмные документы. Производственная сборка Next.js или Astro после удаления пробелов, комментариев и избыточных атрибутов обычно становится легче на 15–25%, что на миллионах просмотров в месяц выливается в ощутимую экономию на счетах. Выполнение прохода прямо в браузере перед коммитом даёт ту же экономию байтов без добавления сторонней библиотеки в репозиторий.

Как работает минификация HTML

Минификатор обходит входные данные небольшим конечным автоматом, который различает регионы «сохранить как есть» (<pre>, <textarea>, <script>, <style>) и редактируемые регионы, где пробелы и комментарии можно безопасно свернуть.

  1. Токенизация блоков сохранения. Сканер читает входные данные символ за символом и переходит в состояние сохранения, когда встречает открывающий тег <pre>, <textarea>, <script> или <style>. Всё внутри этих тегов копируется побайтово до соответствующего закрывающего тега.
  2. Сворачивание редактируемых пробелов. В редактируемых регионах сканер сворачивает каждую цепочку пробелов, табуляций и переводов строк в один пробел, затем обрезает ведущие и хвостовые пробелы вокруг границ тегов. Видимый текст переносится так же, как браузер его рендерит.
  3. Удаление комментариев. Блоки <!-- ... --> удаляются при включённом переключателе. Условные комментарии IE (<!--[if IE]> ... <![endif]-->) остаются при включённом переключателе сохранения условных комментариев, поскольку старые почтовые клиенты всё ещё на них полагаются.
  4. Сворачивание булевых атрибутов. Многословные формы вроде checked="checked", disabled="disabled" и required="required" сводятся к голому имени атрибута. Спецификация HTML5 считает голую форму семантически идентичной, поэтому рендеримое DOM-дерево не изменяется.
  5. Отчёт о разнице байтов. Исходный и минифицированный тексты измеряются через new TextEncoder().encode(...).byteLength — тот же счётчик UTF-8 байт, что видит CDN или HTTP-сервер на проводе. Панель метрик показывает исходный размер, минифицированный размер, сэкономленные байты и процент экономии.

Зачем минифицировать HTML

  • Более быстрая загрузка страниц. Меньший HTML быстрее достигает браузера, и парсер завершает работу раньше. В мобильных сетях экономия байтов напрямую преобразуется в более быстрый First Contentful Paint и лучший показатель производительности Lighthouse.
  • Меньше расходов на CDN egress. CloudFront, Cloudflare и Fastly берут плату за гигабайт исходящего трафика. Сокращение HTML на 20% при миллионах просмотров в месяц оборачивается реальной экономией в счёте ещё до оптимизации изображений или скриптов.
  • Чистые diff в pull-request. Предварительно собранный статичный HTML, зафиксированный в репозитории, создаёт шум при каждой правке шаблона из-за рефлоу отступов. Минифицированный HTML в папке dist даёт более компактные diff в PR, сосредотачивая внимание на реальных изменениях содержимого, а не на пробельной суете.
  • Меньшие вставки и сниппеты. Email-шаблоны, сниппеты сторонних виджетов и HTML внутри JSON или YAML конфигов — все выигрывают от той же экономии байтов. Минифицированные вставки укладываются в ограничения ESP по размеру письма и уменьшают бандлы виджетов.

Типичные применения

Минификация HTML появляется в конце почти каждого статического сайта или JAMstack-пайплайна, а также в ряде runtime-контекстов, где байты важнее читаемости исходника.

  • Шаги сборки статических сайтов: Eleventy, Hugo, Astro и Next.js в продакшен-сборке прогоняют HTML через минификатор перед записью в dist, чтобы развёрнутый бандл был меньше исходника.
  • Транзакционные письма: ESP (SendGrid, Postmark, Mailgun) ограничивают размер HTML-тела, а раскрытие inline-CSS быстро его наращивает. Минификация тела перед отправкой удерживает письмо в рамках лимита.
  • Встраиваемые виджеты: сторонние виджеты и чат-сниппеты, поставляемые как inline-HTML, загружаются хост-страницей при каждом визите, поэтому каждый сэкономленный байт важен.

Практический пример

Вставьте многословный 500-байтный сниппет формы с двухпробельным отступом, тремя переводами строк между строками, блоком HTML-комментария вверху и элементом <input type="checkbox" checked="checked" />. При включённых всех опциях вывод сожмётся примерно до 300 байт — экономия около 40% — а рендеримое DOM-дерево останется байт-в-байт идентичным исходнику.

Сломает ли минификация мой HTML?

Нет, при использовании переключателей по умолчанию. Минификатор дословно сохраняет содержимое тегов <pre>, <textarea>, <script> и <style>, при включённом переключателе оставляет условные комментарии IE нетронутыми и сворачивает только пробелы, которые парсер HTML5 уже классифицирует как незначащие. Рендеримое DOM-дерево байт-в-байт идентично исходнику. Агрессивные переключатели (удаление пустых атрибутов) могут изменить поведение для сниппетов, намеренно использующих value="" или alt="", поэтому после их включения проверьте вывод.

Минифицирует ли этот инструмент inline CSS и JS?

В этом инструменте — нет. Тела встроенных <style> и <script> сохраняются дословно, чтобы минификатор никогда не сломал CSS-правило или JS-выражение, свернув пробел внутри строкового литерала или регулярного выражения. Для CSS-минификации используйте CSS Minifier, для JS — JS Minifier. HTML Minifier сосредоточен исключительно на разметке.

Насколько можно сэкономить?

Типичная экономия на HTML, написанном вручную, составляет от 10 до 30% в зависимости от того, насколько активно в исходнике используются отступы, пустые строки и многословные формы атрибутов. Предварительно собранный статический HTML из Next.js и подобных фреймворков обычно даёт 15–25%, поскольку фреймворк уже выполняет часть оптимизаций, но оставляет читаемые пробелы. Шаблоны с большим количеством комментариев и email-HTML с глубокой вложенностью могут давать 40% и более.

Сохраняется ли содержимое pre?

Да. Минификатор явно токенизирует блоки <pre>, <textarea>, <script> и <style> как регионы «сохранить как есть» и копирует их содержимое байт в байт на выход. Пробелы, переводы строк и отступы внутри этих тегов остаются нетронутыми, поэтому примеры кода и ASCII-арт выглядят после минификации абсолютно так же, как и раньше.

Браузерная минификация HTML упрощает пайплайн сборки и уменьшает разметку. Вставьте любой HTML выше, настройте переключатели опций и скопируйте или скачайте минифицированный вывод — без загрузки, без аккаунта, без сторонних библиотек.