전체 도구 ↗
💻 이 도구는 PC에서 더 편하게 쓸 수 있어요 · 코드 복사·붙여넣기 작업용
🔤

HTML 엔티티 변환

특수문자를 HTML 엔티티로 인코딩하고, 엔티티를 원래 문자로 디코딩합니다.

⚡ 즉시 변환🔒 브라우저 내 처리↔ 양방향 지원
결과가 준비되면 여기에 표시됩니다
🔤 여기에 변환 결과가 표시됩니다
<script>alert("hi")</script>&lt;script&gt;alert("hi")&lt;/script&gt;

위에 텍스트를 넣고 인코딩·디코딩 버튼을 누르세요

광고

설명

< > & 등 HTML 특수문자를 엔티티로 인코딩하거나 원래대로 디코딩합니다.

광고

관련 도구

HTML 문서 안에서 꺾쇠(<>), 앰퍼샌드(&), 따옴표(") 같은 특수문자를 그대로 쓰면 브라우저가 태그로 해석해 화면이 깨집니다. 이 도구는 특수문자를 HTML 엔티티 코드로 변환하거나, 반대로 엔티티 코드를 원래 문자로 되돌리는 작업을 즉시 처리해줍니다. 코드 블록 예제를 웹 페이지에 표시하거나, 외부에서 받은 HTML을 텍스트로 출력해야 할 때 필수적으로 사용됩니다.

사용 방법

변환할 텍스트를 입력란에 붙여 넣고 '인코딩'을 누르면 특수문자가 &lt;, &amp;, &quot; 같은 엔티티 형식으로 바뀝니다. 반대로 엔티티 코드가 포함된 텍스트를 붙여 넣고 '디코딩'을 누르면 원래 문자로 복원됩니다. 인코딩은 HTML 구조에 관여하는 예약 문자(&lt; &gt; &amp;)를 안전하게 치환하고, 디코딩은 이름 엔티티(&copy;)뿐 아니라 10진수(&#169;)·16진수(&#xA9;) 수치 참조까지 모두 원래 문자로 되돌립니다. 한글·이모지 같은 유니코드 문자는 UTF-8 문서에서 그대로 쓰면 되므로 인코딩 시 변환하지 않고 유지합니다.

이럴 때 유용해요

기술 블로그나 개발 문서에서 HTML·JSX 코드 예제를 그대로 보여줄 때, < > 기호를 &lt; &gt;로 바꾸지 않으면 브라우저가 태그로 인식해 사라져버립니다. 이 도구로 코드 전체를 한 번에 인코딩하면 &lt;div class=&quot;box&quot;&gt; 형태로 바뀌어 안전하게 표시됩니다. 또한 데이터베이스나 API에서 받아온 HTML 엔티티가 섞인 문자열을 사람이 읽을 수 있는 형태로 디코딩할 때도 즉시 활용할 수 있습니다.

자주 하는 실수

인코딩을 두 번 적용하면 & 자체가 &amp;로 변환되어 &amp;lt; 같은 이중 인코딩이 발생합니다. 이미 인코딩된 텍스트를 다시 인코딩하지 않도록 주의해야 합니다. 또한 모든 특수문자가 인코딩 필수는 아닙니다. HTML 속성값 안에서는 따옴표만 주의하면 되고, 본문 텍스트에서는 <와 &만 반드시 인코딩하면 됩니다. 과도하게 인코딩하면 파일 용량이 불필요하게 늘어납니다.

자주 묻는 질문

한글도 엔티티로 변환되나요?
한글은 UTF-8 환경에서는 엔티티 변환 없이 그대로 써도 됩니다. 이 도구의 인코딩은 HTML 예약 문자(&lt; &gt; &amp;)만 치환하므로 한글은 그대로 유지됩니다. 반대로 &#xAC00; 같은 수치 참조가 섞인 문자열은 디코딩하면 원래 한글로 복원됩니다.
&amp;nbsp;는 무엇인가요?
&nbsp;는 줄 바꿈 없는 공백(Non-Breaking Space)을 뜻하는 HTML 엔티티입니다. 단어 사이에 넣으면 해당 위치에서 줄이 끊기지 않아, 숫자와 단위 사이처럼 붙어 있어야 하는 경우에 활용합니다.
디코딩 시 자바스크립트 코드가 포함된 텍스트도 처리할 수 있나요?
이 도구는 텍스트 변환만 수행하며, 포함된 스크립트를 실행하지 않습니다. 단, 디코딩된 결과를 innerHTML에 직접 삽입하면 XSS 위험이 생기므로, 실제 코드에서는 textContent를 사용하는 것이 안전합니다.
&lt;와 &#60;는 같은 건가요?
네, 둘 다 < 문자를 나타냅니다. &lt;는 이름 기반 엔티티, &#60;은 10진수 수치 참조, &#x3C;는 16진수 수치 참조입니다. 브라우저는 세 형식을 모두 동일하게 해석합니다.
변환 후 공백이나 줄 바꿈은 유지되나요?
공백과 줄 바꿈 문자는 변환 대상이 아니므로 그대로 유지됩니다. 단, HTML 렌더링에서는 연속 공백이 하나로 줄어드는 것은 브라우저의 기본 동작이며 이 도구와는 별개입니다.

개인정보처리방침

HTML 엔티티 변환 사용법

위쪽 입력창에 문자를 넣고 "인코딩"을 누르면 < > & 같은 HTML 예약 문자가 &lt; &gt; &amp; 형태의 엔티티로 바뀝니다. 반대로 엔티티가 섞인 문자열을 넣고 "디코딩"을 누르면 원래 글자로 되돌아옵니다. 변환은 브라우저 안에서 즉시 처리되고 입력한 내용은 서버로 전송되지 않으므로, 아직 공개하지 않은 게시글 원문이나 코드 조각을 그대로 넣어봐도 됩니다. 이름 있는 엔티티(&copy;)뿐 아니라 숫자 코드(&#169;)와 16진수 코드(&#xA9;)로 들어온 값도 함께 원문자로 풀어냅니다.

작동 원리 - 왜 '&lt;'로 바뀌나

브라우저는 <를 만나면 태그의 시작으로, &는 엔티티의 시작으로 해석합니다. 그래서 화면에 문자 그대로 '<'를 보여주려면 브라우저가 태그로 오해하지 않도록 &lt;라고 적어 "이건 부등호 문자다"라고 알려줘야 합니다. 이 도구는 브라우저 표준 직렬화를 그대로 활용해 HTML 구조에 영향을 주는 예약 문자(& < >)를 치환합니다. 이때 &가 먼저 처리되므로, 이미 만들어둔 &lt;의 앰퍼샌드가 다시 &amp;lt;로 이중 인코딩되지 않고 안전하게 변환됩니다. 디코딩은 반대로, 이름·10진수·16진수 세 표기를 모두 해석해 원래 코드포인트의 글자로 복원합니다.

이럴 때 씁니다

블로그나 기술 문서에 HTML/JavaScript 코드 예제를 "실행되지 않고 글자 그대로" 보여줘야 할 때가 대표적입니다. <script>를 인코딩하지 않고 붙이면 코드가 실제로 동작해 버립니다. 사용자 입력을 화면에 다시 출력하는 게시판·댓글에서 입력값을 엔티티로 인코딩하면, 남이 넣은 <script>가 스크립트로 실행되는 XSS를 막는 데 도움이 됩니다. 반대로 크롤링하거나 API로 받아온 본문에 &amp;, &#44032; 같은 엔티티가 섞여 읽기 어려울 때, 디코딩해서 원문을 확인하는 용도로도 씁니다.

사용 팁

속성값을 감쌀 때 큰따옴표를 쓰면 값 안의 "&quot;로, 작은따옴표를 쓰면 '&#39;로 바꿔야 따옴표가 조기에 닫히지 않습니다. 작은따옴표는 &apos;라는 이름 엔티티도 있지만 구형 인터넷 익스플로러에서 인식하지 못하므로, 호환성을 원하면 숫자형 &#39;가 안전합니다. 한글이나 이모지처럼 ASCII를 벗어난 글자는 굳이 엔티티로 바꾸지 않아도 UTF-8 문서에서는 그대로 표시되니, 태그·따옴표에 관여하는 문자만 인코딩하는 편이 결과가 깔끔합니다. 공백을 &nbsp;로 무조건 치환하면 줄바꿈이 안 되는 딱딱한 문장이 될 수 있으니 필요한 곳에만 쓰세요.

자주 묻는 질문

이름 엔티티(&lt;)와 숫자 엔티티(&#60;) 중 뭘 써야 하나요?

결과 글자는 같습니다. &lt;처럼 이름이 있는 것은 사람이 읽기 쉽고, &#60;이나 &#x3C; 같은 숫자형은 이름이 없는 문자까지 코드포인트로 표현할 수 있어 범용적입니다. 표준에 이름이 정의된 문자는 이름형을, 그 외에는 숫자형을 쓰면 됩니다.

&amp;amp; 처럼 앰퍼샌드가 여러 번 겹쳐 나와요.

이미 인코딩된 문자열을 한 번 더 인코딩한 이중 인코딩입니다. &&amp;로, 그게 다시 &amp;amp;로 불어난 경우죠. 디코딩을 겹친 횟수만큼 반복하면 원문으로 돌아옵니다. 저장 단계에서 인코딩을 딱 한 번만 하도록 흐름을 점검하세요.

모든 문자를 엔티티로 바꿔야 안전한가요?

그럴 필요는 없습니다. HTML 구조에 관여하는 & < > " '만 상황에 맞게 인코딩하면 충분합니다. 일반 한글·영문·숫자까지 전부 숫자 엔티티로 바꾸면 용량만 커지고 가독성이 떨어질 뿐 보안이 더 강해지지는 않습니다.

디코딩했더니 글자가 깨집니다.

&#44032;처럼 코드포인트가 정확한 값이면 정상 복원됩니다. 깨진다면 원본 숫자가 잘못됐거나, 반쪽만 남은 &# 또는 세미콜론이 빠진 엔티티가 섞였을 수 있습니다. 문자열 중간이 잘리지 않았는지 확인해 보세요.