마크다운 미리보기

왼쪽에 마크다운을 입력하면 오른쪽에 렌더링 결과를 바로 보여주고, 변환된 HTML 소스를 복사할 수 있습니다. 모든 처리는 브라우저 안에서만 이루어집니다.

글자수: 0줄 수: 0제목: 0링크: 0차단된 주소: 0

마크다운이란?

마크다운(Markdown)은 2004년 존 그루버(John Gruber)가 애런 스워츠 등과 함께 만든, 일반 텍스트에 간단한 기호를 붙여 서식을 표현하는 방식입니다. 「# 제목」이라고 쓰면 제목, 「**굵게**」라고 쓰면 굵은 글씨가 됩니다. 변환하지 않은 원문도 읽기 쉽다는 것이 설계 목표였고, 그래서 개발자 문서(README), 블로그, 노트 앱, 위키, 채팅 도구에서 널리 쓰입니다. 편집기 없이 키보드만으로 쓸 수 있고, 텍스트 파일이라 버전 관리와 비교가 쉽다는 점이 장점입니다.

이 미리보기가 지원하는 문법

아래 표는 이 도구가 변환하는 문법입니다. 오른쪽 입력창에 그대로 붙여 넣어 결과를 확인해 보세요.

문법입력 예HTML비고
제목# 제목1 ~ ###### 제목6h1~h6# 뒤에 공백 필요. 밑줄형(=== / ---)도 지원
굵게·기울임**굵게** *기울임*strong, em밑줄 _기울임_ 도 지원(단어 중간 밑줄은 무시)
취소선~~취소~~delGFM 확장
목록- 항목 / 1. 항목ul, ol2칸 이상 들여쓰면 중첩 목록
체크리스트- [x] 완료 / - [ ] 미완료input[type=checkbox]GFM 확장, 미리보기에서는 비활성
표| 열1 | 열2 | + |:--|--:|tableGFM 확장, 콜론으로 정렬 지정
인용> 인용문blockquote안에 목록·제목 중첩 가능
코드`코드` / ```언어 ... ```code, pre~~~ 펜스도 지원, 내용은 변환 없이 표시
링크·이미지[글](주소) / ![설명](주소)a, imghttp, https, mailto, tel, 상대경로만 허용
자동 링크https://example.com / <https://...>aGFM 확장
구분선--- / *** / ___hr문단 바로 아래의 ---는 제목 밑줄로 해석

CommonMark, GFM, 그리고 원조 마크다운

원조 마크다운 설명서는 모호한 부분이 많아 구현마다 결과가 달랐습니다. 이를 해결하려고 만든 표준 명세가 CommonMark이고, 이 글을 쓰는 시점의 최신 버전은 0.31.2(2024년 1월 28일)입니다. GitHub가 쓰는 GFM(GitHub Flavored Markdown)은 CommonMark를 기반으로 확장 문법을 얹은 것으로, 대표적인 확장은 다음과 같습니다.

이 도구는 위 확장 중 표·체크리스트·취소선·자동 링크를 지원합니다. 대신 각주, 정의 목록, 수식, 다이어그램(Mermaid), 참조 링크([글][1]) 같은 문법은 렌더러마다 지원이 다른 영역이라 변환하지 않습니다.

렌더러마다 결과가 달라지는 지점

같은 마크다운이 GitHub, 블로그 플랫폼, 노트 앱에서 다르게 보이는 경우는 대개 다음 중 하나입니다.

검산 예시

예시 1. 정렬이 있는 표: 아래 입력은 머리글 2열, 구분선 행 :--(왼쪽)과 --:(오른쪽), 데이터 2행입니다. 변환 결과의 th와 td에 열마다 text-align이 붙고, 데이터 행은 2개가 됩니다.

| 이름 | 점수 |
|:--|--:|
| 가 | 90 |
| 나 | 85 |
<table>
<thead><tr><th style="text-align:left">이름</th><th style="text-align:right">점수</th></tr></thead>
<tbody>
<tr><td style="text-align:left">가</td><td style="text-align:right">90</td></tr>
<tr><td style="text-align:left">나</td><td style="text-align:right">85</td></tr>
</tbody></table>

예시 2. 중첩 목록: 「사과」「배」를 2칸 들여쓰면 「과일」 항목 안의 하위 ul이 됩니다. 최상위 항목은 2개, 하위 항목은 2개입니다.

- 과일
  - 사과
  - 배
- 채소
<ul>
<li>과일
<ul>
<li>사과</li>
<li>배</li>
</ul></li>
<li>채소</li>
</ul>

마크다운과 보안: 변환된 HTML을 믿으면 안 되는 이유

마크다운은 설계상 원문에 HTML을 섞어 쓸 수 있습니다. 그래서 사용자가 입력한 마크다운을 그대로 HTML로 변환해 페이지에 넣는 것은 XSS(교차 사이트 스크립팅) 취약점이 되기 쉽습니다. 전형적인 공격은 세 가지입니다.

이 도구는 세 가지에 모두 대응합니다. 입력의 <, >, 따옴표를 먼저 문자로 바꿔 원문 HTML을 실행하지 않고, 링크·이미지 주소는 http, https, mailto, tel, 상대 경로, 앵커만 허용하며 나머지는 #로 대체합니다(제어 문자를 섞은 우회도 제거). 외부 링크에는 rel="noopener noreferrer nofollow"를 붙입니다. 「보안 테스트 샘플」 버튼으로 직접 확인할 수 있습니다.

다만 이 변환기는 학습·미리보기용입니다. 직접 만든 정규식 변환기는 예상하지 못한 조합에서 뚫릴 수 있으므로, 실제 서비스에서 사용자 입력을 렌더링한다면 검증된 마크다운 라이브러리와 HTML 살균(sanitize) 라이브러리를 함께 쓰고, 가능하면 콘텐츠 보안 정책(CSP)도 설정하세요. 복사한 HTML을 다른 사이트의 편집기에 붙여 넣을 때도 출처가 불분명한 마크다운은 먼저 소스를 확인하는 습관이 필요합니다.

흔한 실수

한계와 이 도구를 쓰면 안 되는 경우

이 도구는 핵심 문법과 GFM 일부를 다루는 간이 변환기이며 CommonMark 전체 명세를 통과하지 않습니다. 참조 링크, 각주, 정의 목록, 수식, 원문 HTML 블록, 들여쓰기 코드 블록, 복잡한 목록 안 코드 블록은 처리하지 않거나 결과가 다를 수 있습니다. 이미지는 외부 주소를 불러오면 해당 서버에 접속 기록이 남을 수 있습니다. 최종 게시 전에는 사용하는 플랫폼(GitHub, 블로그, 노트 앱)의 미리보기에서 한 번 더 확인하세요. 비밀번호·개인정보 같은 민감한 내용은 어떤 온라인 도구에도 입력하지 않는 것이 원칙입니다(이 도구는 서버로 전송하지 않지만 습관의 문제입니다).

결과를 활용하는 방법

  1. 문서를 왼쪽에 작성하며 제목 계층(h1 → h2 → h3)이 건너뛰지 않았는지 확인합니다.
  2. 「HTML 소스」 탭에서 변환 결과를 보고 필요하면 「HTML 복사」로 가져갑니다. 다른 사이트에 게시할 때는 그 플랫폼의 살균 규칙이 적용된다는 점을 알아 두세요.
  3. README나 위키에 올릴 문서는 대상 플랫폼의 렌더러에서 표, 체크리스트, 줄바꿈이 같은지 최종 확인합니다.
  4. 분량 제한이 있는 글은 글자수 & 단어수 세기로 길이를 점검합니다.
  5. HTML만 필요하고 태그를 제거하고 싶다면 HTML 태그 제거 도구, 두 버전의 차이를 보려면 텍스트 비교 도구, 목업용 본문이 필요하면 더미 텍스트 생성기를 이용하세요.

자주 묻는 질문

변환된 HTML을 복사할 수 있나요?

결과 영역의 「HTML 소스」 탭에서 변환된 HTML을 확인하고 「HTML 복사」 버튼으로 복사할 수 있습니다. 복사한 HTML을 서비스에 넣을 때는 사용 플랫폼의 살균 기능을 확인하세요.

표(table)는 어떻게 만드나요?

첫 줄에 머리글을 | 열1 | 열2 | 형식으로 쓰고, 둘째 줄에 |--|--| 구분선을 넣은 뒤 데이터 행을 이어 씁니다. 구분선에 :--(왼쪽), :-:(가운데), --:(오른쪽)를 쓰면 정렬이 지정됩니다. 열 수가 서로 같아야 합니다.

문서 안에 HTML 태그를 직접 써도 되나요?

이 도구에서는 보안상 HTML 태그를 변환하지 않고 글자 그대로 화면에 표시합니다. GitHub 같은 일부 렌더러는 허용된 태그만 남기고 나머지는 걸러냅니다. 플랫폼마다 규칙이 다르므로 해당 플랫폼에서 직접 확인하세요.

줄바꿈이 적용되지 않고 한 줄로 이어져요.

CommonMark에서는 줄 하나만 바꾸면 같은 문단으로 이어집니다. 줄 끝에 공백 2칸을 넣거나, 빈 줄로 문단을 나누세요. 또는 위쪽의 「줄바꿈을 그대로 <br>로」 옵션을 켜면 입력한 줄바꿈이 그대로 보입니다.

입력한 내용이 서버로 전송되나요?

아닙니다. 변환은 모두 브라우저 안의 스크립트가 처리하며 입력 내용을 서버로 보내지 않습니다. 단, 마크다운에 외부 이미지 주소를 넣으면 미리보기에서 그 이미지를 불러오기 위해 해당 서버에 접속합니다.

마크다운과 HTML 중 무엇을 써야 하나요?

글 위주의 문서(README, 블로그, 노트)는 마크다운이 간편합니다. 복잡한 레이아웃, 색상, 폼처럼 세밀한 제어가 필요하면 HTML이 적합합니다. 마크다운으로 쓰다가 필요한 일부만 HTML을 섞는 방식도 많이 쓰이지만, 이는 렌더러가 허용하는 경우에 한합니다.