최근 수정 시각 : 2026-11-11 07:26:41

GitHub Flavored Markdown


[[GitHub|
파일:GitHub 아이콘 화이트.svg파일:GitHub 로고 화이트.svg
]]
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#000,#000><colcolor=#fff,#fff> 관련 인물 톰 프레스턴 워너 · 필립 제퍼리 하이엣
서비스 저장소 · GitHub Pages · GitHub Action · GitHub Packages · Codespace(github.dev) · GitHub Wiki · GitHub Gist · Dependabot · GitHub Advisory Database · GitHub Copilot
클라이언트 GitHub CLI · GitHub Desktop · GitHub Mobile
오픈 소스 Electron(Atom) · Linguist · Semantic · Tree-sitter
관련 문서 사건 사고 · Octocat · GitHub Universe · GitHub Flavored Markdown · One Dark · npm
}}}}}}}}} ||
1. 개요2. 역사3. 고유 확장4. GFM이 아닌데 GitHub에서 지원되는 경우5. 위상6. 구현체7. 관련 문서

1. 개요

GitHub Flavored Markdown, GFM

https://github.github.com/gfm/

GitHub 등에서 사용되는 CommonMark의 확장 스펙으로, 기존의 CommonMark에 여러 반필수적인 유용한 기능과 문법을 추가한 것이 특징이며, 이로 인하여 사실상 표준 취급을 받는다.

2. 역사

3. 고유 확장

spec 기준, (extension)이라고 마킹된 부분을 보면 좋다. 기본적으로 다음 5가지 확장이 주를 이룬다.
  • 표 문법
  • task list 문법. 흔히 생각하는 체크박스를 말한다.
  • 취소선 문법
  • bare URL 인식. 즉, 기본 CommonMark 파서에서는 별도의 처리를 하지 않는 URL을 자동으로 링크로써 인식되도록 파싱한다.
  • tagfilter. 무제한적인 HTML 태그 사용을 못하도록 특정 태그의 경우 이스케이프 처리된 것으로 파싱하는 동작이다.

4. GFM이 아닌데 GitHub에서 지원되는 경우

사실 GitHub에서 쓰는 마크다운/렌더러 == GFM으로 생각하지만, 엄밀히는 GFM은 2019년에 머물러있는 단순한 언어 스펙이고, 현재 최신 GitHub에서 사용하는 마크다운 파서/렌더러 구현체는 GFM 스펙이 명시하는 것보다 좀더 많은 기능을 지원한다.

대표적으로 다음이 있다.
  • footnote: 정말 충격적이겠지만 표준 GFM 스펙에 포함되어있지는 않으며, 계보를 따져보면 PHP Markdown Extra 쪽 변종 문법이 발전한 것이다. 정작 cmark-gfm 구현에는 일단 구현이 되어 있는데도 GFM 스펙에는 반영하지 않았다.
  • GitHub Emojicode##: 흔히 :+1:PR에 달려있으면 매우 짜증난다 등을 특정 이모지로 렌더하는 레이어. GFM 마크다운 스펙에는 이런 레이어를 의도적으로 포함하지 않고 있다.#75
  • alert(callout): 2022년경에 해당 discussion에서 시연이 되었는데, 정작 당시엔 preview feature로 추가되어서 공식 문서화도 늦었고 어디서는 render되고 어디서는 render 안되는 등 혼란이 좀 있었다. 특히 이게 처음 추가됐을 땐 저장소 README나 GitHub Gist 쪽 렌더러에는 바로 적용이 안 되고 issue 쪽 렌더러에만 적용되었기 때문에... 요즘은 잘 지원된다. 참고로 GFM 스펙도 아니지만 이 문법은 유용하기 때문인지 상당수의 마크다운 에디터에서도 지원하는 편. 대표적으로 Obsidian이 있다.
  • 구문 강조: 렌더러 수준의 구현이다.
  • Mermaid 다이어그래밍: 렌더러 수준의 구현이다.
  • 수식 문법: ad hoc 파서 및 렌더러 수준의 구현이며, 현행 렌더러 기준 MathJax를 사용한다. 파싱은 살짝 독특한데, TeX 파싱 자체는 GFM 파싱 레이어 이후에 동작하기 때문에 TeX 문법을 마크다운에 입력하다 보면 $를 올바른 injection delimitor로 인식하지 못해서 _ 등 이것저것 깨지는 일이 다반사다. 그래서 인라인 수식 입력시 $`...`$와 같은 ad hoc한 문법을 지원한다.
  • permalink preview: ad hoc 파서 및 렌더러 수준 구현이다.

이 외에도, GitHub의 파서 구현체가 다르게 사용되는 경우, 특정 상황에서만 사용 가능한 문법이 있다.
  • 이슈, PR 등에서 쓰이는 파서만 지원하는 경우:
    • 헥스 코드 리터럴 문법 (`#ffffff`)
    • git hash autolink
    • issue/PR ref autolink
    • 사용자 멘션

5. 위상

사실상 표준에 가까운 확장으로, 취소선이나 URL 인식 등 거의 무의식적인 것부터 표나 체크박스처럼 자주 쓰이는 문법까지 CommonMark에 없는 반필수 커버리지를 담당하고 있다. 때문에 '마크다운을 지원한다' 라는 말을 자세히 살펴보면 대부분의 경우 CommonMark가 아닌 사실상 GitHub Flavored Markdown을 지원하는 것을 의미할 정도.

6. 구현체

7. 관련 문서