마크다운 HTML 변환기 (미리보기)

마크다운을 HTML로 바꾸고 미리보기를 보여 주며, 표·코드·링크 문법을 지원합니다.

왼쪽 칸에 마크다운을 붙여 넣으면 바로 변환됩니다.

미리보기

사용 방법

  1. 왼쪽 칸에 마크다운을 붙여 넣으면 버튼을 누르지 않아도 바로 미리보기와 HTML 코드가 만들어집니다.
  2. 오른쪽 미리보기는 실제로 브라우저가 그리는 모습이고, 그 아래 HTML 코드 칸에는 붙여 쓸 수 있는 결과가 들어갑니다.
  3. 제목을 하나라도 쓰면 목차가 자동으로 생기고, 각 제목에는 앵커 주소가 붙습니다.
  4. 글자 수, 공백을 뺀 글자 수, 낱말 수, 줄 수, 예상 읽는 시간이 결과 맨 위에 함께 나옵니다.
  5. 변환할 수 없는 부분이나 막은 주소가 있으면 결과 아래에 알림으로 알려 줍니다.

입력한 글은 서버로 전송되지 않습니다. 변환, 미리보기, 글자 수 계산은 모두 이 페이지에서 내려받은 자바스크립트가 브라우저 안에서 처리하며, 어디에도 저장하거나 올려보내지 않습니다. 회사 문서나 공개 전 원고도 안심하고 붙여 넣을 수 있습니다.

지원하는 문법

아래 표는 이 페이지를 만들 때 실제 변환기를 돌려 얻은 결과입니다. 왼쪽처럼 쓰면 오른쪽 HTML이 나옵니다.

문법쓰는 법만들어지는 HTML
제목 (1~6단계)## 소제목<h2 id="md-소제목">소제목</h2>
굵게**굵게**<p><strong>굵게</strong></p>
기울임*기울임*<p><em>기울임</em></p>
굵게+기울임***둘 다***<p><strong><em>둘 다</em></strong></p>
취소선~~취소선~~<p><del>취소선</del></p>
인라인 코드`코드`<p><code>코드</code></p>
링크[이름](https://example.com)<p><a href="https://example.com" rel="nofollow noopener noreferrer" target="_blank">이름</a></p>
이미지![대체글](/cat.png)<p><img src="/cat.png" alt="대체글" loading="lazy" /></p>
인용> 인용문<blockquote> <p>인용문</p> </blockquote>
순서 없는 목록- 항목<ul> <li>항목</li> </ul>
순서 있는 목록1. 항목<ol> <li>항목</li> </ol>
수평선---<hr />
줄바꿈 (공백 두 칸)첫 줄 둘째 줄<p>첫 줄<br /> 둘째 줄</p>

제목은 # 한 개부터 여섯 개까지이고, 기호 뒤에 공백이 있어야 제목이 됩니다. 그래서 해시태그처럼 붙여 쓴 #할인은 제목이 되지 않고 그대로 글자로 남습니다. 목록은 두 칸 이상 들여쓰면 중첩되고, 목록 안에 코드 블록이나 인용을 넣을 수도 있습니다. 목록 표시가 점에서 번호로 바뀌면 새 목록이 시작됩니다.

표와 코드 블록

표는 머리글 줄과 하이픈 구분줄로 만듭니다. 구분줄에 콜론을 넣어 칸마다 정렬을 정할 수 있습니다. 왼쪽 정렬은 :---, 가운데는 :---:, 오른쪽은 ---:입니다.

입력결과 HTML
| 이름 | 수량 | 금액 |
| :--- | :---: | ---: |
| 연필 | 2 | 1,200 |
<div class="table-wrap">
<table>
<thead>
<tr><th style="text-align: left">이름</th><th style="text-align: center">수량</th><th style="text-align: right">금액</th></tr>
</thead>
<tbody>
<tr><td style="text-align: left">연필</td><td style="text-align: center">2</td><td style="text-align: right">1,200</td></tr>
</tbody>
</table>
</div>
```python
print("안녕")
```
<pre data-lang="python"><code class="language-python">print(&quot;안녕&quot;)</code></pre>

코드 블록은 백틱 세 개로 여닫습니다. 여는 줄에 언어 이름을 적으면 결과에 language-로 시작하는 클래스가 붙어, 색을 칠해 주는 도구와 그대로 이어 쓸 수 있습니다. 코드 블록과 인라인 코드 안에서는 별표나 밑줄, 대괄호가 문법으로 해석되지 않고 적은 그대로 남습니다. 닫는 줄을 빠뜨리면 문서 끝까지 코드로 보고 그 사실을 알려 줍니다.

원시 HTML을 왜 막는가

미리보기는 남이 쓴 글을 화면에 그리는 자리입니다. 마크다운 안의 HTML 태그를 그대로 그리면 스크립트가 이 페이지에서 실행될 수 있고, 그 스크립트는 화면을 바꾸거나 다른 입력칸의 내용을 읽어 밖으로 보낼 수도 있습니다. 그래서 이 도구는 기본값으로 꺾쇠, 따옴표, 앰퍼샌드를 모두 이스케이프해 태그를 글자로 바꿉니다. 링크와 이미지 주소도 따로 검사해서, 스크립트를 실행하는 스킴과 SVG data URL은 아예 주소로 쓰지 않습니다. 아래는 그런 입력이 실제로 어떻게 바뀌는지 빌드할 때 변환기를 돌려 얻은 결과입니다.

입력이 도구의 결과
<script>alert(1)</script><p>&lt;script&gt;alert(1)&lt;/script&gt;</p>
<img src=x onerror=alert(1)><p>&lt;img src=x onerror=alert(1)&gt;</p>
[클릭](javascript:alert(1))<p>클릭</p>
[클릭](&#106;avascript:alert(1))<p>클릭</p>
![그림](data:image/svg+xml;base64,PHN2Zy8+)<p>그림</p>

막는 방법을 하나 더 적어 두면, 주소는 겉모양만 보지 않습니다. 대소문자를 섞은 것, 앞뒤에 공백이나 보이지 않는 글자를 끼운 것, 숫자 엔티티로 감춘 것을 모두 같은 주소로 보고 판단합니다. 허용하는 스킴은 http, https, mailto, tel, sms, ftp와 스킴이 없는 상대 주소뿐입니다.

목차와 글자 수

제목마다 앵커 id를 만들고 그것으로 목차를 엮습니다. 한글 제목은 그대로 id가 되고, 같은 제목이 여러 번 나오면 뒤에 번호를 붙여 서로 겹치지 않게 합니다. 예상 읽는 시간은 한글과 한자는 분당 500자, 그 밖의 낱말은 분당 220개로 잡아 더합니다. 예시 넣기로 들어가는 문서는 문법 기호를 뺀 339자, 10덩어리여서 읽는 시간이 1분 미만으로 나옵니다.

알아 둘 점

이 도구는 CommonMark와 GitHub 표 문법을 기준으로 삼되, 미리보기에서 안전한 쪽으로 다르게 처리하는 부분이 있습니다. 깃허브나 다른 편집기와 결과가 조금 다를 수 있으니, 최종 결과는 실제로 붙여 쓸 곳에서 한 번 더 확인해 주세요.

자주 묻는 질문

마크다운 안에 쓴 HTML 태그가 왜 그대로 글자로 보이나요?

미리보기가 남이 준 태그를 그대로 그리면 스크립트가 실행될 수 있어, 이 도구는 원시 HTML을 기본적으로 이스케이프해 글자로 보여 줍니다. 굵게·기울임처럼 속성이 없는 서식 태그만 필요하다면 원시 HTML 허용을 켜면 되고, 그때도 script·iframe·svg나 속성이 붙은 태그는 계속 글자로 남습니다.

줄을 바꿨는데 미리보기에서 한 줄로 붙는 경우가 있습니다. 왜 그런가요?

표준 마크다운은 한 번 줄을 바꾼 것을 같은 문단으로 봅니다. 이 도구는 붙여 넣은 글이 보이는 대로 나오도록 한 줄 바꿈도 줄바꿈 태그로 처리하는 설정을 기본으로 켜 두었고, 이 설정을 끄면 줄 끝에 공백 두 칸이나 백슬래시를 넣은 곳만 줄이 바뀝니다.

표 문법을 썼는데 표로 바뀌지 않는 이유는 무엇인가요?

표는 머리글 줄 바로 다음에 하이픈으로 된 구분줄이 있어야 만들어집니다. 구분줄이 없거나 머리글과 구분줄 사이에 빈 줄이 있으면 그냥 글로 처리됩니다. 칸 수가 줄마다 다르면 머리글 칸 수에 맞춰 부족한 칸은 비우고 남는 칸은 버린 뒤 그 사실을 알림으로 표시합니다.

이미지에 data URL을 넣었는데 그림이 안 나옵니다. 왜인가요?

PNG, JPEG, GIF, WebP, AVIF, BMP 형식의 base64 data URL만 허용하고, SVG data URL은 일부러 막았습니다. SVG 파일 안에는 스크립트와 이벤트 속성을 넣을 수 있어 이미지처럼 보이는 실행 파일이 될 수 있기 때문입니다. 막힌 주소는 그림 대신 대체글만 나오고 알림이 뜹니다.

작성 중인 마크다운 문서가 서버로 전송되나요?

아니요. 변환과 미리보기, 글자 수 계산까지 모두 이 페이지 안의 자바스크립트가 처리하며 입력한 글은 어디에도 전송되거나 저장되지 않습니다. 사내 회의록이나 공개 전인 원고를 붙여 넣어도 글이 브라우저 밖으로 나가지 않습니다.

이 도구가 도움이 되었다면 공유해 주세요

계산 근거

이 계산기가 쓰는 세율·요율·기준의 출처입니다. 숫자가 맞는지 직접 확인해 보세요.

계산 결과가 이상한가요? 알려 주세요.

계산 결과는 참고용이며 법적 효력이 없습니다.

다른 도구