Back to rankings

joemccann/dillinger

TypeScriptdillinger.io

The last Markdown editor, ever.

markdowneditorideblogbloggingwritingnodejsnodejavascriptmd
Star Growth
Stars
8.3k
Forks
1.2k
Weekly Growth
Issues
136
5k
Nov 2011Sep 2016Aug 2021Jul 2026
Artifactsnpmnpm install dillinger
README

Dillinger Banner

Dillinger

The last Markdown editor you'll ever need.

A modern, cloud-native Markdown editor built on Next.js — designed for speed, focus, and seamless sync.

Get Started · Features · Integrations · Deploy


✨ Why Dillinger

Most markdown editors are either:

  • bloated
  • offline-only
  • or lack serious developer ergonomics

Dillinger fixes that.

It combines:

  • ⚡ VS Code-grade editing
  • ☁️ Native cloud storage
  • 🧘 Distraction-free UX
  • 🔄 Real-time rendering

⚡ Quick Start

npm install
npm run dev

Open → http://localhost:3000


🧱 Requirements

  • Node.js 18+
  • npm / yarn / pnpm / bun

🚀 Features

Editor Experience

  • Monaco Editor (VS Code core)
  • Syntax highlighting for Markdown
  • Image paste support

Live Workflow

  • Real-time preview
  • Scroll sync
  • Instant feedback loop

Focus Mode

  • Zen Mode (Cmd/Ctrl + Shift + Z)
  • Fullscreen, distraction-free writing

File Handling

  • Drag & drop .md, .txt, .markdown
  • Auto-save (local persistence)

Export

  • Markdown
  • HTML
  • PDF

Cloud Integrations

  • GitHub
  • Google Drive
  • Dropbox
  • OneDrive
  • Bitbucket

🔐 Environment Setup

Create:

.env.local

Template

# Google Drive
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI=http://localhost:3000/api/google-drive/callback

# OneDrive
ONEDRIVE_CLIENT_ID=
ONEDRIVE_CLIENT_SECRET=
ONEDRIVE_REDIRECT_URI=http://localhost:3000/api/onedrive/callback

# Bitbucket
BITBUCKET_CLIENT_ID=
BITBUCKET_CLIENT_SECRET=
BITBUCKET_REDIRECT_URI=http://localhost:3000/api/bitbucket/callback

# GitHub
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_REDIRECT_URI=http://localhost:3000/api/github/callback

# Dropbox
DROPBOX_CLIENT_ID=
DROPBOX_CLIENT_SECRET=
DROPBOX_REDIRECT_URI=http://localhost:3000/api/dropbox/callback

☁️ Cloud Integrations

Each provider requires OAuth configuration.

Google Drive

  • Enable Drive API
  • Create OAuth credentials
  • Redirect:
/api/google-drive/callback

OneDrive

  • Azure App Registration

  • Permissions:

    • Files.ReadWrite
    • User.Read

Bitbucket

  • OAuth consumer
  • Repo read/write access

GitHub

  • OAuth App
  • Callback:
/api/github/callback

Dropbox

  • Scoped app

  • Enable:

    • files.metadata.read
    • files.content.write

🚢 Deployment

Update all OAuth callbacks:

https://yourdomain.com/api/{provider}/callback

Then:

npm run build
npm start

🏗 Tech Stack

Layer Technology
Framework Next.js 14
Editor Monaco
Styling Tailwind CSS
State Zustand
Icons Lucide

📦 Scripts

npm run dev              # Start dev server
npm run build            # Production build
npm start                # Start production server
npm run lint             # ESLint
npm run test             # Unit + E2E tests
npm run test:unit        # Vitest unit/integration tests
npm run test:watch       # Vitest watch mode
npm run test:e2e         # Playwright E2E tests
npm run test:e2e:headed  # E2E in visible browser
npm run verify           # Lint + typecheck + all tests

🧪 Testing

294 unit/integration tests (Vitest) + 39 E2E tests (Playwright) with 98% code coverage.

npm run test:unit                # Run all unit tests
npx vitest run --coverage        # With coverage report
npm run test:e2e:headed          # E2E in visible browser

Tests live in tests/ organized by type: lib/, store/, hooks/, components/, routes/, and e2e/.


🧭 Philosophy

Dillinger is built around a simple idea:

Writing tools should disappear.

No friction. No clutter. Just flow.


🤝 Contributing

PRs welcome. Open an issue first for major changes.


📄 License

MIT

Related repositories
microsoft/markitdown

Python tool for converting files and office documents to Markdown.

PythonPyPIMIT Licenselangchainopenai
168k12.1k
firecrawl/firecrawl

The API to search, scrape, and interact with the web at scale. 🔥

TypeScriptnpmGNU Affero General Public License v3.0aicrawler
firecrawl.dev
154.1k8.8k
toeverything/AFFiNE

There can be more than Notion and Miro. AFFiNE(pronounced [ə‘fain]) is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use.

TypeScriptnpmOthereditorcrdt
affine.pro
70.7k5.1k
docling-project/docling

Get your documents ready for gen AI

PythonPyPIMIT Licenseaiconvert
docling-project.github.io/docling
63.6k4.5k
usememos/memos

Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.

GoGo ModulesMIT Licensereactgo
usememos.com
61.7k4.6k
marktext/marktext

📝A simple and elegant markdown editor, available for Linux, macOS and Windows.

TypeScriptnpmMIT Licensemacostypewriter-mode
marktext.me
59k4.4k
Textualize/rich

Rich is a Python library for rich text and beautiful formatting in the terminal.

PythonPyPIMIT Licensepythonpython3
rich.readthedocs.io/en/latest/
56.9k2.3k
prettier/prettier

Prettier is an opinionated code formatter.

JavaScriptnpmMIT Licenseformatterprinter
prettier.io
52.1k4.9k
jekyll/jekyll

:globe_with_meridians: Jekyll is a blog-aware static site generator in Ruby

RubyRubyGemsMIT Licenserubyjekyll
jekyllrb.com
51.6k10.3k
slidevjs/slidev

Presentation Slides for Developers

TypeScriptnpmMIT Licenseslidespresentation
sli.dev
47.8k2.1k
GitHubDaily/GitHubDaily

坚持分享 GitHub 上高质量、有趣实用的开源技术教程、开发者工具、编程网站、技术资讯。A list cool, interesting projects of GitHub.

githubopen-source
githubdaily.com
47.1k4.7k
jgm/pandoc

Universal markup converter

HaskellGNU General Public License v2.0pandochaskell
pandoc.org
45.5k3.9k