npm Markdown 에디터 라이브러리 추천 - 용도별 정리

English (N/A)

마크다운 에디터를 프로젝트에 넣으려고 npm 검색하면 선택지가 너무 많다. Toast UI, Tiptap, CodeMirror, Monaco... 다 써봤는데 용도가 다르다.

용도별로 정리해봤다.

WYSIWYG 에디터 (추천)

Toast UI Editor

가장 먼저 추천한다. 한국 회사(NHN)가 만들어서 한글 지원이 완벽하다.

npm install @toast-ui/react-editor

장점:

  • WYSIWYG 모드와 마크다운 모드 전환 가능
  • 플러그인 풍부 (차트, 코드 하이라이팅, 색상 선택)
  • 이미지 업로드 훅 제공
  • 무료
import '@toast-ui/editor/dist/toastui-editor.css';
import { Editor } from '@toast-ui/react-editor';

<Editor
  initialValue="# Hello"
  previewStyle="vertical"
  height="600px"
  initialEditType="markdown"
  useCommandShortcut={true}
/>

블로그 에디터, 게시판, 문서 관리 시스템 만들 때 바로 쓸 수 있다.

Tiptap

요즘 가장 핫한 에디터다. Notion 스타일 에디터 만들고 싶으면 이거.

npm install @tiptap/react @tiptap/starter-kit

장점:

  • Headless (UI를 완전히 내 맘대로)
  • Notion처럼 "/" 슬래시 커맨드 가능
  • Markdown 익스텐션 지원
  • 협업 기능 지원 (유료)
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'

const editor = useEditor({
  extensions: [StarterKit],
  content: '<p>Hello World!</p>',
})

<EditorContent editor={editor} />

커스터마이징이 필요하면 Tiptap이 최고다. 대신 직접 만들어야 할 게 많다.

MDXEditor

MDX 네이티브 지원이 필요하면 이거.

npm install @mdxeditor/editor

장점:

  • MDX 블로그에 최적화
  • WYSIWYG + 마크다운
  • React 컴포넌트를 마크다운에 넣을 수 있음
import { MDXEditor } from '@mdxeditor/editor'

<MDXEditor markdown="# Hello" />

Next.js + MDX 블로그 만들 때 좋다.


코드 에디터 스타일

CodeMirror 6

개발자 친화적인 에디터가 필요하면 이거.

npm install @uiw/react-codemirror

장점:

  • VSCode급 편집 기능
  • 마크다운 하이라이팅
  • 테마 풍부
  • 경량
import CodeMirror from '@uiw/react-codemirror';
import { markdown } from '@codemirror/lang-markdown';

<CodeMirror
  value="# Hello"
  height="400px"
  extensions={[markdown()]}
/>

개발자 도구, 코드 스니펫 공유 사이트 만들 때 쓴다.

Monaco Editor

VSCode 실제 에디터다. 기능은 최고지만 무겁다.

npm install @monaco-editor/react

장점:

  • VSCode와 똑같은 경험
  • TypeScript 지원
  • 강력한 IntelliSense

단점:

  • 번들 크기 큼 (주의!)
import Editor from '@monaco-editor/react';

<Editor
  height="90vh"
  defaultLanguage="markdown"
  defaultValue="# Hello"
/>

온라인 IDE, 코드 에디터 플랫폼 만들 때만 쓴다.


미리보기만 필요하면

react-markdown

에디터는 필요 없고 마크다운 렌더링만 하면 되는 경우.

npm install react-markdown

장점:

  • 가장 인기 있는 렌더러
  • 경량
  • 플러그인 (remark/rehype)
  • 보안 (XSS 방지)
import ReactMarkdown from 'react-markdown'

<ReactMarkdown>
  # Hello
  
  This is **bold**
</ReactMarkdown>

블로그 포스트 보여주기, README 렌더링 같은 용도.

marked

react-markdown보다 더 빠르고 가볍다.

npm install marked
import { marked } from 'marked';

const html = marked.parse('# Hello');
<div dangerouslySetInnerHTML={{ __html: html }} />

SSR, 빌드 타임에 변환할 때 좋다.


경량 옵션

SimpleMDE

"그냥 빠르게 마크다운 에디터 하나만 넣고 싶어" 할 때.

npm install react-simplemde-editor
import SimpleMDE from 'react-simplemde-editor';
import "easymde/dist/easymde.min.css";

<SimpleMDE value={value} onChange={setValue} />

초경량. GitHub 스타일. 바로 쓸 수 있다.


용도별 추천

블로그/문서 사이트:

에디터: Toast UI Editor
렌더러: react-markdown

Notion 클론:

에디터: Tiptap
렌더러: 내장

개발자 도구:

에디터: CodeMirror 6
렌더러: react-markdown

빠른 프로토타입:

에디터: SimpleMDE
렌더러: marked

MDX 블로그:

에디터: MDXEditor
렌더러: next-mdx-remote

실전 구현 예시

Toast UI Editor + react-markdown 조합:

'use client'

import { useState, useRef } from 'react'
import { Editor } from '@toast-ui/react-editor'
import ReactMarkdown from 'react-markdown'
import '@toast-ui/editor/dist/toastui-editor.css'

export default function MarkdownEditor() {
  const [markdown, setMarkdown] = useState('')
  const editorRef = useRef<Editor>(null)

  const handleChange = () => {
    const instance = editorRef.current?.getInstance()
    setMarkdown(instance?.getMarkdown() || '')
  }

  return (
    <div className="grid grid-cols-2 gap-4">
      <div>
        <h2>편집</h2>
        <Editor
          ref={editorRef}
          initialValue="# Hello"
          previewStyle="vertical"
          height="600px"
          onChange={handleChange}
        />
      </div>
      
      <div>
        <h2>미리보기</h2>
        <div className="prose">
          <ReactMarkdown>{markdown}</ReactMarkdown>
        </div>
      </div>
    </div>
  )
}

왼쪽 편집, 오른쪽 미리보기. 실시간 동기화.


최종 추천

1순위: Toast UI Editor

한글 지원 완벽하고, 기능 풍부하고, 무료다. 대부분 프로젝트에서 이거면 충분하다.

2순위: Tiptap

커스터마이징 많이 해야 하면 Tiptap. Notion 스타일 만들 수 있다.

3순위: CodeMirror 6

개발자 친화적인 UI 필요하면 CodeMirror.

렌더링만: react-markdown

에디터 없이 마크다운만 보여주면 되는 경우.


선택 기준

쉽고 빠르게: Toast UI Editor
완전한 커스터마이징: Tiptap
개발자 도구: CodeMirror 6
초경량: SimpleMDE
MDX 블로그: MDXEditor

처음 시작이면 Toast UI Editor부터 써보는 걸 추천한다. 설치하고 5분이면 작동한다.