Skip to content

무료 HTML 엔티티 디코더 — HTML 언이스케이프

온라인에서 HTML 엔티티를 디코딩하고 HTML을 언이스케이프하세요. 무료, 가입 불필요, 100% 브라우저에서 처리. 이름·10진수·16진수 참조를 문자로 되돌리며 업로드 없음.

트래킹 없음 브라우저 실행 무료

텍스트는 브라우저에서 로컬로 디코딩되며 업로드, 로깅, 저장되지 않습니다. 이 기기에 머뭅니다.

0
디코딩된 HTML / 텍스트
0
엔티티 디코딩 규격 정확성(이름 / 10진수 / 16진수 해석), 아스트랄 평면 및 이모지 재구성, 관대한 레거시 엔티티 파싱, 디코딩된 신뢰할 수 없는 텍스트 렌더링의 XSS 위험(과 이를 완화하는 재이스케이프 안내), 입력의 무네트워크·무저장 프라이버시, 접근성(라벨이 붙은 컨트롤, 디코딩 및 복사 시 라이브 영역 안내)에 대해 검토했습니다. — Go Tools 인코딩 팀 · Jun 17, 2026

HTML 엔티티 디코딩이란?

HTML 엔티티 디코딩(HTML 언이스케이프라고도 함)은 문자 참조를 그것이 나타내는 문자로 되돌리는 과정입니다. 인코딩이 글자 그대로의 <를 엔티티 <로 바꿔 브라우저가 텍스트로 표시하게 하는 반면, 디코딩은 그 반대입니다. 문자열에서 <, &, <, >, © 같은 참조를 찾아 각각을 실제 문자(<, &, <, >, ©)로 치환합니다. 이스케이프된 형태로 저장·전송된 마크업이 있고 글자 그대로의 텍스트가 다시 필요할 때, 즉 읽거나 편집하거나 다른 프로그램에 넘기거나 페이지가 < 대신 &lt;를 렌더링하는 이유를 알아낼 때 실행하는 작업입니다.

이 도구가 하는 일을 정확히 짚어 두면 좋습니다. 엔티티를 문자로 디코딩할 뿐, 마크업을 다시 포맷하거나 검증하지는 않습니다. 이스케이프된 문자열을 받아 글자 그대로의 문자를 복구하고 싶다면 이 도구가 알맞습니다. 반대 방향으로 문자를 엔티티로 바꾸려면 HTML 엔티티 인코더를, HTML 블록을 들여쓰고 정돈하려면 HTML 포매터를 사용하세요. 인코딩과 디코딩은 정확한 역연산이므로 인코더를 거쳐 디코더로 되돌아온 문자열은 변하지 않고 돌아옵니다.

디코더가 이해해야 하는 참조에는 세 종류가 있고, 모두 처리합니다. 이름 참조는 정의된 라벨을 사용하고(<는 <, ©는 ©, —는 —), 10진수 숫자 참조는 유니코드 코드 포인트를 10진법으로 쓰며(<는 <), 16진수 숫자 참조는 같은 코드 포인트를 16진법으로 써서(<는 <) 유니코드 표준의 U+XXXX 표기와 맞춥니다. 견고한 디코더는 인코더마다 다른 형태를 출력하므로 이들 중 무엇이든 어떤 조합으로든 받아들입니다. 아래 표는 가장 자주 만나게 될 참조와 각각이 디코딩되는 문자를 보여줍니다.

| 엔티티(이름) | 10진수 | 16진수 | 디코딩 결과 | |----------------|---------|-----|------------| | &lt; | &#60; | &#x3C; | < | | &gt; | &#62; | &#x3E; | > | | &amp; | &#38; | &#x26; | & | | &quot; | &#34; | &#x22; | " | | &#x27; | &#39; | &#x27; | ' | | &nbsp; | &#160; | &#xA0; | (줄바꿈 없는 공백) | | &copy; | &#169; | &#xA9; | © | | &reg; | &#174; | &#xAE; | ® | | &trade; | &#8482; | &#x2122; | ™ | | &euro; | &#8364; | &#x20AC; | € | | &pound; | &#163; | &#xA3; | £ | | &mdash; | &#8212; | &#x2014; | — | | &ndash; | &#8211; | &#x2013; | – | | &hellip; | &#8230; | &#x2026; | … | | &#x1F600; | &#128512; | &#x1F600; | 😀 |

철저한 디코더를 구별 짓는 두 가지 동작이 있습니다. 첫째, 대부분의 이모지를 포함해 U+FFFF 이상의 아스트랄 평면 문자를 깨진 반쪽 문자가 아니라 숫자 참조에서 재구성합니다. 😀은 올바르게 😀가 됩니다. 둘째, 역사적으로 끝의 세미콜론 없이 나타난 소수의 레거시 이름 엔티티에 대해 브라우저의 관대한 파싱을 따르므로, 엄격한 XML이라면 거부할 &copy 2026도 © 2026으로 디코딩됩니다. 이 도구는 둘 다 수행하며, 널리 쓰이는 he 라이브러리의 동작과 일치해 그 출력이 실제 브라우저가 렌더링하는 것과 같습니다.

모든 디코더에 따라붙는 주의 한 가지: 디코딩된 텍스트는 정의상 언이스케이프된 상태입니다. 디코딩은 교차 사이트 스크립팅으로부터 페이지를 보호하는 이스케이프의 역이므로, <script> 태그나 이벤트 핸들러가 든 디코딩 문자열은 다시 살아 있는 위험한 마크업입니다. 신뢰할 수 없는 입력을 디코딩한 뒤 innerHTML로 페이지에 삽입하지 마세요. 이는 인코딩이 막으려던 바로 그 구멍을 다시 엽니다. 읽기, 편집, 저장을 위해 원시 문자가 필요할 때 디코딩하고, 결과를 HTML로 다시 렌더링할 것이라면 먼저 도착하는 문맥에서 다시 이스케이프하세요. 그리고 모든 바이트가 브라우저에서 처리되므로 디코딩하는 이스케이프 문자열은(비공개 기록이나 미게시 초안이라도) 네트워크를 건너지 않습니다. 인접한 변환으로 URL 인코더 / 디코더는 퍼센트 인코딩을, Base64 인코드 / 디코드는 바이너리 안전 전송을 처리합니다.

// Decoding is the inverse of escaping. The classic round-trip:
//   &lt;  →  <     &gt;  →  >     &amp;  →  &     &quot;  →  "     &#x27;  →  '

// 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('&lt;div&gt; &amp; &copy;');   // → '<div> & ©'
decodeHtml('&#60;&#x3E;');                // → '<>'
decodeHtml('&#x1F600;');                 // → '😀'
decodeHtml('&copy 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('&lt;div&gt; &amp; &copy;');     // → '<div> & ©'

주요 기능

이름·10진수·16진수 참조 디코딩

전체 HTML5 이름 엔티티 집합(<, ©, —), 10진수 숫자 참조(<), 16진수 참조(<)를 브라우저와 똑같이 어떤 조합으로든 해석하므로, 인코더가 만든 것이라면 무엇이든 되돌립니다.

이모지와 아스트랄 평면 문자 처리

U+FFFF를 넘는 숫자 참조가 완전한 코드 포인트로 재구성되어 😀이 깨진 서로게이트가 아니라 😀로 디코딩됩니다. 드문 CJK 한자와 수학 기호도 충실히 디코딩됩니다.

관대한 레거시 엔티티 파싱

끝의 세미콜론이 빠진 이름 엔티티에 대해 브라우저의 하위 호환 규칙을 따르므로, 엄격한 파서라면 깨진 채 두었을 &copy 2026 같은 레거시·어수선한 마크업도 © 2026으로 디코딩됩니다.

실시간 즉시 디코딩

입력하는 대로 출력이 갱신됩니다. 제출 버튼도, 왕복 지연도 없습니다. 큰 이스케이프 블록을 붙여넣어도 복구된 텍스트가 즉시 나타나 복사할 준비가 됩니다.

엔티티 빠른 참조 내장

예약된 다섯 문자에 ©, ®, ™, €, —,   등을 더한 가장 흔한 엔티티를 해당 문자에 매핑한 참조 표가 페이지에 바로 있어, 엔티티를 다른 곳에서 찾아볼 필요가 없습니다.

원클릭으로 인코더 전환

방향 전환이 곧바로 HTML 엔티티 인코더로 이동해 작업을 되돌립니다. 인코딩과 디코딩은 정확한 역연산이므로 손실 없이 텍스트를 왕복할 수 있습니다.

100% 비공개, 브라우저 전용

모든 디코딩이 자바스크립트로 기기에서 처리됩니다. 네트워크 요청도, 로깅도, 저장도 없으며 DevTools → 네트워크에서 확인할 수 있습니다. 비공개 데이터베이스 조각, 이메일 콘텐츠, 미게시 초안이 탭을 벗어나지 않습니다.

15개 언어 지원

라벨, 설명, 안내를 포함한 전체 인터페이스가 15개 언어로 현지화되어, 팀이 어디서 일하든 도구와 보안 조언이 명확합니다.

실전 예제

여러 이름 엔티티 디코딩

&lt;div&gt; &amp; &copy;
<div> & ©

디코더는 각 이름 참조를 그것이 나타내는 문자로 해석합니다. <는 <로, >는 >로, &는 &로, ©는 저작권 기호 ©가 됩니다. 이는 일상적인 경우로, 이스케이프된 형태로 저장·전송된 문자열을 실제 문자로 되돌려 마크업을 읽고 편집하거나 다시 처리할 수 있게 합니다. 디코딩은 인코딩의 정확한 역연산이므로 인코더를 거쳐 다시 돌아온 문자열은 변하지 않고 도착합니다.

10진수 및 16진수 숫자 참조 디코딩

&#60;&#x3E;
<>

숫자 문자 참조는 두 진법 모두에서 동작합니다. <는 코드 포인트 60의 10진수 형태로 <이고, >는 코드 포인트 62의 16진수 형태로 >입니다. 디코더는 10진수(&#NNN;)와 16진수(&#xHHH;) 참조를 서로 바꿔 처리하며 각각을 유니코드 문자로 해석합니다. 인코더마다 어느 형태를 출력할지 의견이 갈리므로(일부는 10진수, 일부는 16진수) 견고한 디코더는 둘 다 받아들여야 합니다.

세미콜론이 빠진 레거시 엔티티 디코딩

&copy 2026
© 2026

오래된 HTML은 소수의 이름 엔티티가 끝의 세미콜론 없이 나타나는 것을 허용했고, 브라우저는 하위 호환성을 위해 여전히 이를 해석합니다. &copy 2026은 © 2026으로 렌더링됩니다. 이 디코더는 같은 관대한 파싱 규칙을 따르므로, 엄격한 파서라면 그대로 두었을 어수선하거나 레거시인 마크업에서 의도된 문자를 복구합니다. 텍스트에 떠도는 &copy를 디버깅하고 있다면 그 이유가 이것입니다.

16진수 참조에서 이모지 디코딩

&#x1F600;
😀

숫자 참조는 기본 다국어 평면에 국한되지 않습니다. 😀은 코드 포인트 U+1F600, 즉 활짝 웃는 얼굴 이모지 😀의 16진수 참조입니다. 디코더는 숫자 참조에서 아스트랄 평면 문자(U+FFFF 이상)를 올바르게 재구성하므로 이모지, 드문 CJK 한자, 수학 기호가 깨진 서로게이트나 대체 글리프로 변하지 않고 충실히 디코딩됩니다.

이스케이프된 속성 문자열 디코딩

&lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&#x27;s&lt;/a&gt;
<a href="x">Tom & Jerry's</a>

이것은 인코더 대표 예제의 완전한 왕복입니다. "는 큰따옴표로, '(호환성이 보장되는 숫자 아포스트로피)는 '로, 꺾쇠괄호와 앰퍼샌드 엔티티는 글자 그대로의 문자로 해석되어 원래의 Tom & Jerry's를 정확히 재구성합니다. 디코더는 이름·10진수·16진수 참조를 어떤 조합으로든 받아들이므로, 어떤 엔티티 스타일이 쓰였든 인코더가 만든 것을 되돌립니다.

HTML 엔티티 디코더 사용법

  1. 1

    이스케이프된 문자열 붙여넣기

    HTML 엔티티로 가득한 텍스트를 입력 상자에 넣으세요. 디코딩된 문자는 입력하는 대로 실시간 갱신됩니다. 제출 버튼도 없고 어디로도 전송되지 않습니다.

  2. 2

    디코딩된 결과 읽기

    이름·10진수·16진수 참조가 이모지와 그 밖의 아스트랄 평면 코드 포인트를 포함해 그것들이 나타내는 문자로 자동 해석됩니다. 형식 선택이 필요 없습니다. 디코더가 각 참조의 종류를 감지합니다.

  3. 3

    디코딩된 텍스트 복사

    복사를 클릭하면 복구된 문자가 클립보드에 담겨 편집기, 데이터베이스, 다른 도구에 붙여넣을 준비가 됩니다. 지우기는 다음 문자열을 위해 양쪽 창을 초기화합니다.

  4. 4

    신뢰할 수 없는 텍스트를 다시 표시하기 전에 재이스케이프

    디코딩된 출력을 웹 페이지에 다시 렌더링할 예정이고 그중 일부가 신뢰할 수 없는 출처에서 왔다면, XSS 구멍을 다시 여는 것을 피하기 위해 먼저 인코더로 다시 이스케이프하세요.

  5. 5

    인코딩이 필요하면 방향 전환

    원시 문자를 엔티티로 바꾸고 싶을 때 방향 전환으로 HTML 엔티티 인코더로 이동하세요.

흔한 HTML 디코딩 실수

디코딩된 신뢰할 수 없는 입력을 innerHTML로 렌더링

디코딩은 텍스트를 언이스케이프하므로 디코딩된 <script> 태그는 다시 살아 있는 마크업입니다. 이를 innerHTML로 삽입하면 실행됩니다. 교과서적인 XSS 구멍입니다. 디코딩된 신뢰할 수 없는 텍스트를 다시 이스케이프하거나 textContent를 쓰세요.

✗ 오류
el.innerHTML = decode(userInput)  →  script runs (XSS)
✓ 정상
el.textContent = decode(userInput)  →  shown as text

이중 인코딩된 텍스트를 한 번만 디코딩

이중 인코딩된 텍스트에는 두 번의 디코딩이 필요합니다. &lt;를 한 번 디코딩하면 <가 아니라 <가 나옵니다. 다시 디코딩하고, 애초에 이중 인코딩하지 않도록 파이프라인을 고치세요.

✗ 오류
&amp;lt;  decoded once  →  &lt;  (still an entity)
✓ 정상
&amp;lt;  decoded twice  →  <

HTML 디코딩을 URL이나 Base64 디코딩과 혼동

엔티티, 퍼센트 인코딩, base64는 서로 다른 체계입니다. HTML 디코더는 %20을 공백으로 바꾸거나 base64 덩어리를 디코딩하지 않습니다. 각 인코딩 계층에 맞는 도구를 쓰세요.

✗ 오류
HTML-decode "%3Cdiv%3E"  →  unchanged, still percent-encoded
✓ 정상
URL-decode "%3Cdiv%3E"  →  <div>

숫자·아스트랄 참조를 놓치는 정규식 사용

이름 엔티티용으로 직접 작성한 정규식은 <, >, 😀 같은 이모지를 조용히 건너뛰어 출력에 남깁니다. 모든 참조 형태를 다루는 브라우저 파서나 검증된 라이브러리를 쓰세요.

✗ 오류
regex for &name; only  →  &#x1F600; left undecoded
✓ 정상
full decoder  →  &#x1F600; becomes 😀

디코딩 후 출력이 모지바케로 표시

é를 디코딩하면 실제 é가 나오지만, 받는 페이지나 파일이 UTF-8로 제공되지 않으면 문자가 깨진 글자로 손상됩니다. 디코딩된 텍스트를 쓰기 전에 문자셋을 UTF-8로 설정하세요.

✗ 오류
decoded é into a Latin-1 file  →  é mojibake
✓ 정상
decoded é into a UTF-8 file  →  é

엄격한 파싱을 가정해 레거시 엔티티를 놓침

엄격한 XML 파서는 &copy 같은 세미콜론 없는 엔티티를 무시해 글자 그대로 남깁니다. 브라우저는 이를 해석하므로 충실한 디코더도 그래야 합니다. 그렇지 않으면 출력이 사용자가 보는 것과 어긋납니다.

✗ 오류
strict parse of "&copy 2026"  →  &copy 2026 literal
✓ 정상
lenient parse of "&copy 2026"  →  © 2026

누가 이 도구를 사용하나

이스케이프된 형태로 저장된 마크업 읽기
데이터베이스, 로그, JSON 필드에서 <div>…처럼 저장된 HTML 조각을 꺼내셨나요? 디코딩해 엔티티의 벽을 들여다보는 대신 실제 마크업을 보고 편집하세요.
이중 인코딩된 텍스트 디버깅
<가 보여야 할 라이브 페이지에서 &lt;가 보이나요? 여기에 붙여넣어 이중 인코딩 여부를 확인하고, 두 번 디코딩해 원본을 복구한 뒤 중복 이스케이프를 파이프라인의 출처까지 추적하세요.
HTML 조각에서 일반 텍스트 추출
이스케이프된 이메일 본문이나 CMS 필드에서 사람이 읽을 수 있는 텍스트가 필요하신가요? 콘텐츠를 색인·검색하거나 다른 곳에 표시하기 전에 엔티티를 디코딩해 실제 문자를 복구하세요.
스크랩·내보낸 데이터에서 문자 복구
내보내기와 스크레이퍼는 엔티티가 그대로 든 콘텐츠를 전달하는 경우가 많습니다. &, é 등을 해당 문자로 디코딩해, 데이터가 자체 시스템에 들어가기 전에 깨끗하게 만드세요.
인코더 출력의 왕복 검증
인코더로 문자열을 이스케이프한 뒤 여기서 디코딩해 원본이 변하지 않고 돌아오는지 확인하세요. 깨끗한 왕복은 이스케이프가 올바르고 되돌릴 수 있음을 증명합니다.
수수께끼 엔티티 해석
™이나 …이 실제로 무엇인지 막히셨나요? 붙여넣고 디코딩된 문자를 읽거나 내장 빠른 참조 표를 보세요. 엔티티 표를 외울 필요가 없습니다.
레거시 마크업 안전하게 디코딩
&copy나 &nbsp 같은 세미콜론 없는 엔티티를 일관성 없이 쓰는 오래된 HTML을 다루시나요? 관대한 디코더가 실제 브라우저처럼 의도된 문자를 복구하므로, 정리 결과가 사용자가 실제로 보는 것과 일치합니다.

디코더 작동 원리

세 참조 형태 모두 해석
디코더는 이름 참조를 전체 HTML5 이름 문자 표와 대조하고, 10진수 참조(&#NNN;)를 10진 코드 포인트로, 16진수 참조(&#xHHH;)를 16진 코드 포인트로 파싱합니다. 각각이 유니코드 문자로 해석되며 세 형태는 입력에서 서로 바꿔 쓸 수 있습니다.
아스트랄 평면 재구성
코드 포인트가 U+FFFF를 넘는 숫자 참조(대부분의 이모지와 많은 기호)는 올바른 서로게이트 쌍으로 변환되어 문자가 하나의 글리프로 렌더링됩니다. 😀은 깨진 반쪽 문자 둘이 아니라 😀가 됩니다.
관대한 레거시 엔티티 처리
정의된 일부 이름 엔티티가 역사적으로 끝의 세미콜론 없이 나타났고 브라우저는 여전히 이를 해석합니다. 디코더는 이 동작을 따라 &copy 2026이 © 2026이 되게 하며, 엄격한 XML 파서가 아니라 실제 브라우저의 렌더링과 일치합니다.
일반 텍스트에 멱등
인식되는 참조의 일부가 아닌 문자는 입력에 이미 있는 원시 비ASCII 텍스트를 포함해 그대로 통과합니다. 엔티티가 없는 문자열을 디코딩하면 변하지 않고 돌아오므로, 혼합 콘텐츠에서 실행해도 안전합니다.
디코딩된 출력은 언이스케이프 상태
디코딩은 XSS 방어 이스케이프의 역이므로 결과는 다시 살아 있는 마크업입니다. 이 도구는 이를 드러내어 디코딩된 신뢰할 수 없는 텍스트를 innerHTML로 페이지에 삽입하지 않도록 하니, 렌더링 전에 도착하는 문맥에서 다시 이스케이프하세요.
브라우저 로컬, 네트워크 제로
디코딩은 메인 스레드에서 자바스크립트로 동기 실행됩니다. API 호출도, 서버 왕복도, 영속 저장도 없습니다. 입력은 페이지를 벗어나지 않으며, 입력하는 동안 비어 있는 네트워크 패널을 지켜보면 확인할 수 있습니다.

HTML 언이스케이프 모범 사례

신뢰할 수 없는 디코딩 텍스트를 직접 렌더링하지 말 것
디코딩된 출력은 언이스케이프된 마크업입니다. 그중 일부가 사용자나 외부 출처에서 왔다면 페이지에 삽입하기 전에 다시 이스케이프하거나 innerHTML 대신 textContent로 할당하세요. 이를 건너뛰면 이스케이프가 막으려던 교차 사이트 스크립팅 구멍이 다시 열립니다.
인코딩의 역순으로 디코딩
한 값이 HTML 인코딩, 그다음 URL 인코딩, 그다음 Base64 인코딩될 수 있습니다. 적용된 반대 순서로 계층을 풀고, 각각에 맞는 도구를 쓰세요. 엔티티에는 이 도구를, 퍼센트 인코딩에는 URL 디코더를, base64에는 Base64 도구를 사용합니다.
반사적이 아니라 한 번만 디코딩
한 번 디코딩한 뒤 < 같은 엔티티가 남아 보이면 입력이 이중 인코딩된 것입니다. 다시 디코딩해 원본을 복구한 다음, 텍스트가 정확히 한 번만 이스케이프되도록 상류 파이프라인을 고치세요. 맹목적으로 반복하지 말고 그 추가 계층이 왜 있는지 이해하세요.
결과를 UTF-8로 제공
숫자 참조를 디코딩하면 악센트, 기호, 이모지 같은 실제 유니코드 문자가 나옵니다. 디코딩된 텍스트를 받는 페이지, 파일, 필드가 UTF-8인지 확인하세요. 그렇지 않으면 복구된 문자가 깨진 글자(모지바케)로 표시됩니다.
애플리케이션 코드에서는 검증된 라이브러리 선호
일회성 변환에는 이 도구가 이상적이지만, 운영에서는 직접 만든 정규식보다 잘 검증된 라이브러리(Node의 he, 분리된 textarea를 통한 브라우저 자체 파서)로 디코딩하세요. 직접 만든 정규식은 숫자 참조, 아스트랄 문자, 레거시 엔티티를 흔히 놓칩니다.

자주 묻는 질문

디코딩할 때 내 텍스트가 서버로 전송되나요?
아니요. 모든 엔티티는 자바스크립트로 브라우저 안에서 전부 해석됩니다. DevTools → 네트워크를 열어 보면 입력하거나 붙여넣을 때 요청이 전혀 발생하지 않습니다. 아무것도 업로드되지 않고, 기록되지 않으며, 디스크에 저장되지 않습니다. 사람들이 디코딩하는 이스케이프 문자열은 비공개 데이터베이스에서 꺼낸 조각, 내부 이메일, 고객 기록, 유출되어선 안 되는 애플리케이션에서 복사한 마크업처럼 민감한 경우가 많기 때문에 이 프라이버시가 중요합니다. 서버 측 디코더에서는 그 모두가 사용자가 통제하지 못하는 기계로 네트워크를 거쳐 전송되지만, 여기서는 텍스트가 탭을 벗어나지 않습니다. 처리하는 모든 것을 복사해 둘 수도 있는 웹사이트에 붙여넣는 대신 클라이언트 측에서 HTML을 디코딩하는 이유가 바로 이것입니다.
HTML을 디코딩하거나 언이스케이프한다는 것은 무엇인가요?
HTML 디코딩(언이스케이프라고도 함)은 HTML 이스케이프의 역으로, <, &, <, © 같은 문자 참조를 각각이 나타내는 실제 문자(<, &, <, ©)로 되돌립니다. 이스케이프된 형태로 저장·전송된 문자열이 있고 글자 그대로의 텍스트가 다시 필요할 때, 즉 읽거나 편집하거나 다른 프로그램에 넘기거나 페이지가 < 대신 &lt;를 보여주는 이유를 디버깅할 때 사용합니다. 반대 방향으로 문자를 엔티티로 바꾸려면 함께 제공되는 HTML 엔티티 인코더를 사용하세요. 둘은 정확한 역연산입니다.
이 디코더는 어떤 종류의 엔티티를 처리하나요?
세 형태 모두를 어떤 조합으로든 처리합니다. 이름 참조(<, &, ©, — 및 전체 HTML5 이름 엔티티 집합), 10진수 숫자 참조(<, é), 16진수 숫자 참조(<, é)를 해석합니다. 또한 숫자 참조에서 U+FFFF 이상의 아스트랄 평면 문자를 재구성하므로 😀 같은 이모지가 😀로 올바르게 디코딩됩니다. 그리고 끝의 세미콜론이 빠진 소수의 레거시 이름 엔티티에 대해 브라우저의 관대한 파싱을 따르므로, 엄격한 파서라면 건너뛸 &copy 2026도 © 2026으로 디코딩됩니다. 요컨대 인코더가 만든 것이라면 무엇이든 이 디코더가 되돌립니다.
왜 텍스트가 < 대신 &lt;를 보여주나요?
그것은 이중 인코딩의 전형적인 증상입니다. 파이프라인 어딘가에서 텍스트가 두 번 이스케이프되었습니다. 첫 번째 단계가 <를 <로 바꿨고, 두 번째 단계가 < 안의 &를 &로 바꿔 &lt;가 되었습니다. 브라우저가 이를 한 번 디코딩하면 <를 글자 그대로의 텍스트로 보여줍니다. 원본을 복구하려면 두 번 디코딩하세요. 여기에 문자열을 붙여넣어 <를 얻고, 그 결과를 다시 붙여넣어 <를 얻습니다. 진짜 해결은 상류에 있습니다. 출력 시점에 정확히 한 번만 이스케이프해 텍스트가 애초에 이중 인코딩되지 않게 하세요.
디코딩된 출력을 페이지에 다시 넣어도 안전한가요?
여기서는 주의하세요. 디코딩은 이스케이프의 반대이므로 디코딩된 텍스트는 정의상 언이스케이프된 상태입니다. <script> 태그나 onerror 핸들러가 들어 있으면 그 마크업이 다시 살아납니다. 신뢰할 수 없는 입력을 받아 디코딩한 뒤 그 결과를 innerHTML로 페이지에 삽입하면, 이스케이프가 막으려던 바로 그 교차 사이트 스크립팅(XSS) 구멍을 다시 엽니다. 디코딩은 읽기, 편집, 저장을 위해 원시 문자가 필요할 때 올바른 선택이지만, HTML로 다시 렌더링할 것은 무엇이든 도착하는 문맥에서 다시 이스케이프해야 합니다. 디코딩 결과를 표시할 참이라면 먼저 HTML 엔티티 인코더에 다시 통과시키세요.
디코딩이 비ASCII 문자와 이모지를 올바르게 처리하나요?
네. 숫자 참조는 어떤 유니코드 코드 포인트든 인코딩할 수 있고 디코더가 모두 해석합니다. 악센트 문자(é → é), 기호(€ → €), 엠 대시(— → —), 전체 평면 이모지(😀 → 😀)가 그렇습니다. U+FFFF 이상의 아스트랄 문자에 대해서는 깨진 반쪽 문자가 아니라 완전한 코드 포인트를 재구성합니다. 입력에 이미 있는 원시 비ASCII 문자는 그대로 통과하므로, 실제 UTF-8과 엔티티가 섞인 문자열도 어느 쪽도 손상시키지 않고 깔끔하게 디코딩됩니다. 복구된 문자가 올바르게 표시되도록 결과를 붙여넣을 페이지나 파일이 UTF-8로 제공되는지 확인하세요.
텍스트를 다시 엔티티로 인코딩하려면 어떻게 하나요?
함께 제공되는 HTML 엔티티 인코더를 사용하세요. <div> & © 같은 원시 문자를 받아 <div> & ©로 이스케이프하며, 이름·10진수·16진수 출력 옵션과 레거시 문자셋을 위한 "모든 비ASCII 인코딩" 모드를 제공합니다. 인코딩과 디코딩은 예약 문자에 대해 정확한 역연산이므로 두 도구를 거쳐 손실 없이 왕복할 수 있습니다. 이 페이지의 방향 전환 버튼으로 곧바로 이동할 수 있습니다.
이것이 URL 디코딩이나 Base64 디코딩과 같나요?
아니요. 셋은 서로 다른 작업을 위한 서로 다른 인코딩이며, 이를 혼동하는 것은 흔한 버그의 원인입니다. HTML 엔티티 디코딩은 <를 다시 <로 바꿉니다. URL(퍼센트) 디코딩은 %20을 다시 공백으로 바꾸며 쿼리 문자열과 경로용입니다. 이는 URL 인코더 / 디코더를 사용하세요. Base64 디코딩은 base64 문자열을 원래 바이트로 되돌리며 바이너리 안전 전송용입니다. Base64 인코드 / 디코드를 사용하세요. 한 값이 이들 중 둘 이상으로 감싸일 수 있으므로 적용된 역순으로 디코딩하세요. 이 도구는 HTML 엔티티만 처리합니다.

Base64 디코더 · 인코더 (Base64 Decoder & Encoder)

인코딩 & 포매팅

Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.

Base64 이미지 변환기 (온라인)

인코딩 & 포매팅

Base64 문자열이나 데이터 URI를 온라인 브라우저에서 이미지로 디코딩합니다. 미리보고, 치수와 MIME을 읽은 뒤 PNG, JPG, GIF, SVG로 다운로드하세요. 업로드 없음.

CSV to JSON 변환기 (CSV to JSON Converter)

인코딩 & 포매팅

브라우저에서 CSV를 JSON으로 변환합니다. RFC 4180, 타입 추론, 헤더 행, 큰 정수 안전 처리. 100% 비공개, 업로드 없음.

.env을 JSON으로 변환하는 도구

인코딩 & 포매팅

.env 파일을 붙여넣으면 즉시 JSON으로 변환됩니다. 데이터베이스 비밀번호, API 키, 토큰이 브라우저를 절대 벗어나지 않는 100% 비공개 무료 온라인 dotenv 파서입니다.

무료 HTML 엔티티 인코더 — HTML 이스케이프

인코딩 & 포매팅

온라인에서 HTML 엔티티를 인코딩하고 특수문자(< > & " ')를 이스케이프하세요. 무료, 100% 브라우저에서 처리. 이름·10진수·16진수 출력, 업로드 없음.

HTML to Markdown 변환기

인코딩 & 포매팅

브라우저에서 HTML을 깔끔한 Markdown으로 변환 — GFM 테이블·작업 목록·링크, ATX/Setext와 인라인·참조 링크 선택. 웹 이전·LLM 입력에 적합. 100% 비공개.