tiptap-markdown

A Markdown extension bringing bidirectional Markdown input/output to the Tiptap rich-text editor

Library
npm
v0.9.0
526 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
40 /100 Fair
Development Activity 0
Maintenance 20
Community 52
Maturity 60
Momentum 28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
66 /100 Good
Architecture 68
Code Quality 70
Innovation 50
Learning Curve 75

tiptap-markdown is a community-built extension for Tiptap (the ProseMirror-based rich-text editor toolkit) that lets an editor instance read and write Markdown directly, alongside Tiptap’s native HTML/JSON document model. It plugs in as a standard Tiptap extension — extensions: [StarterKit, Markdown] — and exposes editor.storage.markdown.getMarkdown() plus Markdown-aware setContent() so Markdown can be used as a first-class content format rather than only HTML.

The library covers configurable serialization details (tight vs. loose lists, bullet markers, HTML passthrough, linkify, paste/copy transforms) and supports custom ProseMirror-markdown parse/serialize extensions for teams with bespoke node types. As of Tiptap 3.7, the Tiptap team shipped an official markdown extension, and this package’s README now recommends migrating to it, with the maintainer no longer triaging issues or PRs here — worth factoring in for new projects, though it remains widely installed (1.3M weekly downloads) in codebases built before the official extension existed.

What You Get

  • A drop-in Markdown Tiptap extension added alongside StarterKit and other extensions
  • editor.storage.markdown.getMarkdown() to read the current document as a Markdown string
  • Markdown-aware setContent(), so editor.commands.setContent('**test**') parses Markdown directly
  • Configurable serialization options: html, tightLists, bulletListMarker, linkify, breaks, transformPastedText, transformCopiedText
  • Support for custom parse/serialize rules for teams extending Tiptap with their own node/mark types

Common Use Cases

  • Building a WYSIWYG editor for a CMS or blogging platform that stores content as Markdown
  • Letting users paste raw Markdown into a rich-text editor and have it render formatted immediately
  • Adding copy-as-Markdown behavior so content copied out of the editor pastes cleanly into chat apps or issue trackers
  • Migrating an existing Markdown-based content pipeline to a richer WYSIWYG editing experience without changing the storage format

Under The Hood

Architecture - The extension’s entry point (src/Markdown.js) registers Tiptap storage and commands, delegating actual conversion work to src/parse/MarkdownParser.js (Markdown text to ProseMirror document, built on markdown-it for tokenizing) and src/serialize/MarkdownSerializer.js + src/serialize/state.js (ProseMirror document back to Markdown text, extending prosemirror-markdown’s default serializer). src/extensions/ houses per-node/mark serialization rules that map Tiptap’s built-in extensions (headings, lists, bold, links, etc.) to their Markdown equivalents.

Tech Stack - JavaScript (83.6%) with a Vue-based example app (11.2%) and Vite as the build tool, distributed as both ES module and UMD builds (dist/tiptap-markdown.es.js / .umd.js) with hand-written TypeScript declarations (index.d.ts). It depends on markdown-it for parsing and integrates with whichever Tiptap/ProseMirror version the host project uses.

Code Quality - Tests under __tests__/ (Markdown.spec.js, parse.spec.js, serialize.spec.js, tight-lists.spec.js, clipboard.spec.js, util.spec.js) run via Vitest with snapshot testing, covering round-trip parsing/serialization and the trickier tight-vs-loose list formatting edge cases. Given the project’s now-reduced maintenance (the author points users to Tiptap’s own official extension and states current issues/PRs won’t be addressed), code quality is frozen at its last-released state rather than actively evolving.

API Design - Following Tiptap’s own extension convention (extensions: [StarterKit, Markdown]) makes adoption nearly zero-friction for existing Tiptap users, and the configuration options map directly onto common Markdown-flavor decisions (tight lists, bullet style, HTML passthrough) that teams actually need to tune. The main API wrinkle for new adopters is the explicit upstream README notice that Tiptap’s official markdown extension (introduced in 3.7.0) is now the recommended path going forward.

Used by 14 apps in this directory

JavaScript
53%
MIT

OpenWhispr

AI Assistants · Productivity · Voice AI

9,846

Privacy-first, cross-platform voice-to-text with local AI and cloud options

View details
88
Repo Health
80
Technical
71
Dependency
Built with
JavaScript 53%
TypeScript 42%
Updated 1 weeks ago
TypeScript
67%
AGPL 3.0

Plane

Collaboration · Productivity · Project Management

61,353

Open-source project management platform to replace Jira, Linear, and ClickUp — with built-in cycles, real-time collaborative docs, and full self-hosting.

View details
92
Repo Health
82
Technical
77
Dependency
Built with
TypeScript 67%
Python 30%
Updated 1 weeks ago
TypeScript
96%
Other

Refly

AI Development · Automation · No Code Platforms

7,537

Build deterministic, versioned agent skills from natural language—run them anywhere from Claude Code to Slack.

View details
68
Repo Health
76
Technical
63
Dependency
Built with
TypeScript 96%
Updated 1 weeks ago
TypeScript
98%
Apache 2.0

rowboat

AI Assistants · AI Development

18,060

Build, test, and deploy multi-agent AI workflows with a visual editor, RAG data sources, MCP tool integration, and a production-ready REST API.

View details
88
Repo Health
72
Technical
65
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago
TypeScript
85%
Apache 2.0

superset

AI Code Assistants · AI Development

15,503

Orchestrate an army of AI coding agents—Claude Code, Codex, Gemini CLI, and more—running simultaneously in isolated git worktrees from a single Electron desktop app.

View details
86
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 85%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers