HTML Encoder

HTML Encoder / Decoder

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

За замовчуванням — Minimal: екрануйте лише & < > " ', ті п’ять символів, що ламають контексти HTML body / атрибутів. Саме так робить кожен сучасний шаблонізатор. Використовуйте Named entities, якщо хочете отримати copyright / nbsp / стрілки тощо як читабельні коди (&copy; замість &#169;). Використовуйте Numeric, коли надсилаєте HTML через пайплайни, які можуть не розуміти іменовані сутності. Використовуйте All non-ASCII, коли працюєте з системами, що приймають лише ASCII (застарілі поштові сервери, зламані API).

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

Вхід
Вихід

Створено для безпечного HTML-виводу

Екрануйте контент користувача для шаблонів, декодуйте дані, закодовані сутностями — і кілька дрібниць, що роблять користування справді приємним.

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

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

Декодуйте будь-яку сутність

Декодувальник обробляє іменовані сутності (&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-payload’ів.

Читання даних, екранованих сутностями, з 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 для стану згоди на cookie і один — для мовних налаштувань.

Схожі гайди

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

Часті запитання

Який режим обрати?

За замовчуванням — Minimal: екрануйте лише & < > " ', ті п’ять символів, що ламають контексти HTML body / атрибутів. Саме так робить кожен сучасний шаблонізатор. Використовуйте Named entities, якщо хочете отримати copyright / nbsp / стрілки тощо як читабельні коди (&copy; замість &#169;). Використовуйте Numeric, коли надсилаєте HTML через пайплайни, які можуть не розуміти іменовані сутності. Використовуйте All non-ASCII, коли працюєте з системами, що приймають лише ASCII (застарілі поштові сервери, зламані API).

Чому це екранує `'` як `&#39;`, а не `&apos;`?

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

Чи виживуть emoji та CJK-символи?

Так. Кодувальник ітерує кодові точки (а не кодові одиниці UTF-16), тож emoji як 🎉 (U+1F389) стають &#127881; при кодуванні й коректно повертаються через декодування. Те саме для CJK (中文 → &#20013;&#25991; у числовому режимі).

Чи безпечно вставляти користувацький ввід безпосередньо у HTML після кодування?

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

Чи надсилається щось на ваш сервер?

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