Бесплатный HTML-кодировщик сущностей — экранирование HTML
Кодируйте HTML-сущности и экранируйте спецсимволы (< > & " ') онлайн — бесплатно, без регистрации, 100% в браузере. Именованный, десятичный или шестнадцатеричный вывод; данные не загружаются.
Ваш текст кодируется локально в браузере и никогда не загружается, не логируется и не сохраняется. Он остаётся на этом устройстве.
Параметры · Параметры формата и кодирования
Что такое кодирование HTML-сущностей?
Кодирование HTML-сущностей — также называемое экранированием HTML — это процесс замены символов, имеющих особое значение в HTML, на безопасное текстовое представление, называемое сущностью, чтобы браузер отображал их как обычный текст, а не интерпретировал как разметку. Пять самых важных символов — это те, которыми HTML структурирует документ: угловые скобки < и >, открывающие и закрывающие теги, амперсанд &, начинающий сущность, и кавычки " и ', ограничивающие значения атрибутов. Когда любой из них появляется в содержимом, которое нужно показать, а не выполнить, его необходимо экранировать, иначе браузер неверно прочитает страницу — в лучшем случае ваш текст отобразится неправильно, в худшем злоумышленник внедрит тег <script>.
Стоит точно понимать, что делает этот инструмент. Он кодирует текст в сущности; он не собирает и не форматирует документ. Если вы хотите прочитать строку кода на странице как обычный текст или вставляете пользовательский ввод в свой HTML и должны его обезвредить, это правильный инструмент. Если же вы хотите сделать отступы и привести в порядок существующую разметку, это задача HTML-форматировщика; а чтобы превратить сущности обратно в символы, используйте HTML-декодировщик сущностей.
Есть три способа записать любую сущность, и они взаимозаменяемы. Именованная ссылка использует понятную метку (< для <, © для ©); десятичная числовая ссылка записывает кодовую точку символа в системе по основанию 10 (< для <); а шестнадцатеричная ссылка записывает ту же кодовую точку по основанию 16 (< для <), совпадая с нотацией U+XXXX стандарта Unicode. Именованные сущности читаются лучше всего, но существуют только для символов с определённым именем; числовые сущности могут представить любую кодовую точку, поэтому они безопасный запасной вариант. В таблице ниже перечислены сущности, к которым вы будете обращаться чаще всего:
| Символ | Именованная | Десятичная | Hex | |-----------|-------|---------|-----| | < | < | < | < | | > | > | > | > | | & | & | & | & | | " | " | " | " | | ' | ' | ' | ' | | (пробел) | |   |   | | © | © | © | © | | ® | ® | ® | ® | | ™ | ™ | ™ | ™ | | € | € | € | € | | £ | £ | £ | £ | | — | — | — | — | | – | – | – | – | | … | … | … | … | | é | é | é | é |
Обратите внимание, что апостроф записывается как ' (или '), а не ': именованный ' был стандартизирован только в HTML5 и XML и небезопасен в старых парсерах HTML4, поэтому числовая форма — понятная везде — является совместимым выбором. Этот инструмент следует тому же соглашению, что и широко используемая библиотека he, поэтому вывод по умолчанию для ' — это '.
Различие между набором символов и сущностью стоит держать в голове, потому что оно объясняет опцию «Кодировать все символы не из ASCII». Кодировка (например, UTF-8) определяет, как символы хранятся в виде байтов; сущность — это способ записать символ, используя только обычные ASCII-символы & # ; и буквы или цифры. На современной UTF-8-странице é, — и 😀 — корректные сырые символы и вовсе не нуждаются в сущности — поэтому режим по умолчанию оставляет их в покое. Принудительно переводить их в сущности нужно лишь когда текст должен пройти через систему, не умеющую работать с сырым UTF-8, и тогда каждая кодовая точка не из ASCII переписывается как безопасная для ASCII числовая или именованная ссылка. И поскольку всё это работает в вашем браузере, экранируемая разметка — даже приватный шаблон или неопубликованный черновик — никогда не пересекает сеть. Для смежных преобразований инструменты JSON Escape и Base64 Encode / Decode отвечают за экранирование строк JavaScript и безопасную для двоичных данных передачу соответственно.
// Server-side templates auto-escape, but when you build HTML by hand you must escape yourself.
// The five reserved characters and their safe entities:
// < → < > → > & → & " → " ' → '
// Node.js — escape untrusted input before inserting it into HTML element content.
function escapeHtml(str) {
return str
.replace(/&/g, '&') // & first, so later entities are not double-escaped
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, '''); // numeric form — safe in HTML4, HTML5 and XML
}
const userInput = `<a href="x">Tom & Jerry's</a>`;
const safe = escapeHtml(userInput);
// → <a href="x">Tom & Jerry's</a>
document.getElementById('out').innerHTML = `<p>${safe}</p>`; // renders as literal text
// ---------------------------------------------------------------
// In practice, prefer the platform's built-in escaping where it exists:
// - React / Vue / Angular escape interpolated text by default
// - Use textContent instead of innerHTML when you only need text:
// el.textContent = userInput; // the browser escapes for you
// - Server frameworks (Jinja, ERB, Blade) auto-escape unless you opt out Ключевые возможности
Корректно экранирует пять зарезервированных символов
< > & " ' преобразуются в безопасные сущности ровно так, как это сделала бы закалённая библиотека защиты от XSS — включая совместимый ' для апострофа вместо небезопасного для HTML4 '. Это точный набор, обезвреживающий недоверенный ввод в контекстах элементов и атрибутов HTML.
Именованный, десятичный и шестнадцатеричный вывод
Получите те же символы в виде читаемых именованных сущностей (<, ©), десятичных числовых ссылок (<) или шестнадцатеричных ссылок (<). Выберите форму, которую ожидает принимающая система; все три при разборе раскрываются в одинаковые символы.
Опциональный режим кодирования всех символов не из ASCII
По умолчанию экранируются только зарезервированные символы, а диакритика и эмодзи остаются читаемым сырым UTF-8. Отметьте один флажок, чтобы преобразовать каждую кодовую точку выше 0x7F в безопасную для ASCII сущность для устаревших кодировок или систем, портящих UTF-8.
Живое мгновенное кодирование
Вывод обновляется по мере ввода — без кнопки отправки, без задержек на обмен с сервером. Вставьте большой блок разметки, и экранированный результат появится сразу, готовый к копированию.
Встроенный быстрый справочник сущностей
Справочная таблица самых распространённых сущностей — пять зарезервированных плюс ©, ®, ™, €, —, и другие — расположена прямо на странице в именованной, десятичной и шестнадцатеричной форме, так что вам не придётся искать сущность где-то ещё.
Переключение к декодировщику в один клик
«Сменить направление» сразу переходит к HTML-декодировщику сущностей, чтобы обратить операцию. Кодирование и декодирование — точные обратные операции, поэтому текст можно прогонять туда-обратно без потерь.
100% приватно, только в браузере
Всё кодирование происходит на вашем устройстве с помощью JavaScript — без сетевых запросов, без логирования, без хранения, что проверяется в DevTools → Network. Приватная разметка, шаблоны писем и неопубликованные черновики никогда не покидают вкладку.
Доступно на 15 языках
Весь интерфейс — подписи, инструкции и подсказки — локализован на 15 языков, чтобы инструмент и его советы по экранированию были понятны, где бы ни работала ваша команда.
Разобранные примеры
Экранирование HTML-фрагмента (режим «спецсимволы» по умолчанию)
<a href="x">Tom & Jerry's</a>
<a href="x">Tom & Jerry's</a>
В режиме «спецсимволы» по умолчанию кодировщик переписывает только пять символов, имеющих значение в HTML-разметке: < превращается в <, > — в >, & — в &, " — в ", а ' — в '. Апостроф выводится как числовой ', а не как именованный ', потому что ' не определён в HTML4 и старые парсеры могут на нём споткнуться, тогда как шестнадцатеричная форма понятна всем. После кодирования браузер отображает строку как обычный текст — тег <a> показывается, а не активируется, — именно так безопасно показывают разметку внутри страницы.
Символы не из ASCII сохраняются в режиме по умолчанию
Visit our café — it's 😀
Visit our café — it's 😀
Режим «спецсимволы» затрагивает только пять зарезервированных символов HTML, поэтому буквы с диакритикой (café), длинное тире (—) и эмодзи (😀) проходят без изменений. Вывод остаётся читаемым и компактным — именно то, что нужно для UTF-8-страниц, уже объявивших <meta charset="utf-8">. Экранируется лишь апостроф в «it's» — в '. Если вам нужно преобразовать каждый символ не из ASCII в сущность для устаревшей кодировки, отметьте «Кодировать все символы не из ASCII» — см. пример ниже.
Десятичные числовые сущности
<>&"'
<>&"'
Переключите формат на десятичный, и каждый спецсимвол записывается как десятичная числовая ссылка: < — это <, > — >, & — &, " — ", а ' — '. Десятичные сущности — самая широко совместимая числовая форма: их понимает каждый соответствующий стандарту парсер HTML и XML, что делает их безопасным выбором, когда нельзя быть уверенным, что принимающая система поддерживает именованные сущности вроде ©.
Шестнадцатеричные числовые сущности
<>&"'
<>&"'
Формат Hex записывает каждый символ как шестнадцатеричную числовую ссылку: < — это <, > — >, & — &, " — ", а ' — '. Шестнадцатеричная и десятичная формы взаимозаменяемы — обе ссылаются на одну и ту же кодовую точку Unicode, — но шестнадцатеричная один к одному соответствует нотации U+XXXX из стандарта Unicode, поэтому многие разработчики предпочитают её при документировании или анализе конкретных кодовых точек.
Кодировать все символы не из ASCII
café
café (named) · café (decimal) · café (hex)
Отметьте «Кодировать все символы не из ASCII», и каждая кодовая точка выше 0x7F преобразуется в сущность, а не только пять зарезервированных. Буква é в café становится именованной é, десятичной é или шестнадцатеричной é в зависимости от выбранного формата — все три ссылаются на один и тот же символ, U+00E9. Этот режим для страниц в не-Unicode-кодировке или для систем, искажающих сырой UTF-8, где принудительное приведение всего к 7-битным ASCII-сущностям гарантирует, что текст переживёт передачу без потерь.
Как пользоваться HTML-кодировщиком сущностей
- 1
Вставьте ваш HTML или текст
Поместите разметку или обычный текст, который нужно экранировать, в поле ввода. Закодированный вывод обновляется в реальном времени по мере ввода — кнопки отправки нет, и ничего никуда не отправляется.
- 2
Выберите формат сущностей
Именованный — читаемый вариант по умолчанию (<, &, ©). Переключитесь на Десятичный (<) или Hex (<), когда принимающая система предпочитает числовые ссылки или нельзя гарантировать поддержку именованных сущностей.
- 3
При необходимости кодируйте все символы не из ASCII
Оставьте это выключенным для современных UTF-8-страниц, чтобы диакритика и эмодзи оставались читаемыми сырыми символами. Включайте только когда текст должен пережить устаревшую однобайтовую кодировку — тогда каждый символ выше 0x7F преобразуется в безопасную для ASCII сущность.
- 4
Скопируйте закодированный результат
Нажмите «Копировать», чтобы поместить экранированную строку в буфер обмена, готовую к вставке в шаблон, страницу документации или поле базы данных. «Очистить» сбрасывает обе панели для следующего фрагмента.
- 5
Нужно обратное? Смените направление
Используйте «Сменить направление», чтобы переключиться на HTML-декодировщик сущностей, когда хотите превратить сущности обратно в символы, которые они представляют.
Частые ошибки кодирования HTML
Экранировали амперсанд последним, вызвав двойное экранирование
Если заменить < и > до &, то у только что созданных сущностей & экранируется повторно, и < превращается в < и отображается как буквальный текст. Всегда экранируйте & первым.
replace < and > first, then & → < becomes &lt;
escape & first, then the rest → < stays <
Использовали ' для апострофа в устаревших контекстах
' не определён в HTML4, и некоторые почтовые клиенты показывают его буквально. Используйте числовой ' или ', понятный каждому парсеру, при работе со старыми или смешанными окружениями.
It's here → may render as It's here
It's here → renders as It's here
Закодировали данные дважды
Повторный прогон уже экранированного текста через кодировщик кодирует его дважды: & становится &, и пользователь видит & вместо &. Экранируйте ровно один раз, на выходе.
& encoded again → &amp; shows as &
& left as-is → renders as &
Использовали экранирование HTML для контекста URL или JavaScript
HTML-сущности не делают значение безопасным внутри URL или встроенного скрипта. Пробел в URL требует %20, а строка в JavaScript — экранирования JS/JSON. Сопоставляйте кодирование с тем, куда попадает значение.
href="/search?q=a&b c" → the space still breaks the URL
href="/search?q=a%26b%20c" → URL-encoded, valid
Без необходимости закодировали символы не из ASCII на UTF-8-странице
Принудительное превращение café в café на современной UTF-8-странице раздувает исходник и ухудшает читаемость без всякой пользы. Оставляйте символы не из ASCII сырыми, пока устаревшая кодировка действительно не потребует сущностей.
café on a UTF-8 page → needless, harder to read
café on a UTF-8 page → valid and clean
Забыли экранировать кавычки внутри значения атрибута
Вставка неэкранированной " в атрибут позволяет значению вырваться и внедрить новые атрибуты — вектор XSS. Всегда экранируйте " (и желательно ') в контексте атрибута, что этот инструмент делает по умолчанию.
title="He said "hi"" → attribute breaks out
title="He said "hi"" → contained
Кто пользуется этим инструментом
- Показ примеров кода на веб-странице
- Пишете руководство или документацию, где нужно показать буквальный HTML? Экранируйте фрагмент, чтобы <strong>bold</strong> отображался как текст, а не отрисовывался. Вставьте разметку, скопируйте экранированный вывод и поместите его внутрь блока <pre> или <code>.
- Очистка пользовательского ввода от XSS
- Перед вставкой любой пользовательской строки в ваш HTML экранируйте пять зарезервированных символов, чтобы полезная нагрузка вроде <script>…</script> стала безвредным текстом. Это основополагающая защита от межсайтового скриптинга, когда вы собираете разметку вручную.
- Хранение разметки в поле базы данных или JSON
- Нужно сохранить HTML-фрагмент как обычную строку, чтобы он не интерпретировался дальше по конвейеру? Сначала закодируйте его, чтобы угловые скобки и амперсанды пережили хранение и повторный показ в целости, а затем декодируйте на обратном пути.
- Создание шаблонов писем и контента CMS
- Почтовые клиенты и системы управления контентом нетерпимы к сырым спецсимволам. Экранируйте зарезервированный набор — и при необходимости все символы не из ASCII — чтобы ваш шаблон отображался единообразно в клиентах, которые могут не разделять вашу кодировку.
- Преобразование текста для устаревшей кодировки
- Целитесь в систему, не умеющую работать с сырым UTF-8? Включите «Кодировать все символы не из ASCII», чтобы переписать каждую букву с диакритикой, символ и эмодзи как безопасную для ASCII сущность, гарантируя, что текст переживёт передачу через 7-битные конвейеры.
- Экранирование значений атрибутов XML и SVG
- XML и встроенный SVG используют те же зарезервированные символы, что и HTML. Закодируйте кавычки и угловые скобки, чтобы строка со встроенной разметкой безопасно встала в значение атрибута, не ломая структуру документа.
- Быстрый поиск сущности
- Забыли, как пишется знак товарного знака — ™ или ™? Введите символ, считайте его именованную, десятичную и шестнадцатеричную сущность из вывода или загляните во встроенную справочную таблицу, не покидая страницу.
Как работает кодировщик
- Режим спецсимволов (по умолчанию)
- По умолчанию экранируются только пять зарезервированных символов HTML — & < > " ' — в соответствии с правилами сериализации WHATWG HTML для безопасного вывода. & заменяется первым, чтобы сущности, созданные для остальных символов, не были экранированы дважды. Все прочие символы, включая не из ASCII, проходят без изменений.
- Апостроф использует '
- Вместо именованного ' — не определённого в HTML4 и небезопасного в некоторых старых парсерах — одиночная кавычка выводится как числовой ' (десятичный '), ссылающийся на U+0027. Это совпадает с соглашением хорошо протестированных библиотек вроде he и гарантирует, что вывод безопасен в HTML4, HTML5 и XML одинаково.
- Именованное, десятичное и шестнадцатеричное кодирование
- Селектор формата управляет тем, как записывается каждый экранированный символ: Именованный использует определённые метки там, где они есть (<, ©), Десятичный записывает кодовую точку Unicode по основанию 10 (<), а Hex — по основанию 16 (<). Числовые формы ссылаются на те же кодовые точки, что и именованные, и взаимозаменяемы при разборе.
- Опция кодирования всех символов не из ASCII
- При включении каждый символ с кодовой точкой выше 0x7F преобразуется в сущность выбранного формата — café становится café (именованный), café (десятичный) или café (hex). Символы из астральных плоскостей вроде эмодзи кодируются полной кодовой точкой (😀 → 😀). Это даёт 7-битный чистый ASCII-вывод для устаревшей передачи.
- Кодировка против сущностей
- Набор символов определяет, как текст хранится в виде байтов; сущность — это способ записать символ, используя только ASCII. На UTF-8-странице символы не из ASCII не нуждаются в сущности, поэтому по умолчанию они остаются сырыми. Кодировать всё нужно лишь когда вывод должен пройти через не-Unicode-кодировку или враждебную к UTF-8 систему.
- Локально в браузере, ноль сети
- Кодирование выполняется синхронно в JavaScript в основном потоке; нет ни вызовов API, ни обмена с воркером на сервере, ни сохранения. Ввод никогда не покидает страницу, в чём можно убедиться, наблюдая пустую панель Network во время ввода.
Лучшие практики экранирования HTML
- Экранируйте на выходе, в правильном контексте
- Кодируйте данные в момент вставки в HTML, а не при получении, и сопоставляйте кодирование с контекстом. Кодирование HTML-сущностей — для содержимого элементов и атрибутов HTML; используйте URL-кодирование внутри URL и экранирование JavaScript/JSON внутри блоков скриптов. Экранирование в неверном контексте оставляет брешь.
- Всегда экранируйте недоверенный ввод
- Любая строка, исходящая от пользователя, загрузки или внешнего API, должна быть экранирована перед попаданием в вашу разметку. Это основная защита от XSS: полезная нагрузка вроде <script>alert(1)</script> становится безвредным текстом, как только угловые скобки превращаются в сущности.
- Предпочитайте встроенное экранирование там, где оно есть
- React, Vue и большинство серверных шаблонизаторов экранируют интерполированный текст автоматически; установка element.textContent тоже экранирует за вас. Используйте этот инструмент для разовых преобразований и для понимания вывода — но в коде приложения опирайтесь на авто-экранирование фреймворка, а не пишите его вручную.
- Оставляйте символы не из ASCII сырыми на UTF-8-страницах
- Если ваша страница объявляет <meta charset="utf-8">, не кодируйте диакритику и эмодзи в сущности — сырой UTF-8 короче, читаемее и так же корректен. Приберегите «Кодировать все символы не из ASCII» для подлинных случаев устаревших кодировок, которым это действительно нужно.
- Используйте числовой апостроф в смешанных контекстах
- Когда вывод может потребляться старыми парсерами, XML-процессорами или почтовыми клиентами, предпочитайте числовой ' именованному ' для одиночной кавычки. Числовая форма понятна везде; именованная — нет, и случайный буквальный «'» в отрисованном тексте — распространённая, легко устранимая ошибка.
Часто задаваемые вопросы
Отправляется ли мой текст на ваш сервер при кодировании?
Что значит экранировать HTML и зачем это нужно?
В чём разница между именованными, десятичными и шестнадцатеричными сущностями?
Почему апостроф кодируется как ', а не '?
Нужно ли кодировать символы не из ASCII, такие как é, — или 😀?
Защищает ли экранирование HTML от XSS-атак?
Как обратить это — превратить сущности обратно в символы?
Изменит ли кодирование видимый текст или сломает мою вёрстку?
Похожие инструменты
Все инструменты →Base64 декодер и кодировщик
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
Конвертер Base64 в изображение
Кодирование и форматирование
Декодируйте строку Base64 или data URI обратно в изображение прямо в браузере. Предпросмотр, размеры и MIME, затем скачивание как PNG, JPG, GIF, SVG. Без загрузки.
Конвертер CSV в JSON
Кодирование и форматирование
Конвертируйте CSV в JSON в браузере. RFC 4180, определение типов, заголовок, безопасность больших целых. 100% приватно, без загрузки.
Конвертер .env в JSON
Кодирование и форматирование
Вставьте файл .env — получите JSON мгновенно. Пароли БД, API-ключи и токены не покидают браузер: 100% приватно, без загрузки, парсер dotenv.
Бесплатный HTML-декодировщик сущностей — unescape HTML
Кодирование и форматирование
Декодируйте HTML-сущности и снимайте экранирование HTML онлайн — бесплатно, без регистрации, 100% в браузере. Преобразует именованные, десятичные и hex-ссылки обратно в символы; данные не загружаются.
Конвертер HTML в Markdown
Кодирование и форматирование
Конвертируйте HTML в чистый Markdown прямо в браузере — GFM-таблицы, списки задач и ссылки. Выбирайте ATX/Setext заголовки и inline или reference ссылки. Удобно для переноса веб-контента и подачи в LLM. 100% приватно.