Markdown → HTML
실시간 미리보기 + 복사용 HTML. 안전하게 정화.

마크다운을 HTML로 변환할 때 챙길 것 (2026)

마크다운을 HTML로 바꿀 때 표 변환부터 미리보기 정화와 raw 소스의 차이, 줄바꿈 함정까지 정리합니다.

코랄빛 배경 위에 'Markdown → HTML'이라는 큰 글자와 표 변환·정화·줄바꿈·소스 복사 카드가 놓인 개발자용 표지 이미지.

README는 마크다운으로 잘 써놨는데, 이걸 회사 CMS나 이메일에 넣으려니 HTML이 필요합니다. 변환기에 붙여넣으면 끝일 것 같지만, 표가 깨지거나 줄이 엉뚱하게 붙고, 가끔은 남의 마크다운을 변환해 그대로 올렸다가 보안 사고가 납니다. 변환할 때 실제로 무엇을 챙겨야 하는지 정리합니다.

마크다운이 HTML로 어떻게 바뀌나

기본 문법이야 #이 제목, *가 강조로 바뀌는 것은 익숙합니다. 까다로운 건 표나 취소선 같은 확장 문법입니다.

PiPi Worlds 마크다운 변환 도구는 GitHub 스타일 마크다운(GFM)을 따릅니다. 표를 넣으면 <table>, <thead>, <td>로 펼쳐지고, ~~취소선~~<del>old</del>이 됩니다. 자동 링크도 지원합니다. CommonMark가 정의한 표준 마크다운에 GFM 확장을 더한 형태라, 깃허브에서 보던 그 결과를 그대로 복사해 쓸 수 있습니다.

미리보기는 정화되고, 복사 소스는 원본이다

여기서 가장 중요한 구분이 나옵니다. 화면에 보이는 미리보기와 복사 버튼이 주는 HTML 소스는 다릅니다.

미리보기는 페이지에 반영되기 전에 DOMPurify로 정화됩니다. 그래서 마크다운에 <script>onerror 같은 위험 요소가 숨어 있어도 미리보기에서는 실행되지 않습니다. 반면 복사용 HTML 소스는 가공 없는 변환 결과입니다. 예를 들어 Hi <img src=x onerror="alert(1)"> <script>alert(2)</script>를 변환하면, 소스에는 그 onerror<script>가 그대로 남아 있습니다. 이 차이를 모르면 위험합니다.

그래서 어디서 한 번 더 정화해야 하나

판단 기준은 단순합니다. 마크다운의 출처를 신뢰할 수 있느냐입니다.

내가 쓴 README나 문서를 변환하는 거라면 복사한 소스를 그대로 써도 됩니다. 하지만 사용자가 입력한 마크다운(댓글, 게시글 등)을 변환해 웹에 표시한다면, 복사한 raw HTML을 그대로 올리는 순간 XSS(교차 사이트 스크립팅)의 통로가 됩니다. <script>만 막아서는 부족하고 onerror 같은 이벤트 속성도 막아야 합니다. 신뢰할 수 없는 입력은 반드시 서버에서 다시 정화하세요.

출처복사 소스 그대로 사용
내가 쓴 문서가능
사용자 입력(댓글 등)서버에서 재정화 필요

줄바꿈 한 번이 줄을 안 바꾸는 이유

자잘하지만 자주 당황하는 지점입니다. 마크다운에서 엔터를 한 번 쳤는데 HTML에서 줄이 안 바뀝니다.

표준 마크다운은 줄바꿈 한 번을 부드러운 줄바꿈(soft wrap)으로 봅니다. 줄1줄2를 엔터 하나로 나눠도 같은 <p> 문단 안에 이어집니다. 문단을 진짜로 나누려면 사이에 빈 줄을 넣어야 합니다. 한 문단 안에서 줄만 강제로 바꾸려면 줄 끝에 공백 두 칸을 두면 됩니다. 메일이나 CMS에서 줄 간격이 의도와 다르게 나온다면 대개 이 규칙 때문입니다.

그 마크다운, 어디서 변환하고 있나

마지막은 변환 장소 이야기입니다. 초안, 회의록, 비공개 명세를 HTML로 바꿀 때 그 텍스트가 어디론가 전송되는 도구라면, 공개 전의 내용이 외부 서버를 거치게 됩니다.

PiPi Worlds 마크다운 변환 도구는 변환이 전부 브라우저 안에서 실행됩니다. 입력은 전송되지 않으므로 초안과 비공개 메모가 내 기기에만 남습니다. 실시간 미리보기로 결과를 확인하고, 정화 여부를 의식하며 소스를 복사하세요. HTML 안에 base64 데이터가 보이면 Base64 도구로, JSON 조각이 섞여 있으면 JSON 포맷터로 이어서 확인하면 됩니다.

자주 묻는 질문

마크다운의 표나 취소선도 HTML로 변환되나요?
네. GitHub 스타일 마크다운(GFM)을 따르므로 표는 `<table>`로, `~~취소선~~`은 `<del>`로 변환됩니다. 자동 링크도 지원합니다. CMS나 이메일 템플릿에 붙일 깔끔한 마크업을 그대로 복사할 수 있습니다.
미리보기가 안전하다는 건 무슨 뜻인가요?
렌더링된 미리보기는 화면에 반영되기 전에 DOMPurify로 정화(sanitize)됩니다. 그래서 마크다운에 숨은 `<script>`나 `onerror` 속성이 미리보기에서 실행되지 않습니다. 다만 복사용 HTML 소스는 가공 없는 원본이므로, 신뢰할 수 없는 입력이라면 본인 서버에서 한 번 더 정화해야 합니다.
줄바꿈 한 번이 왜 줄을 안 바꾸나요?
표준 마크다운에서 줄바꿈 한 번은 부드러운 줄바꿈(soft wrap)이라 같은 문단으로 이어집니다. 문단을 나누려면 빈 줄을 넣고, 강제로 줄을 바꾸려면 줄 끝에 공백 두 칸을 두거나 빈 줄로 분리하세요.
마크다운 안에 raw HTML을 넣어도 되나요?
네. 복사용 소스에는 그 HTML이 그대로 통과합니다. 미리보기에서는 정화되어 위험한 태그가 제거되지만, 소스 자체는 원본이라 신뢰할 수 없는 HTML을 그대로 게시하면 위험할 수 있습니다.
입력한 마크다운이 서버로 전송되나요?
아니요. PiPi Worlds 마크다운 변환은 전부 브라우저 안에서 실행되어 초안이나 비공개 메모가 내 기기에만 남습니다. 입력은 업로드되거나 저장되지 않습니다.

Sources

PiFl Labs 콘텐츠팀이 공개 출처를 토대로 작성하고, 발행 전 사내 검수를 거칩니다.

최종 검토:

도구로 돌아가기 →