Загрузить файл
  1. base64hub
  2. Веб и токены
  3. HTML-сущности

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

Экранируйте &, <, > и кавычки, чтобы текст можно было безопасно вставить в HTML, или превращайте &amp;, &eacute; и &#x2014; обратно в символы, которые за ними стоят.

Бесплатно без регистрации и ограничений Локально ничего не загружается HTML5 любая именованная сущность через парсер браузера Обновлено 27 окт. 2026 г.
Ввод 0Результат 0

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как экранировать HTML или снять экранирование

  1. Выберите Экранировать или Снять экранирование.
  2. Для экранирования выберите в Экранировать, что именно экранировать:
    • Только & < > " ‘: для HTML, который вы вставите в страницу или шаблон.
    • Плюс все не-ASCII: для страниц, писем или систем, которые плохо дружат с UTF-8.
    • Все символы: чтобы закодировать весь текст, например для проверки парсеров.
  3. Выберите Формат: Именованные (é), Десятичные (é) или Шестнадцатеричные (é). Для символов без общепринятого имени именованный формат переходит на десятичный. Снимите галочку Экранировать кавычки, если текст попадёт только в содержимое элемента.
  4. Нажмите Скопировать результат. Поменять местами переносит результат на другую сторону, чтобы проверить обратное преобразование.

Для снятия экранирования инструмент берёт HTML-парсер браузера и поэтому понимает все именованные ссылки HTML5 (их больше 2000), а также десятичные и шестнадцатеричные. Ввод никогда не отображается как HTML.

Частые сущности

СимволИменованнаяДесятичнаяШестнадцатеричная
&&amp;&#38;&#x26;
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos; (HTML5)&#39;&#x27;
неразрывный пробел&nbsp;&#160;&#xA0;
é&eacute;&#233;&#xE9;
—&mdash;&#8212;&#x2014;
€&euro;&#8364;&#x20AC;
©&copy;&#169;&#xA9;
😀нет&#128512;&#x1F600;

Числовые ссылки используют кодовую точку Unicode, а не байты UTF-8, поэтому эмодзи записывается одной ссылкой, а не четырьмя.

Подводные камни при экранировании и декодировании

  • Сначала экранируйте &. Если заменить < на &lt;, а потом & на &amp;, получится &amp;lt;. Любой самописный экранировщик должен обрабатывать & раньше остальных.
  • Неэкранированный & в тексте может превратиться в символ. HTML до сих пор распознаёт некоторые устаревшие сущности без точки с запятой, поэтому текст ?id=1&copy=2&para=3 отображается как ?id=1©=2¶=3. Пишите &amp; для каждого амперсанда, в URL тоже.
  • Двойное экранирование проявляется на странице как &amp;lt;b&amp;gt;. Снимите экранирование один раз, а потом найдите, какой слой экранирует повторно.
  • &nbsp; не пробел. Он декодируется в U+00A0, который выглядит как пробел, но в некоторых языках ломает сравнение строк и trim().
  • Сущности не заменяют URL-кодирование. В ссылке &amp; разделяет параметры запроса в исходном HTML, а %26 означает буквальный амперсанд внутри значения. Со вторым справится URL-кодировщик.

Экранирование и его снятие в коде

import html
html.escape('5 > 3 & "quotes"')    # '5 &gt; 3 &amp; &quot;quotes&quot;'
html.unescape("Caf&eacute; &#x2014; &copy;")   # 'Café — ©'
const escapeHtml = s => s.replace(/&/g, "&amp;").replace(/</g, "&lt;")
  .replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");

const unescapeHtml = s =>
  new DOMParser().parseFromString(s, "text/html").documentElement.textContent;

html.escape в Python по умолчанию экранирует кавычки и записывает ' как &#x27;. В PHP обычно используют htmlspecialchars(); начиная с PHP 8.1 она по умолчанию экранирует оба вида кавычек. DOMParser не выполняет скрипты в разобранном документе, поэтому это безопасный способ декодировать в браузере. Подробнее о работе со строками рассказывает страница про JavaScript.

Сущности, Base64 и data URI

HTML-сущности и Base64 решают разные задачи. Сущности делают символы безопасными внутри исходного HTML, а Base64 превращает байты в текст, чтобы целый файл поместился в атрибут. Чтобы встроить полный HTML-документ в URI data: или поле JSON, закодируйте его через HTML в Base64, а не экранируйте каждый символ.

Вопросы и ответы

Какие символы нужно экранировать в HTML?

В тексте нужно экранировать & и <, а по традиции и >. Внутри значений атрибутов добавляется кавычка, которой ограничено значение: " или '. Всё остальное, включая буквы с диакритикой и эмодзи, на странице в UTF-8 можно оставить как есть.

Чем &#39; отличается от &apos;?

Оба означают апостроф. &apos; определён в HTML5 и XML, но отсутствовал в HTML 4, поэтому &#39; надёжнее: он работает в любом парсере и почтовом клиенте. Экранирование здесь использует &#39;.

Почему на странице видно &amp;amp;?

Текст экранировали дважды: & стал &amp;, а второй проход превратил это в &amp;amp;. Снимите экранирование здесь один раз, чтобы получить нужный текст, и уберите лишний шаг. Обычно это шаблонизатор, который экранирует уже экранированное значение.

Защищает ли экранирование HTML-сущностей от XSS?

Оно защищает от внедрения в текст HTML и значения атрибутов в кавычках. Внутри блоков <script>, URL javascript:, CSS и атрибутов без кавычек данные от этого безопасными не становятся: там нужно своё кодирование. Лучше полагайтесь на автоэкранирование шаблонизатора.