Darmowy dekoder encji HTML — unescape HTML
Dekoduj encje HTML i unescape HTML online — za darmo, bez rejestracji, w 100% w przeglądarce. Zamienia odwołania nazwane, dziesiętne & szesnastkowe z powrotem na znaki; nic nie jest wysyłane.
Twój tekst jest dekodowany lokalnie w przeglądarce i nigdy nie jest wysyłany, rejestrowany ani przechowywany. Pozostaje na tym urządzeniu.
Opcje · Opcje dekodowania
Czym jest dekodowanie encji HTML?
Dekodowanie encji HTML — zwane też unescape HTML — to proces zamiany odwołań znakowych z powrotem na znaki, które reprezentują. Tam gdzie kodowanie zastępuje dosłowny < encją <, aby przeglądarka wyświetliła go jako tekst, dekodowanie robi odwrotnie: skanuje ciąg w poszukiwaniu odwołań jak <, &, <, > czy © i zastępuje każde rzeczywistym znakiem (<, &, <, >, ©). To operacja, którą uruchamiasz, gdy masz składnię zapisaną lub przesłaną w postaci po escape i potrzebujesz z powrotem prawdziwego tekstu — by go odczytać, edytować, przekazać innemu programowi lub ustalić, dlaczego strona renderuje < zamiast <.
Warto być precyzyjnym co do tego, co robi to narzędzie. Dekoduje encje na znaki; nie reformatuje ani nie waliduje składni. Jeśli chcesz wziąć ciąg po escape i odzyskać jego dosłowne znaki, to właściwe narzędzie. Aby pójść w drugą stronę i zamienić znaki na encje, użyj kodera encji HTML; a aby wciąć i uporządkować blok HTML, użyj formatera HTML. Kodowanie i dekodowanie są dokładnie odwrotne, więc ciąg przepuszczony przez koder i z powrotem przez dekoder wraca bez zmian.
Istnieją trzy rodzaje odwołań, które dekoder musi rozumieć, i obsługuje je wszystkie. Odwołanie nazwane używa zdefiniowanej etykiety (< dla <, © dla ©, — dla —); dziesiętne odwołanie liczbowe zapisuje punkt kodowy Unicode w systemie dziesiętnym (< dla <); a szesnastkowe odwołanie liczbowe zapisuje ten sam punkt kodowy w systemie szesnastkowym (< dla <), odpowiadając notacji U+XXXX standardu Unicode. Solidny dekoder przyjmuje dowolne z nich, w dowolnej kombinacji, bo różne kodery zwracają różne formy. Tabela poniżej pokazuje odwołania, które spotkasz najczęściej, oraz znak, na który każde z nich się dekoduje:
| Encja (nazwana) | Dziesiętna | Szesnastkowa | Dekoduje się na | |----------------|---------|-----|------------| | < | < | < | < | | > | > | > | > | | & | & | & | & | | " | " | " | " | | ' | ' | ' | ' | | |   |   | (spacja niełamiąca) | | © | © | © | © | | ® | ® | ® | ® | | ™ | ™ | ™ | ™ | | € | € | € | € | | £ | £ | £ | £ | | — | — | — | — | | – | – | – | – | | … | … | … | … | | 😀 | 😀 | 😀 | 😀 |
Dwa zachowania wyróżniają staranny dekoder. Po pierwsze, odtwarza znaki z płaszczyzn astralnych — wszystko powyżej U+FFFF, w tym większość emoji — z ich odwołań liczbowych, zamiast tworzyć uszkodzony pół-znak; 😀 poprawnie staje się 😀. Po drugie, stosuje tolerancyjne parsowanie przeglądarki dla niewielkiego zbioru starszych encji nazwanych, które historycznie pojawiały się bez kończącego średnika, więc © 2026 wciąż dekoduje się do © 2026, mimo że ścisły XML by to odrzucił. To narzędzie robi obie te rzeczy, odpowiadając zachowaniu szeroko używanej biblioteki he, więc jego wynik zgadza się z tym, co wyrenderowałaby prawdziwa przeglądarka.
Słowo ostrzeżenia, które należy się każdemu dekoderowi: zdekodowany tekst jest z definicji niepoddany escape. Dekodowanie jest odwrotnością escape, który chroni strony przed cross-site scripting, więc zdekodowany ciąg zawierający znacznik <script> lub procedurę obsługi zdarzeń jest ponownie aktywną, niebezpieczną składnią. Nigdy nie dekoduj niezaufanych danych, a następnie nie wstawiaj ich na stronę przez innerHTML — to ponownie otwiera dokładnie tę lukę, którą kodowanie miało zamknąć. Dekoduj, gdy potrzebujesz surowych znaków do odczytu, edycji lub przechowania; jeśli wynik będzie renderowany z powrotem do HTML, najpierw ponownie poddaj go escape w jego kontekście docelowym. A ponieważ każdy bajt jest przetwarzany w Twojej przeglądarce, ciągi po escape, które dekodujesz — nawet prywatny rekord czy nieopublikowany szkic — nigdy nie przechodzą przez sieć. Przy sąsiednich konwersjach koder / dekoder URL obsługuje kodowanie procentowe, a Base64 koder / dekoder obsługuje bezpieczny binarnie transport.
// Decoding is the inverse of escaping. The classic round-trip:
// < → < > → > & → & " → " ' → '
// Browser — the safest decoder is the platform itself. Use textarea, NOT innerHTML on a live node,
// so the decoded markup is never executed.
function decodeHtml(str) {
const ta = document.createElement('textarea');
ta.innerHTML = str; // the parser resolves entities into text
return ta.value; // .value is plain text — no script runs
}
decodeHtml('<div> & ©'); // → '<div> & ©'
decodeHtml('<>'); // → '<>'
decodeHtml('😀'); // → '😀'
decodeHtml('© 2026'); // → '© 2026' (lenient, no semicolon)
// ---------------------------------------------------------------
// SECURITY: decoded text is unescaped. Never do this with untrusted input:
// el.innerHTML = decodeHtml(userInput); // ❌ reopens the XSS hole
// If the decoded value must be displayed, re-escape it in its destination context first,
// or assign it as text:
// el.textContent = decodeHtml(userInput); // ✅ shown as literal text
// ---------------------------------------------------------------
// Node.js (no DOM) — use a tested library such as he:
// import { decode } from 'he';
// decode('<div> & ©'); // → '<div> & ©' Kluczowe funkcje
Dekoduje odwołania nazwane, dziesiętne i szesnastkowe
Rozwija pełny zestaw encji nazwanych HTML5 (<, ©, —), dziesiętne odwołania liczbowe (<) i szesnastkowe odwołania (<) w dowolnej kombinacji, dokładnie tak jak przeglądarka — więc odwraca cokolwiek wygenerował koder.
Obsługuje emoji i znaki z płaszczyzn astralnych
Odwołania liczbowe powyżej U+FFFF są odtwarzane do pełnego punktu kodowego, więc 😀 dekoduje się do 😀, a nie do uszkodzonej pary zastępczej. Rzadkie ideogramy CJK i symbole matematyczne również dekodują się wiernie.
Tolerancyjne parsowanie starszych encji
Stosuje zgodne wstecznie reguły przeglądarki dla encji nazwanych bez kończącego średnika, więc starsza lub niechlujna składnia jak © 2026 wciąż dekoduje się do © 2026 tam, gdzie ścisły parser pozostawiłby ją uszkodzoną.
Dekodowanie na żywo, natychmiastowe
Wynik aktualizuje się podczas pisania — bez przycisku zatwierdzania, bez opóźnień obiegu sieciowego. Wklej duży blok po escape, a odzyskany tekst pojawi się od razu, gotowy do skopiowania.
Wbudowany szybki przegląd encji
Tabela referencyjna mapująca najczęstsze encje — pięć zarezerwowanych plus ©, ®, ™, €, —, i więcej — na ich znaki znajduje się bezpośrednio na stronie, dzięki czemu nigdy nie musisz szukać encji gdzie indziej.
Zamiana na koder jednym kliknięciem
Zamień kierunek przeskakuje prosto do kodera encji HTML, aby odwrócić operację. Kodowanie i dekodowanie są dokładnie odwrotne, więc możesz przepuszczać tekst tam i z powrotem bez strat.
W 100% prywatne, tylko w przeglądarce
Całe dekodowanie odbywa się na Twoim urządzeniu w JavaScripcie — bez żądań sieciowych, bez rejestrowania, bez przechowywania, co można sprawdzić w Narzędziach deweloperskich → Sieć. Prywatne fragmenty z bazy danych, treści e-maili i nieopublikowane szkice nigdy nie opuszczają karty.
Dostępne w 15 językach
Cały interfejs — etykiety, instrukcje i wskazówki — jest zlokalizowany w 15 językach, więc narzędzie i jego porady dotyczące bezpieczeństwa są zrozumiałe niezależnie od tego, gdzie pracuje Twój zespół.
Przykłady z omówieniem
Dekodowanie mieszanki encji nazwanych
<div> & ©
<div> & ©
Dekoder rozwija każde odwołanie nazwane na znak, który reprezentuje: < staje się <, > staje się >, & staje się &, a © staje się znakiem praw autorskich ©. To codzienny przypadek — wzięcie ciągu, który został zapisany lub przesłany w postaci po escape, i zamienienie go z powrotem na prawdziwe znaki, abyś mógł odczytać, edytować lub ponownie przetworzyć składnię. Dekodowanie jest dokładnym odwróceniem kodowania, więc ciąg przepuszczony przez koder i z powrotem dociera bez zmian.
Dekodowanie odwołań liczbowych dziesiętnych i szesnastkowych
<>
<>
Liczbowe odwołania znakowe działają w obu systemach: < to forma dziesiętna punktu kodowego 60, czyli <, a > to forma szesnastkowa punktu kodowego 62, czyli >. Dekoder obsługuje odwołania dziesiętne (&#NNN;) i szesnastkowe (&#xHHH;) wymiennie, rozwijając każde na jego znak Unicode. Ma to znaczenie, bo kodery nie zgadzają się co do tego, którą formę zwracać — niektóre wolą dziesiętną, inne szesnastkową — a solidny dekoder musi przyjmować obie.
Dekodowanie starszej encji bez średnika
© 2026
© 2026
Starszy HTML pozwalał, by niewielki zbiór encji nazwanych pojawiał się bez kończącego średnika, a przeglądarki nadal je rozwijają dla zgodności wstecznej — © 2026 renderuje się jako © 2026. Ten dekoder stosuje te same tolerancyjne reguły parsowania, więc odzyskuje zamierzony znak z niechlujnej lub starszej składni, którą ścisły parser pozostawiłby nietkniętą. Jeśli debugujesz tekst, który pokazuje błąkające się ©, to właśnie dlatego.
Dekodowanie emoji z jego odwołania szesnastkowego
😀
😀
Odwołania liczbowe nie ograniczają się do podstawowej płaszczyzny wielojęzycznej — 😀 to szesnastkowe odwołanie do punktu kodowego U+1F600, emoji uśmiechniętej twarzy 😀. Dekoder poprawnie odtwarza znaki z płaszczyzn astralnych (wszystko powyżej U+FFFF) z ich odwołań liczbowych, więc emoji, rzadkie ideogramy CJK i symbole matematyczne dekodują się wiernie, zamiast zamieniać się w uszkodzoną parę zastępczą lub glif zastępczy.
Dekodowanie ciągu atrybutu po escape
<a href="x">Tom & Jerry's</a>
<a href="x">Tom & Jerry's</a>
To pełny obieg sztandarowego przykładu kodera. " rozwija się na cudzysłów podwójny, ' (zgodny liczbowy apostrof) rozwija się na ', a encje nawiasów kątowych i ampersanda rozwijają się na swoje dosłowne znaki, odtwarzając dokładnie oryginalne Tom & Jerry's. Ponieważ dekoder przyjmuje odwołania nazwane, dziesiętne i szesnastkowe w dowolnej kombinacji, odwraca cokolwiek wygenerował koder, niezależnie od użytego stylu encji.
Jak używać dekodera encji HTML
- 1
Wklej ciąg po escape
Wrzuć tekst pełen encji HTML do pola wejściowego. Zdekodowane znaki aktualizują się na żywo podczas pisania — nie ma przycisku zatwierdzania i nic nie jest nigdzie wysyłane.
- 2
Odczytaj zdekodowany wynik
Odwołania nazwane, dziesiętne i szesnastkowe rozwijają się automatycznie na znaki, które reprezentują, w tym emoji i inne punkty kodowe z płaszczyzn astralnych. Nie trzeba wybierać formatu — dekoder wykrywa typ każdego odwołania.
- 3
Skopiuj zdekodowany tekst
Kliknij Kopiuj, by umieścić odzyskane znaki w schowku, gotowe do wklejenia w edytor, bazę danych lub inne narzędzie. Wyczyść resetuje oba panele dla kolejnego ciągu.
- 4
Ponowny escape przed ponownym wyświetleniem niezaufanego tekstu
Jeśli zdekodowany wynik będzie renderowany z powrotem na stronie internetowej, a cokolwiek z niego pochodziło z niezaufanego źródła, najpierw ponownie poddaj go escape koderem, aby uniknąć ponownego otwarcia luki XSS.
- 5
Chcesz zakodować zamiast tego? Zamień kierunek
Użyj „Zamień kierunek”, by przełączyć się na koder encji HTML, gdy chcesz zamienić surowe znaki na encje.
Częste błędy przy dekodowaniu HTML
Wyrenderowano zdekodowane niezaufane dane przez innerHTML
Dekodowanie usuwa escape z tekstu, więc zdekodowany znacznik <script> jest ponownie aktywną składnią. Wstawienie go przez innerHTML wykonuje go — to podręcznikowa luka XSS. Ponownie poddaj escape zdekodowany niezaufany tekst lub użyj textContent.
el.innerHTML = decode(userInput) → script runs (XSS)
el.textContent = decode(userInput) → shown as text
Zdekodowano tylko raz, gdy tekst był podwójnie zakodowany
Podwójnie zakodowany tekst wymaga dwóch przejść dekodowania. Zdekodowanie < raz daje <, a nie <. Zdekoduj ponownie — i napraw potok, aby nigdy nie kodował podwójnie.
&lt; decoded once → < (still an entity)
&lt; decoded twice → <
Pomylono dekodowanie HTML z dekodowaniem URL lub Base64
Encje, kodowanie procentowe i base64 to różne schematy. Dekoder HTML nie zamieni %20 na spację ani nie zdekoduje bloku base64. Użyj pasującego narzędzia do każdej warstwy kodowania.
HTML-decode "%3Cdiv%3E" → unchanged, still percent-encoded
URL-decode "%3Cdiv%3E" → <div>
Użyto wyrażenia regularnego, które pomija odwołania liczbowe lub astralne
Ręcznie napisane wyrażenie regularne dla encji nazwanych po cichu pomija <, > i emoji jak 😀, pozostawiając je w wyniku. Użyj parsera przeglądarki lub przetestowanej biblioteki obejmującej wszystkie formy odwołań.
regex for &name; only → 😀 left undecoded
full decoder → 😀 becomes 😀
Wynik wyświetlany jako mojibake po dekodowaniu
Dekodowanie é daje prawdziwe é, ale jeśli odbierająca strona lub plik nie jest serwowany jako UTF-8, znak psuje się w bełkot. Ustaw zestaw znaków na UTF-8, zanim zapiszesz zdekodowany tekst.
decoded é into a Latin-1 file → é mojibake
decoded é into a UTF-8 file → é
Założono ścisłe parsowanie i pominięto starsze encje
Ścisły parser XML ignoruje encje bez średnika jak ©, pozostawiając je dosłownymi. Przeglądarki je rozwijają, więc wierny dekoder również musi — inaczej Twój wynik nie zgadza się z tym, co widzą użytkownicy.
strict parse of "© 2026" → © 2026 literal
lenient parse of "© 2026" → © 2026
Kto korzysta z tego narzędzia
- Odczyt składni przechowywanej w postaci po escape
- Wyciągnąłeś fragment HTML z bazy danych, logu lub pola JSON, gdzie został zapisany jako <div>…? Zdekoduj go, by zobaczyć i edytować prawdziwą składnię, zamiast mrużyć oczy nad ścianą encji.
- Debugowanie tekstu podwójnie zakodowanego
- Widzisz < na żywej stronie tam, gdzie powinno być <? Wklej to tutaj, by potwierdzić, że jest podwójnie zakodowane, zdekoduj dwa razy, by odzyskać oryginał, i prześledź zduplikowany escape do jego źródła w potoku.
- Wyciąganie zwykłego tekstu z fragmentów HTML
- Potrzebujesz czytelnego dla człowieka tekstu z poddanego escape treści e-maila lub pola CMS? Zdekoduj encje, by odzyskać rzeczywiste znaki, zanim zaindeksujesz, przeszukasz lub wyświetlisz treść gdzie indziej.
- Odzyskiwanie znaków z danych zeskrapowanych lub wyeksportowanych
- Eksporty i scrapery często dostarczają treść z nienaruszonymi encjami. Zdekoduj &, é i podobne z powrotem na ich znaki, aby dane były czyste, zanim trafią do Twoich systemów.
- Weryfikacja, że wynik kodera przechodzi obieg
- Po poddaniu ciągu escape koderem zdekoduj go tutaj, aby potwierdzić, że otrzymujesz oryginał z powrotem bez zmian. Czysty obieg dowodzi, że Twój escape jest poprawny i odwracalny.
- Rozwiązanie zagadkowej encji
- Utknąłeś na tym, czym właściwie jest ™ czy …? Wklej to i odczytaj zdekodowany znak lub zajrzyj do wbudowanej tabeli szybkiego przeglądu — nie trzeba zapamiętywać tabel encji.
- Bezpieczne dekodowanie starszej składni
- Pracujesz ze starym HTML, który niespójnie używa encji bez średnika jak © czy  ? Tolerancyjny dekoder odzyskuje zamierzone znaki tak, jak zrobiłaby prawdziwa przeglądarka, więc Twoje czyszczenie odpowiada temu, co użytkownicy faktycznie widzą.
Jak działa dekoder
- Rozwija wszystkie trzy formy odwołań
- Dekoder dopasowuje odwołania nazwane do pełnej tabeli znaków nazwanych HTML5, parsuje odwołania dziesiętne (&#NNN;) jako punkty kodowe o podstawie 10 i parsuje odwołania szesnastkowe (&#xHHH;) jako punkty kodowe o podstawie 16. Każde rozwija się do swojego znaku Unicode; trzy formy są wymienne na wejściu.
- Odtwarzanie płaszczyzn astralnych
- Odwołania liczbowe, których punkt kodowy przekracza U+FFFF — większość emoji i wiele symboli — są przekształcane na poprawną parę zastępczą, aby znak renderował się jako pojedynczy glif. 😀 staje się 😀, a nie dwoma uszkodzonymi pół-znakami.
- Tolerancyjna obsługa starszych encji
- Zdefiniowany podzbiór encji nazwanych historycznie pojawiał się bez kończącego średnika, a przeglądarki nadal je rozwijają. Dekoder odzwierciedla to zachowanie — © 2026 daje © 2026 — odpowiadając renderowaniu prawdziwej przeglądarki, a nie ścisłego parsera XML.
- Idempotentny na zwykłym tekście
- Znaki, które nie są częścią rozpoznanego odwołania, w tym surowy tekst spoza ASCII już obecny na wejściu, przechodzą nietknięte. Dekodowanie ciągu bez encji zwraca go bez zmian, więc operacja jest bezpieczna do uruchomienia na treści mieszanej.
- Zdekodowany wynik jest niepoddany escape
- Dekodowanie jest odwrotnością escape chroniącego przed XSS, więc wynik jest ponownie aktywną składnią. Narzędzie to sygnalizuje, abyś nie wstawiał zdekodowanego niezaufanego tekstu na stronę przez innerHTML — ponownie poddaj go escape w jego kontekście docelowym przed renderowaniem.
- Lokalnie w przeglądarce, zero sieci
- Dekodowanie działa synchronicznie w JavaScripcie w głównym wątku; nie ma wywołania API, nie ma obiegu do serwera ani przechowywania. Dane wejściowe nigdy nie opuszczają strony, co możesz potwierdzić, obserwując pusty panel Sieć podczas pisania.
Dobre praktyki unescape HTML
- Nigdy nie renderuj zdekodowanego niezaufanego tekstu bezpośrednio
- Zdekodowany wynik to niepoddana escape składnia. Jeśli cokolwiek z niego pochodziło od użytkownika lub ze źródła zewnętrznego, ponownie poddaj go escape przed wstawieniem na stronę lub przypisz przez textContent, a nie innerHTML. Pominięcie tego ponownie otwiera lukę cross-site scripting, którą escape miał zamknąć.
- Dekoduj w odwrotnej kolejności kodowania
- Wartość może być zakodowana HTML, potem URL, potem Base64. Cofaj warstwy w odwrotnej kolejności niż zostały zastosowane — i używaj pasującego narzędzia do każdej: tego do encji, dekodera URL do kodowania procentowego, narzędzia Base64 do base64.
- Dekoduj raz, nie odruchowo
- Jeśli pojedyncze dekodowanie pozostawia widoczne encje jak <, dane wejściowe były podwójnie zakodowane — zdekoduj ponownie, by odzyskać oryginał, a potem napraw potok wyżej, aby tekst był poddawany escape dokładnie raz. Nie zapętlaj na ślepo; zrozum, dlaczego istnieje dodatkowa warstwa.
- Serwuj wynik jako UTF-8
- Dekodowanie odwołań liczbowych tworzy prawdziwe znaki Unicode — akcenty, symbole, emoji. Upewnij się, że strona, plik lub pole odbierające zdekodowany tekst jest w UTF-8, inaczej te odzyskane znaki wyświetlą się jako mojibake.
- W kodzie aplikacji preferuj przetestowaną bibliotekę
- Do pojedynczych konwersji to narzędzie jest idealne; w produkcji dekoduj przy użyciu dobrze przetestowanej biblioteki (he w Node, własny parser przeglądarki przez odłączony textarea) zamiast ręcznie pisanego wyrażenia regularnego, które rutynowo pomija odwołania liczbowe, znaki astralne i starsze encje.
Najczęściej zadawane pytania
Czy mój tekst jest wysyłany na wasz serwer podczas dekodowania?
Co to znaczy dekodować lub unescape HTML?
Jakie rodzaje encji potrafi obsłużyć ten dekoder?
Dlaczego mój tekst pokazuje < zamiast
Czy zdekodowany wynik będzie bezpieczny do umieszczenia z powrotem na stronie?
Czy dekodowanie poprawnie obsługuje znaki spoza ASCII i emoji?
Jak zakodować tekst z powrotem na encje?
Czy to to samo co dekodowanie URL lub Base64?
Powiązane narzędzia
Zobacz wszystkie narzędzia →Koder i dekoder Base64
Kodowanie i formatowanie
Zakoduj i zdekoduj Base64 online za darmo. Konwersja w czasie rzeczywistym z pełną obsługą UTF-8 i emoji. 100% w przeglądarce, bez rejestracji.
Konwerter Base64 na obraz
Kodowanie i formatowanie
Zdekoduj ciąg Base64 lub data URI z powrotem na obraz w przeglądarce. Podejrzyj, odczytaj wymiary i MIME, a potem pobierz jako PNG, JPG, GIF, SVG. Bez przesyłania.
Konwerter CSV na JSON
Kodowanie i formatowanie
Konwertuj CSV na JSON w przeglądarce. RFC 4180, wnioskowanie typów, nagłówek, big-int safe. 100% prywatnie, bez wysyłki.
Konwerter .env na JSON
Kodowanie i formatowanie
Wklej plik .env i od razu otrzymaj JSON. Hasła, klucze API i tokeny nigdy nie opuszczają przeglądarki — 100% prywatnie, bez wysyłania, parser dotenv.
Darmowy koder encji HTML — escape HTML
Kodowanie i formatowanie
Koduj encje HTML i znaki specjalne (< > & " ') online — za darmo, bez rejestracji, w 100% w przeglądarce. Wynik nazwany, dziesiętny lub szesnastkowy; nic nie jest wysyłane.
Konwerter HTML na Markdown
Kodowanie i formatowanie
Konwertuj HTML na czysty Markdown w przeglądarce — tabele GFM, listy zadań i linki. Wybierz nagłówki ATX/Setext oraz linki inline lub referencyjne. Idealne do migracji treści webowej lub zasilania LLM. 100% prywatnie.