HTML 태그 제거기 (순수 텍스트 추출)
태그를 걷어내고 읽을 수 있는 텍스트만 남깁니다
글자 0단어 0줄 0
입력한 글은 브라우저 밖으로 나가지 않습니다.
순수 텍스트
붙여넣으면 태그가 딸려 오는 문제
블로그 편집기, 워드, 노션, 웹메일에서 글을 복사하면 눈에는 안 보여도 <p>·<span style="…"> 같은 태그가 함께 붙어 옵니다. 그대로 다른 곳에 붙이면 서식이 깨지거나 태그가 그대로 드러납니다. 이 도구는 그 태그를 걷어내고 읽을 수 있는 순수 텍스트만 남깁니다.
태그 제거와 엔티티 디코드는 다른 일이다
둘을 자주 뭉뚱그리는데, 실제로는 서로 다른 두 단계입니다.
- 태그 제거 —
<b>굵게</b>에서 꺾쇠 태그를 없애굵게만 남깁니다. - 엔티티 디코드 —
&→&,'→'처럼 문자로 표현된 코드를 실제 문자로 되돌립니다.
순서가 중요합니다. 이 도구는 태그를 먼저 지우고 엔티티를 나중에 풉니다. 만약 엔티티를 먼저 풀면 글 속에 인용해 둔 <script> 가 진짜 <script> 로 되살아나 다음 단계에서 지워져 버립니다. 코드 예시를 담은 글에서 조용히 내용이 사라지는 사고가 여기서 납니다.
<script>·<style> 는 내용째
태그만 지우고 내용을 남기면 alert('x') 나 .box{color:red} 같은 코드가 본문에 섞여 나옵니다. 그래서 이 둘은 여는 태그부터 닫는 태그까지 통째로 지웁니다.
줄바꿈을 남길지 정하기
<p>·<div>·<li>·<br> 같은 블록 요소는 문단과 항목을 나누는 경계입니다. ‘줄바꿈 유지’를 켜면 이들을 줄바꿈으로 바꿔 문단·목록 구조를 남기고, 끄면 전부 한 줄로 이어 붙입니다. 반대로 <b>·<a> 같은 인라인 태그는 글 흐름 중간에 있으므로 어느 쪽이든 줄을 나누지 않습니다.
완전한 파서가 아니라는 정직한 한계
이 도구는 DOM을 만들지 않고 정규식으로 태그를 지웁니다. 덕분에 서버로 아무 것도 보내지 않고 브라우저 안에서 즉시 끝나지만, 대가가 있습니다.
- 부등호를 지키려는 규칙 —
<뒤에 글자·/·!가 와야 태그로 봅니다. 그래서a < b는 안전하지만, 아주 비정상적으로 꼬인 마크업은 완벽히 처리하지 못할 수 있습니다. - 보안용이 아닙니다. 악의적으로 설계한 입력은 정규식을 우회할 수 있습니다. 사용자 입력을 안전하게 만들려면
DOMPurify같은 전용 sanitizer 를 쓰세요.
이럴 때 씁니다
- 글 옮겨 붙이기 — 블로그·노션·워드에서 복사한 글의 서식을 걷어내고 텍스트만.
- 데이터 전처리 — 크롤링·RSS·메일 본문에서 태그를 지워 분석·요약에 넣기.
- 글자 수 확인 전 정리 — 태그를 지운 실제 본문 길이를 세기 전에.
정리하면
- 태그 제거 → 엔티티 디코드 순서. 반대로 하면 인용한 코드가 사라집니다.
- script·style 은 내용째, 블록 태그는 줄바꿈으로.
- 읽기용이지 보안용이 아닙니다. XSS 방어에는 전용 sanitizer 를.
자주 묻는 질문
- 무엇을 할 수 있나요?
- 블로그·워드·노션·메일에서 복사한 HTML이나 서식 있는 글에서 태그를 걷어내고 순수 텍스트만 남깁니다. <script>·<style>는 내용까지 지우고, 문단·목록·<br>은 줄바꿈으로 남겨 구조를 살립니다.
- '태그 제거'와 '엔티티 디코드'는 어떻게 다른가요?
- 태그 제거는 <p>·<a> 같은 꺾쇠 태그를 없애는 것이고, 엔티티 디코드는 &·<·' 처럼 문자로 표현된 코드를 실제 문자(& < ')로 되돌리는 것입니다. 이 도구는 태그를 먼저 지운 뒤 엔티티를 풉니다 — 순서를 바꾸면 <script>가 진짜 태그로 되살아나 엉뚱하게 지워집니다.
- <script> 안의 자바스크립트 코드는요?
- 여는 태그부터 닫는 태그까지 내용을 통째로 지웁니다. <style> 안의 CSS도 마찬가지입니다. 태그만 지우고 내용을 남기면 alert('x')나 .box{color:red} 같은 코드가 본문에 섞여 나오기 때문입니다.
- 문단이 다 붙어서 한 덩어리가 돼요.
- '줄바꿈 유지'를 켜 두면 <p>·<div>·<li>·<br> 같은 블록 요소가 줄바꿈으로 바뀌어 문단·목록이 줄 단위로 남습니다. 끄면 모두 한 줄로 이어 붙입니다. 인라인 태그(<b>·<a>)는 어느 쪽이든 줄을 나누지 않습니다.
- 'a < b' 같은 부등호가 사라지지 않나요?
- 사라지지 않습니다. 이 도구는 < 뒤에 태그 이름(글자)이나 /·! 가 오는 것만 태그로 봅니다. 그래서 '3 < 5', 'a < b'처럼 뒤에 공백·숫자가 오는 부등호는 그대로 둡니다. 다만 이 규칙 때문에 완전한 HTML 파서는 아닙니다(아래 참고).
- 보안을 위해 사용자 입력을 이걸로 걸러도 되나요?
- 아닙니다. 이 도구는 눈으로 읽을 텍스트를 뽑는 용도이지, XSS를 막는 sanitizer가 아닙니다. 악의적으로 꼬아 만든 입력은 정규식 기반 제거를 우회할 수 있습니다. 보안 목적이라면 DOMPurify 같은 전용 라이브러리를 서버/클라이언트에서 쓰세요.
정리 · 편집 도구 더 보기
중복 줄 제거 · 정렬겹치는 줄을 지우고 가나다·길이·역순으로 정렬합니다공백 · 줄바꿈 정리연속 공백·빈 줄·앞뒤 여백을 한 번에 정돈합니다찾기 · 바꾸기여러 줄에서 문자열·패턴을 한 번에 치환합니다텍스트 추출뒤섞인 글에서 원하는 조각만 뽑아 정리합니다정규식 테스터패턴이 무엇을 잡는지 매치·캡처 그룹으로 확인합니다단어 빈도 분석어떤 단어가 몇 번 나오는지 빈도순으로 셉니다줄 번호 · 접두사여러 줄에 번호·접두사·접미사를 한 번에 붙입니다개인정보 마스킹주민번호·전화·이메일·카드번호를 별표로 가립니다구분자 변환여러 줄 목록을 한 줄로 잇거나, 한 줄을 여러 줄로