HTML Encoder

HTML Encoder / Decoder

Экранируйте `& < > " '` в безопасные HTML-сущности или декодируйте текст с экранированными сущностями обратно в обычный. Четыре уровня кодирования — Minimal, Named, Numeric, All non-ASCII. Безопасно для UTF-8 + emoji + CJK, в вашем браузере.

По умолчанию — Minimal: экранируйте только & < > " ', пять символов, которые ломают HTML-контексты тела и атрибутов. Так делает любой современный шаблонизатор. Используйте Named entities, если хотите видеть copyright / nbsp / стрелки и т. п. в виде читаемых кодов (&copy; вместо &#169;). Используйте Numeric, когда отправляете HTML через пайплайны, которые могут не понимать именованные сущности. Используйте All non-ASCII, когда целевая система строго ASCII-only (устаревшие почтовые серверы, сломанные API).

&apos; допустимо в XML и HTML5, но не в HTML 4.01 — старые браузеры рендерят это как литеральный текст '. Числовая ссылка &#39; работает везде. Декодер принимает &apos; на вход для совместимости.

Ввод
Результат

Создано для безопасного HTML-вывода

Экранируйте пользовательский контент для шаблонов, декодируйте данные с HTML-сущностями — и пара мелочей, благодаря которым этим действительно приятно пользоваться.

Четыре режима кодирования

Minimal экранирует только пять небезопасных для HTML символов (& < > " ') — правильный выбор по умолчанию для обычного пользовательского контента. Named использует читаемые HTML5-сущности вроде &copy; / &nbsp; / &hearts; там, где они существуют. Numeric кодирует каждую non-ASCII-кодовую точку как &#NN;. All non-ASCII кодирует каждую кодовую точку за пределами печатного ASCII для устаревших / только-ASCII пайплайнов.

Декодирование любых сущностей

Декодер обрабатывает именованные сущности (&copy;), десятичные числовые (&#169;) и шестнадцатеричные числовые (&#xA9;). Кодовые точки из суррогатных пар (emoji, древние письменности) корректно проходят туда-обратно через UTF-16.

Живое превью

Результат обновляется при каждом нажатии клавиши — никакой кнопки Encode / Decode нажимать не нужно. Меняйте направление одним кликом; кнопка Swap переносит результат обратно во ввод, чтобы можно было сцеплять преобразования.

Безопасно для UTF-8 + emoji + CJK

Каждая кодовая точка Unicode проходит туда-обратно: 中文, العربية, русский, हिंदी, 🎉, Þorgeir. Кодировщик использует обход по кодовым точкам (а не charAt), так что суррогатные пары остаются целыми.

Приватность по умолчанию

Ваш текст остаётся на вашем устройстве. Кодировщик, декодер и таблица именованных сущностей выполняются локально на JavaScript. Откройте DevTools → Network и убедитесь, что исходящих запросов ноль.

Маленький и быстрый

Чистый JavaScript, без рантайма какого-либо фреймворка. Холодная загрузка — менее 25 КБ gzip. HTML-документ в 100 КБ кодируется быстрее чем за 5 мс.

Как кодировать или декодировать HTML-сущности

Четыре шага от исходного текста до безопасного по сущностям вывода.

  1. 1

    Вставьте текст

    Бросьте обычный текст или HTML в панель Input. Подойдёт что угодно — комментарии пользователей, посты в блоге, emoji, CJK, RTL-письменности. Кодировщик обходит ввод по кодовым точкам, так что многобайтные последовательности остаются целыми.

  2. 2

    Выберите направление и режим

    Установите Direction в Encode (текст → сущности) или Decode (сущности → текст). Для Encode выберите режим: Minimal для шаблонов, Named для читаемых сущностей, Numeric для non-ASCII в виде &#NN;, All non-ASCII для вывода только в ASCII.

  3. 3

    Смотрите живое превью

    Вывод обновляется при каждом нажатии клавиши. Сравнивайте режимы в реальном времени, переключая выпадающий список. Используйте Swap, чтобы перенести результат обратно во ввод — удобно для проверки round-trip (закодировать, потом декодировать = оригинал).

  4. 4

    Скопируйте или скачайте

    Используйте иконку копирования, чтобы отправить результат в буфер обмена, или иконку загрузки, чтобы сохранить его как output.encode.html / output.decode.txt. Разница в размере (символов / байт ввод → вывод) показывает, насколько именно кодирование увеличило или уменьшило текст.

Создано для повседневной веб-разработки

Четыре частых сценария, где приватный браузерный инструмент лучше, чем вставка кода в случайный онлайн-кодировщик.

Безопасное встраивание пользовательского контента в шаблон

Комментарии пользователей, ответы из форм, поисковые запросы — всё, что приходит извне и оказывается внутри <p>, <li> или атрибута. Прогоните через Minimal-кодирование перед склейкой строк в HTML — и вы защищены от сломанной разметки и простейших XSS-нагрузок.

Чтение данных с HTML-сущностями из API

Некоторые API возвращают строки уже с экранированными сущностями (RSS-фиды, экспорты определённых CMS, спарсенный HTML). Вставьте, нажмите Decode и получите исходный Unicode. Декодер работает с именованными, десятичными и шестнадцатеричными сущностями, включая суррогатные пары.

Темы писем и meta-теги

<title>, <meta name="description">, <meta property="og:title"> — всем нужны экранированные сущности для специальных символов. Закодируйте заголовок один раз и вставьте во все три места.

Чувствительный контент, который нельзя отдавать сторонним сервисам

Внутренний контент CMS, данные клиентов, шаблоны под NDA — всё, что нельзя вставлять в облачный кодировщик. Браузерный инструмент держит каждый байт на вашем ноутбуке. Откройте DevTools → Network и убедитесь, что ничего не уходит.

100% приватно — работает в вашем браузере

Ваш текст никогда не покидает ваше устройство. Откройте DevTools → Network — и увидите ноль исходящих запросов во время кодирования или декодирования.

  • Кодировщик, декодер и таблица именованных сущностей выполняются как JavaScript на вашей машине — никакого серверного преобразования, никаких сторонних API.
  • Кодовые точки из суррогатных пар (emoji, древние письменности) обрабатываются обходом по кодовым точкам, а не побайтовым отображением — так что вставленный 🎉 остаётся 🎉 после round-trip.
  • Без логина, без телеметрии по содержимому текста. Мы используем только одну cookie для состояния согласия и одну для языковой настройки.

Похожие руководства

Подборка материалов про HTML-экранирование, таблицы сущностей и безопасные шаблоны.

Частые вопросы

Какой режим выбрать?

По умолчанию — Minimal: экранируйте только & < > " ', пять символов, которые ломают HTML-контексты тела и атрибутов. Так делает любой современный шаблонизатор. Используйте Named entities, если хотите видеть copyright / nbsp / стрелки и т. п. в виде читаемых кодов (&copy; вместо &#169;). Используйте Numeric, когда отправляете HTML через пайплайны, которые могут не понимать именованные сущности. Используйте All non-ASCII, когда целевая система строго ASCII-only (устаревшие почтовые серверы, сломанные API).

Почему `'` экранируется как `&#39;`, а не `&apos;`?

&apos; допустимо в XML и HTML5, но не в HTML 4.01 — старые браузеры рендерят это как литеральный текст '. Числовая ссылка &#39; работает везде. Декодер принимает &apos; на вход для совместимости.

Сохранятся ли emoji и CJK-символы?

Да. Кодировщик обходит кодовые точки (а не блоки кода UTF-16), так что emoji вроде 🎉 (U+1F389) превращаются в &#127881; при кодировании и корректно возвращаются при декодировании. То же касается CJK (中文 → &#20013;&#25991; в режиме numeric).

Безопасно ли встраивать пользовательский ввод напрямую в HTML после кодирования?

Для тела и атрибутов HTML — да, в режиме Minimal. Для URL-контекстов (href="...") дополнительно нужно URL-кодирование. Для встроенного JavaScript или CSS ни HTML-, ни URL-кодирования недостаточно — используйте полноценный шаблонизатор, который понимает эти контексты. Никогда не вставляйте неэкранированный пользовательский ввод в блок <script>.

Отправляется ли что-нибудь на ваш сервер?

Нет. Кодировщик, декодер и таблица именованных сущностей выполняются на JavaScript у вас на устройстве. Откройте DevTools → Network — и увидите ноль исходящих запросов во время кодирования или декодирования. Вставляйте секреты, данные клиентов, внутренние шаблоны — ничего не покидает ваш ноутбук.