HTML-сущности: кодировать и декодировать
В HTML пять символов имеют особый смысл — <, >, &, кавычки — и чтобы они появились на странице как текст, их записывают сущностями: <, >, &, ", '.
Частые сущности
Какие знаки кодируют и в каком виде
Инструмент переводит текст в HTML-сущности и обратно. В разметке пять знаков имеют особый смысл: угловые скобки, амперсанд и две кавычки. Браузер принимает открывающую скобку за начало тега, амперсанд — за начало сущности, поэтому текст с этими знаками, вставленный в страницу как есть, ломает вёрстку, а пользовательский ввод с тегами превращается в дыру в безопасности. Режимов пять: кодировать только обязательные знаки, кодировать все не-ASCII символы именами или числами в двух формах, а также декодировать разметку обратно в текст.
Сущность записывается тремя способами. Именованная — по названию: — для длинного тире, для неразрывного пробела. Числовая десятичная — по коду символа в Unicode: —. Числовая шестнадцатеричная — тот же код в другой системе: —. Числовые формы работают для любого символа, имена есть примерно у двух тысяч распространённых знаков. Декодер понимает все три записи, поэтому через него можно пропускать выгрузки из баз и ответы сервисов, где сущности перемешаны.

| Символ | Именованная | Числовая | Когда нужна |
|---|---|---|---|
| Открывающая угловая скобка | < | < | Всегда: иначе браузер ждёт тег. |
| Закрывающая угловая скобка | > | > | В паре с открывающей. |
| Амперсанд | & | & | Всегда: с него начинается любая сущность. |
| Двойная кавычка | " | " | Внутри значений атрибутов. |
| Апостроф | нет в HTML 4 | ' | В атрибутах на одинарных кавычках. |
| Неразрывный пробел | |   | Между числом и единицей измерения. |
| Длинное тире | — | — | Когда клавиатура даёт только дефис. |
| Знак рубля | нет имени | ₽ | В системах без поддержки UTF-8. |
История: от помпейского et до 252 имён HTML 4
Сам амперсанд старше разметки на два тысячелетия: это слитное написание латинского et, «и», встречающееся ещё в помпейских граффити. Наборщики держали для него отдельную литеру, а английское имя ampersand выросло из школьной скороговорки, которой в XIX веке заканчивали перечисление алфавита. Знак пережил все смены техники и в вебе получил новую работу — открывать запись символа именем.
Правило записывать особые знаки в виде имени пришло из SGML, языка описания разметки, ставшего международным стандартом ISO 8879 в 1986 году. HTML вырос из него и унаследовал синтаксис вместе с сущностями. В описании HTML 2.0 — RFC 1866, ноябрь 1995 года — перечислен набор Latin-1: буквы с диакритикой, знаки валют, неразрывный пробел. HTML 4.0 в декабре 1997 года добавил греческие буквы, математические символы и типографские знаки, доведя число имён до 252.
Тогда это было необходимостью: страница жила в однобайтовой кодировке, и вставить в неё греческую букву можно было только числом или именем. С переходом на UTF-8 надобность почти отпала — любой символ пишется в разметку как есть. Осталось обязательное: угловые скобки и амперсанд по-прежнему экранируют всегда, а данные, пришедшие от посетителя, экранируют в первую очередь. Современный стандарт знает больше двух тысяч имён, и почти все они нужны только для чтения старой разметки.


Какой режим выбрать и как поймать двойное кодирование
Для вставки текста в разметку хватает режима с пятью обязательными знаками: страница в UTF-8 покажет и кириллицу, и тире, и валюты без всякого кодирования. Режимы «все не-ASCII» нужны в других случаях: письма, которые пойдут через старые почтовые системы, выгрузки в системы с однобайтовой кодировкой, поля, где допустима только латиница. Именованные сущности читаются человеком, числовые надёжнее: имя может быть неизвестно старому разборщику.
Декодирование пригодится, когда выгрузка из базы или ответ сервиса приходят с сущностями вместо знаков. Если после первого прохода на экране осталось имя сущности буквами, текст закодировали дважды — прогоните его через декодер ещё раз. Обратная беда встречается чаще: разметку раскодировали и вставили в страницу, и теги из пользовательского текста ожили. Для адресов работает другая кодировка, со знаком процента, — её разбирает URL энкодер и декодер; посмотреть код и байты любого знака помогает инспектор Unicode.
| Обязательных знаков | 5 |
| Именованных сущностей | больше 2 000 |
| Десятичная форма | — |
| Шестнадцатеричная форма | — |
| Неразрывный пробел | , U+00A0 |
| Кириллица в UTF-8 | кодировать не нужно |
| Основа синтаксиса | SGML, ISO 8879, 1986 |
| Набор Latin-1 | HTML 2.0, RFC 1866, 1995 |
Как пользоваться
Ещё сущности нужны для символов, которых нет на клавиатуре: тире —, неразрывный пробел , знак рубля ₽. Инструмент кодирует текст в сущности — только обязательные пять, все не-ASCII символы именованными или числовыми — и декодирует любую разметку обратно в обычный текст, включая десятичные и шестнадцатеричные формы. Внизу таблица частых сущностей с именами и кодами. Проверено 04.09.2026.
- Для кодирования — обычный текст; для декодирования — HTML с сущностями.
- Только пять обязательных символов, все не-ASCII именованными сущностями или числовыми кодами; декодирование в обратную сторону.
- Кнопка копирует всё поле.
- Тире, кавычки-ёлочки, стрелки, знаки валют и математики.
Частые вопросы
Какие символы обязательно кодировать
В тексте — < и &, в атрибутах ещё кавычки. На практике кодируют все пять: < > & " '. Без этого браузер примет < за начало тега, а пользовательский ввод с тегами станет XSS-уязвимостью.
Чем именованная сущность отличается от числовой
Именованная — по названию: —. Числовая — по коду Unicode: десятичная — или шестнадцатеричная —. Числовые работают для любого символа, именованные есть только у двух с лишним тысяч распространённых.
Нужно ли кодировать кириллицу
Нет, если страница в UTF-8, а это стандарт. Кодировать не-ASCII имеет смысл в письмах и системах со старыми кодировками; режим «все не-ASCII» для этого.
Что такое
Неразрывный пробел: браузер не переносит строку на нём и не схлопывает несколько подряд. Ставится между числом и единицей измерения, инициалами и фамилией.
Как декодировать двойное кодирование
Если в тексте видно &lt;, его закодировали дважды. Прогоните через декодер два раза — инструмент показывает, сколько сущностей осталось после прохода.
Заменяет ли инструмент экранирование в коде
Нет, в коде используйте функции языка или шаблонизатора: они экранируют автоматически и с учётом контекста. Инструмент нужен для разовой правки текста и проверки.
Спросите нейросети об инструменте
Больше возможностей: Нейросеть для кода, написать, найти ошибку, объяснить.
Похожие инструменты
Кодирует ссылки и текст в percent-encoding и обратно. Построчно для списка URL, режим компонента или целой ссылки.
ОткрытьИнспектор UnicodeКод каждого символа U+XXXX, десятичный номер, байты UTF-8 и UTF-16, HTML-сущность, поиск невидимых и составных символов в тексте.
ОткрытьГенератор UUIDВерсии 4 и 7 пачками, пять форматов записи и разбор готового идентификатора с датой создания для v7.
ОткрытьШифр ВиженераШифрование и расшифровка по ключевому слову, а также шифр Цезаря со сдвигом и Атбаш, русский и латинский алфавиты, таблица Виженера.
ОткрытьКартинка в Base64Изображение в data URI для HTML и CSS и обратно: размер до и после, готовые фрагменты img и background, предпросмотр из строки.
ОткрытьСканер QR-кодаСчитывает QR-код и штрихкод камерой или с картинки прямо в браузере: ссылка, Wi-Fi, визитка, телефон и номер товара разбираются по полям.
ОткрытьЕщё инструменты для кода и данных
Base64 и URL, форматтер и сравнение JSON, хеши, регулярные выражения, cron, подсети, UUID, QR-код и Unix-время — в разделе 42 инструмента.