ИНСТР-HTMLENTITIESHTML5 specXSS-safeревизия 2026-05-07

HTML entities

Экранирование HTML: < & ". 3 режима: минимум (5 базовых), именованные, все non-ASCII. Таблица 50+ символов.

⏱ работает в браузере · без регистрации
Инструмент · ИНСТР-HTMLENTITIES|real-time
calcal.ru / html-entities-koder-tablica
Загрузка инструмента…
50+
Символов в таблице
3
Режима кодирования
4
Формата (named/dec/hex/native)
0
Запросов к серверу

Что это и зачем

HTML entities — специальная нотация для записи символов, которые имеют особое значение в HTML (<, >, &) или которые нельзя ввести с клавиатуры (©, ™, →). Экранирование преобразует «опасные» символы в безопасные коды, чтобы браузер отобразил их как текст, а не интерпретировал как разметку.

Главное применение — XSS-защита. Если выводите пользовательский ввод в HTML без экранирования, злоумышленник может вставить <script> и выполнить произвольный JavaScript на странице. Все современные шаблонизаторы (React JSX, Vue templates, Jinja2, Twig) экранируют автоматически — это стандартная защита.

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

  • Минимум (5 символов). Заменяет только &, <, >, ", '. Этого достаточно для безопасного вывода в HTML-контексте. Идеально для UTF-8 страниц.
  • Именованные. Заменяет известные символы на читаемые имена: © → &copy;, → → &rarr;, — → &mdash;. Лучше для legacy-систем или когда читаемость в исходнике важнее.
  • Все non-ASCII. Заменяет все символы >= 128 на &#NNN;. Гарантирует ASCII-only вывод. Полезно для систем, которые не поддерживают UTF-8 (legacy SMTP, GSM-7 SMS).
Always escape untrusted user input before inserting into HTML context. The 5 character minimum: &, <, >, ", ' — covers the basics for HTML body context.OWASP XSS Prevention Cheat Sheet

XSS и безопасность

Контекст имеет значение. Правильное экранирование зависит от того, КУДА вставляются данные:

  • HTML body (внутри тега): экранируйте & < > — этого достаточно.
  • HTML attribute (внутри значения атрибута): экранируйте & < > " '. Окружайте кавычками.
  • JavaScript (внутри <script>): HTML entities не работают! Используйте JSON.stringify() для строк.
  • URL (внутри href, src, action): используйте encodeURIComponent. Дополнительно экранируйте javascript:, data: для безопасности.
  • CSS (внутри <style> или style=""): отдельные правила, например \\ для escape. Самый сложный контекст.

Если используете React, Vue, Angular — они делают всё автоматически. Опасные места: dangerouslySetInnerHTML в React, v-html в Vue, [innerHTML] в Angular. Если эти конструкции используются — экранируйте вручную или используйте библиотеку DOMPurify.

Практические сценарии

  • Вывод комментариев пользователя. Любая входящая строка → экранируется → выводится. Защита от XSS.
  • Email с HTML-разметкой. Если в теле письма ссылка с пользовательским URL — encodeURIComponent + escape.
  • Документация / блог. Если показываете примеры HTML кода — нужно экранировать, иначе браузер отрисует. Pre-блоки с подсветкой синтаксиса делают это автоматически.
  • RSS / Atom feed. Тело статьи в <content> должно быть экранировано (или обёрнуто в CDATA).
  • SVG в инлайн HTML. Текст внутри SVG-тегов экранируется как HTML. Атрибуты тоже.
ИСТОЧНИКИ
  1. HTML5 Living Standard — Named character references. WHATWG. html.spec.whatwg.org/multipage/named-characters.html. 2024.
  2. OWASP XSS Prevention Cheat Sheet. OWASP. cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html. 2024.
  3. MDN — HTML entity references. Mozilla. developer.mozilla.org/en-US/docs/Glossary/Entity. 2024.
\" → если вывести как есть, выполнится JavaScript. Экранирование заменяет < на <, > на >, \" на " — браузер видит текст, а не код. Большинство шаблонизаторов (Jinja2, Twig, EJS, React JSX) делают это автоматически."}},{"@type":"Question","name":"Какой минимум нужно экранировать?","acceptedAnswer":{"@type":"Answer","text":"5 символов: & < > \" '. Этого достаточно для безопасного вывода в HTML-контексте. Внутри атрибутов также нужны кавычки (\\\" или '). Внутри JavaScript-кода (
ЧАСТЫЕ ВОПРОСЫ

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

Если выводите пользовательский ввод в HTML без экранирования — это XSS-уязвимость. Например, пользователь ввёл "<script>alert(1)</script>" → если вывести как есть, выполнится JavaScript. Экранирование заменяет < на &lt;, > на &gt;, " на &quot; — браузер видит текст, а не код. Большинство шаблонизаторов (Jinja2, Twig, EJS, React JSX) делают это автоматически.
5 символов: & < > " '. Этого достаточно для безопасного вывода в HTML-контексте. Внутри атрибутов также нужны кавычки (\" или &apos;). Внутри JavaScript-кода (<script>) экранирование HTML не работает — нужно использовать JSON.stringify(). Внутри URL — нужен encodeURIComponent. Контекст важен.
В современных HTML5-страницах с UTF-8 — пишите © напрямую, browser отрисует. Это короче и читаемее. Именованные (&copy;) — для лучшей читаемости в редакторе. Числовые (&#169;) — для совместимости со старыми системами или когда символ редкий и его имя никто не помнит. Hex (&#xA9;) — то же что десятичное, но в hex.
HTML5 определяет 2231 именованную entity — например, &copy; для ©, &nbsp; для неразрывного пробела, &mdash; для —. Полный список — html.spec.whatwg.org/entities.json. Не все нужны: 99% случаев — это &amp; &lt; &gt; &quot; &apos; &nbsp; &copy; &reg;. Остальные — для математических символов, греческих букв, стрелок, эмодзи.
&nbsp; (non-breaking space) — пробел, который НЕ позволяет браузеру переносить строку в этом месте. Используется когда нельзя разрывать пары: «Иванов И. И.» — между инициалами и фамилией, «10 ГБ» — между числом и единицей, «§ 42» — между знаком параграфа и номером. Также &nbsp; не схлопывается с другими пробелами (обычные несколько пробелов отображаются как один).
Никак — кириллица не нуждается в экранировании в UTF-8 HTML. Пишите «Привет» как есть. Старые системы (windows-1251, КОИ-8) могли требовать &#1055; для П — но это legacy. Современный стек (HTML5, UTF-8, любой современный браузер) понимает кириллицу нативно. Проверьте: <meta charset="UTF-8"> в <head>.
Режим кодирования «Все non-ASCII» заменяет все символы кода >= 128 на &#NNN;. Полезно когда система не поддерживает UTF-8 (старые SMTP, некоторые SMS-шлюзы) или нужна гарантия совместимости. Минус — текст становится нечитаемым в исходнике («&#1055;&#1088;&#1080;&#1074;&#1077;&#1090;»). В современных системах не нужно.
Сама операция decode безопасна — она преобразует строку в строку. НО: если декодированный текст потом снова вставляется в DOM как HTML (innerHTML) — это XSS-уязвимость. Декодируйте только если знаете, что данные доверенные ИЛИ результат пойдёт в textContent (текст, не HTML). Для безопасной вставки используйте innerText / textContent.
Лиана Арифметова
АВТОРverifiedред. calcal.ru

Лиана Арифметова

Создатель и главный редактор

Миссия: демократизировать сложные расчёты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Mathematical Engineering · МФТИ · редактирует каталог с 2012 года

Был ли этот калькулятор полезен?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Инструмент справочный — не заменяет эксперта

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.

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

СМЕЖНЫЕ ИНСТРУМЕНТЫ

Похожие калькуляторы

15

SEO slug генератор

Превращает русский заголовок в URL-friendly slug. 5 схем транслитерации (SEO, ГОСТ, ICAO, BGN, Yandex).

/seo-slug-generator-iz-russkogo

Markdown таблица — конструктор

Визуальный конструктор Markdown / HTML / CSV таблиц. Выравнивание, до 10×50 ячеек.

/generator-tablic-markdown-online

Конвертер регистра текста

ВЕРХНИЙ ↔ нижний ↔ Каждое Слово ↔ camelCase ↔ snake_case ↔ kebab-case. Все варианты регистра.

/konverter-registra-teksta

Конвертер кодировок текста

Конвертация текста между кодировками UTF-8, Windows-1251, KOI8-R, CP866. Исправление кракозябр (mojibake) и битой кириллицы онлайн.

/konverter-kodirovok

Markdown-редактор с превью

Онлайн Markdown-редактор с мгновенным предпросмотром HTML. Панель инструментов, подсветка синтаксиса, экспорт в HTML.

/markdown-editor

Счётчик символов и слов

Подсчёт символов, слов, предложений, абзацев. Время чтения, частота слов, проверка длины SEO-тегов.

/schyotchik-simvolov-slov

Калькулятор времени чтения текста

Расчёт времени чтения и озвучивания текста. Настройка скорости, тип контента, количество страниц A4.

/vremya-chteniya-teksta

Удалитель дублирующих строк

Удаление повторяющихся строк из списка. Поиск уникальных, показ только дубликатов, настройки сравнения.

/udalenie-dublikatov-strok

Сортировщик строк

Алфавитная, числовая, по длине и случайная сортировка списка строк. Удаление пустых строк и дубликатов.

/sortirovshchik-strok

Конвертер кириллица ↔ латиница (раскладка)

Исправление текста, набранного в неправильной раскладке. QWERTY ↔ ЙЦУКЕН с автоопределением.

/konverter-raskladki

Diff-инструмент для сравнения текстов

Сравнение двух текстов с подсветкой различий. Построчный и пословный diff, режимы отображения side-by-side и unified.

/sravnenie-tekstov-diff

Число прописью (русский)

Число → слова с правильным склонением: рубли, штуки, тонны. Для документов, счетов и актов.

/chislo-propisyu

Объединить PDF онлайн — без загрузки на сервер

Склейка PDF в браузере через pdf-lib. До 20 файлов, до 50 МБ каждый. Локально, без отправки на сервер (152-ФЗ).

/obyedinit-pdf-onlajn-besplatno

Сжать PDF онлайн — уменьшить размер локально

Сжатие PDF в браузере без потери качества. 3 уровня (object streams, удаление метаданных). До 50 МБ. Через pdf-lib, локально.

/szhat-pdf-onlajn-umenshit-razmer

Разделить PDF на страницы — извлечь нужные онлайн

Разделение PDF на страницы локально: каждая страница отдельным файлом, диапазон или группами. Через pdf-lib, без отправки на сервер.

/razdelit-pdf-na-stranicy-onlajn