ToolActToolAct

Инструмент форматирования HTML

Ввод HTML
Результат
Строк: 1Символов: 0Байт: 0
Строк: 1Символов: 0

Что такое форматирование HTML?

Форматирование HTML превращает неаккуратную или сжатую разметку в читаемый код с последовательными отступами, переносами строк и понятной иерархией тегов. Это упрощает ревью, отладку, обучение, передачу между командами и сопровождение, особенно когда нужно найти незакрытые теги, неправильную вложенность, длинные списки атрибутов или трудно читаемый сгенерированный HTML. Для production иногда нужна обратная операция: минификация удаляет лишние пробелы, комментарии и переносы, уменьшая размер передачи. Инструмент помогает переключаться между читаемостью и компактностью, но не исправляет автоматически семантику, доступность, битые ссылки, небезопасные вставки и ошибки шаблонов. Для production-данных или кодовой базы результат все равно нужно проверить parser, тестами или правилами проекта.

Как использовать

Как использовать

  1. Вставьте или введите HTML-код в левое поле ввода
  2. Выберите размер отступа и длину строки переноса
  3. Нажмите «Форматировать», чтобы сделать код читаемым, или «Минифицировать» для уменьшения размера
  4. Просмотрите отформатированный код справа (с подсветкой синтаксиса)
  5. Нажмите «Копировать», чтобы скопировать в буфер обмена

Описание параметров

Размер отступаВыберите отступ в 2 пробела, 4 пробела или табуляцию
Длина строки переносаАвтоматический перенос при превышении указанного количества символов, выберите «Без ограничений» для сохранения оригинала

Горячие клавиши

  • Ctrl + EnterФорматировать
  • Ctrl + Shift + CКопировать результат

Советы по форматированию

  • Форматирование может выявить нарушенную вложенность или подозрительные инлайн-скрипты, но не очищает HTML и не делает опасную разметку безопасной.
  • Минифицируйте только копии для публикации. Сохраняйте читаемый исходный код для ревью, сравнений и проверок доступности.

Применение

Форматирование вставленного HTML со встроенными блоками style и scriptВставьте разметку и выберите отступ — 2 пробела, 4 пробела или табуляцию. Форматировщик удаляет комментарии, сохраняет содержимое pre, форматирует извлечённые блоки style и script, а затем возвращает их обратно в HTML-структуру.
Минификация небольшого HTML-фрагмента для встраиванияПереключитесь в режим сжатия, чтобы убрать пробелы между тегами и удалить комментарии перед копированием или скачиванием компактного фрагмента. При ошибках парсинга указываются строка и столбец, что позволяет исправить незакрытый тег из CMS-экспорта без повторного открытия редактора. Прогоните результат через линтер проекта или html-validate перед встраиванием в продакшен, так как форматирование не очищает атрибуты, инлайн-скрипты и небезопасные значения href.
Использование для обозримых фрагментов, а не полной валидации сборкиРеализация намеренно лёгкая, на основе токенов, поэтому лучше всего подходит для скопированных фрагментов, email-кусков и CMS-экспортов. Сложные шаблоны, особенно с Vue, Angular или серверными partials с пользовательскими элементами, стоит прогонять через собственный форматировщик или парсер проекта, а проверку доступности — отдельно через axe-core или Lighthouse на отрендеренном DOM, а не на отформатированном исходнике.
Форматирование сгенерированного HTML из CMS или email-конструктораВставьте экспортированную разметку из CMS, рассылочного сервиса или email-конструктора и переформатируйте, чтобы выявить незакрытые div, неправильную вложенность таблиц или случайные теги script перед отправкой кампании. Сопровождайте результат отдельной проверкой доступности на отрендеренном DOM, поскольку форматировщик только меняет отступы, но не исправляет отсутствующий alt, контраст или ARIA-роли.
Переключение между форматированным и сжатым видом для сравнения diffПереключайте один и тот же фрагмент между режимами форматирования и минификации, чтобы сравнить читаемый diff с продакшен-версией при расследовании проблем с вёрсткой или атрибутами. Оба результата генерируются одним парсером, поэтому любые различия объясняются пробелами, комментариями или порядком атрибутов, а не расхождениями двух разных форматировщиков.

Технический принцип

Форматировщик HTML следует алгоритму построения дерева WHATWG HTML Standard. Байты декодируются (обычно UTF-8 по meta charset или BOM), токенизатор проходит через состояния data, RCDATA, RAWTEXT, script-data и несколько состояний атрибутов, определённых в разделе 13.2.5, а этап построения дерева формирует DOM с использованием конечного автомата режимов вставки (initial, before html, in head, in body, in table, in select и так далее). Парсер по конструкции прощающий: незакрытый <p> автоматически закрывается при встрече блочного элемента, блуждающий </tr> игнорируется, а неправильно расположенный <table> получает foster-родителя. Парсеры уровня браузера предоставляют это через new DOMParser().parseFromString(src, 'text/html'); инструменты на стороне Node используют parse5 (эталонная реализация WHATWG), htmlparser2 или cheerio. Повторный вывод обходит полученное дерево и сериализует по категориям элементов. Пустые элементы — area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr — никогда не получают закрывающий тег в HTML5 (самозакрывающийся XHTML-формат /> допускается, но не обязателен). Блочные контейнеры (div, section, article, header, footer, nav, main, ul, ol, li, table) получают собственную строку с отступом в depth*indent пробелов; строчное/инлайн-содержимое (span, a, strong, em, code) остаётся в строке, поскольку CSS white-space: normal сводит последовательности пробелов к одному символу. Два типа элементов должны сохраняться дословно: <pre> и <textarea> несут семантику white-space: pre, а их начальный перенос строки поглощается парсером; тела <script> и <style> являются RAWTEXT, поэтому переиндентация их содержимого изменила бы поведение во время выполнения — их обычно делегируют подформатировщику JS или CSS и встраивают обратно. Сериализация атрибутов нормализует кавычки (одинарные vs двойные) и перекодирует встроенные разделители через именованные ссылки &amp;, &lt;, &gt;, &quot; и числовую &#39;. Порядок атрибутов не важен в DOM, поэтому форматировщики обычно применяют стабильный порядок (id, class, затем по алфавиту). Перенос строк включается при превышении настроенного printWidth: атрибуты разбиваются по одному на строку, а закрывающий > либо находится на отдельной строке (prettier-plugin-html bracketSameLine: false), либо прикреплён к последнему атрибуту. Минификация обращает процесс вспять — пробелы между блочными тегами удаляются, комментарии убираются, кроме условных IE <!--[if, а кавычки опускаются для атрибутов, чьё значение соответствует [A-Za-z0-9._-]+. Обе операции имеют сложность O(n) по длине входных данных.

  • Парсер: построение дерева WHATWG HTML (раздел 13) через DOMParser('text/html') в браузере, parse5/htmlparser2/cheerio на Node; конечный автомат режимов вставки обрабатывает отсутствующие/неправильно расположенные теги и foster-parenting
  • Пустые элементы (без закрывающего тега): area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr — 14 элементов по HTML Living Standard. Самозакрывающийся XHTML-формат /> допускается, но избыточен
  • Элементы с сохранением пробелов: <pre> и <textarea> несут CSS white-space: pre и поглощают один начальный перенос строки; их внутренние байты никогда не переиндентируются, иначе видимый вывод изменится
  • Контексты RAWTEXT: тела <script> и <style> не являются HTML — они делегируются подформатировщикам JS/CSS (или остаются без изменений). Переиндентация сырого текста внутри regex или строкового литерала сломает семантику выполнения
  • Нормализация атрибутов: выбирается стиль кавычек (одинарные/двойные), встроенные разделители перекодируются пятью именованными ссылками (&amp;, &lt;, &gt;, &quot;, &#39;), применяется стабильный порядок (id, class, затем по алфавиту), так как порядок в DOM не важен
  • Перенос строк при превышении printWidth (обычно 80/100/120): атрибуты разбиваются по одному на строку, закрывающий > либо на отдельной строке, либо прикреплён к последнему атрибуту — аналогично опции bracketSameLine в prettier-plugin-html
  • Минификация: сворачивает межтеговые пробелы, удаляет комментарии (сохраняя условные <!--[if IE]>), убирает необязательные закрывающие теги (</li>, </p> перед следующим sibling) и убирает кавычки для атрибутов, соответствующих [A-Za-z0-9._-]+; round-trip имеет сложность O(n)

Примеры

Минифицированный HTML → отформатированный (отступ 2 пробела)

Вход:
<div class="card"><h2>Title</h2><p>Body text</p></div>

Отформатировано:
<div class="card">
  <h2>Title</h2>
  <p>Body text</p>
</div>

Форматирование → минификация (продакшн-деплой)

Исходник (412 байт):
<nav>
  <ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
  </ul>
</nav>

Минифицировано (96 байт, -77%):
<nav><ul><li><a href="/">Home</a></li><li><a href="/about">About</a></li></ul></nav>

Длинный список атрибутов перенесён на несколько строк

Вход:
<input type="email" id="user-email" name="email" placeholder="you@example.com" required autocomplete="email">

Отформатировано (перенос > 80 символов):
<input
  type="email"
  id="user-email"
  name="email"
  placeholder="you@example.com"
  required
  autocomplete="email"
>

Самозакрывающиеся теги и встроенный контент сохранены

Вход:
<p>Click <a href="/docs">here</a> for help.<br><img src="icon.png" alt=""></p>

Отформатировано (встроенные соседи остаются на одной строке):
<p>
  Click <a href="/docs">here</a> for help.
  <br>
  <img src="icon.png" alt="">
</p>

Часто задаваемые вопросы

Что именно форматирует инструмент?

HTML-разметку: отступы, расположение атрибутов, обработку пустых строк и (при желании) перенос строк по выбранной ширине. Отображаемый результат не меняется — страница выглядит так же, просто исходник становится читабельнее.

Сохранятся ли мои блоки <pre>, <textarea> и <script>?

Да. Пробелы внутри pre, textarea, code и script значимы (они видны на странице), и форматтер их не трогает. У остальных элементов пробелы нормализуются.

Почему мои самозакрывающиеся теги переписаны?

В HTML5 <br/>, <img/>, <hr/> равносильны <br>, <img>, <hr> — слэш не обязателен. Форматтер может приводить их к одному стилю. Для XHTML, JSX или шаблонов Vue настройте форматтер так, чтобы он сохранял завершающий слэш.

Проверяет ли инструмент HTML на валидность?

Нет. Он форматирует то, что вставлено. Для валидации используйте W3C Validator или инструменты разработчика в браузере. Типичные проблемы вроде незакрытых тегов или несовпадающих кавычек проходят форматирование без замечаний.

HTML загружается куда-то?

Нет. Форматирование выполняется в браузере. Вставленный HTML не уходит в сеть.

Можно ли минифицировать HTML?

Да, если есть режим минификации. Минификация HTML удаляет пробелы между тегами, схлопывает последовательности пробелов внутри текста и убирает необязательные закрывающие теги. Читать такой код сложнее, но он меньше — это полезно для продакшен-сборок.

А что с встроенными CSS и JS?

Содержимое <style> и <script> обычно форматируется собственными форматтерами CSS и JS, если инструмент их поддерживает. Иначе их внутренний код остаётся как есть, чтобы не сломать синтаксис.

Похожие инструменты

Инструмент форматирования XML

Онлайн-инструмент для форматирования XML с автоматическим отступом, валидацией синтаксиса и сжатием. Настраиваемый отступ, быстрое обнаружение ошибок формата XML.

Инструмент форматирования CSS

Онлайн-инструмент для форматирования CSS с подсветкой синтаксиса и сжатием. Одним нажатием упорядочите таблицы стилей CSS.

Инструмент форматирования JavaScript

Онлайн-инструмент для форматирования JavaScript с подсветкой синтаксиса, сжатием и проверкой. Одним нажатием упорядочите JS код.

Инструмент форматирования JSON

Онлайн-инструмент для форматирования JSON с подсветкой синтаксиса, обнаружением ошибок и сжатием. Одним нажатием форматируйте JSON данные, быстро находите ошибки формата.

Кодировщик HTML-сущностей

Бесплатный онлайн-кодировщик HTML-сущностей: преобразует спецсимволы в сущности и обратно. Защищает от XSS-атак и обеспечивает безопасный вывод HTML.

Кодировщик/Декодировщик URL

Бесплатный онлайн-кодировщик и декодировщик URL для параметров, текста Unicode и спецсимволов. Исправляйте проблемы с кодировкой ссылок прямо в браузере.