vstiptap.
Do you need to edit markdown, or just render it?
at a glance.
Tiptap is a ProseMirror rich-text editor; Svelte Markdown is a zero-config Svelte 5 renderer for read-only markdown. Editing vs rendering — which do you need?
side-by-side.
Every surface that matters, compared without spin.
| feature | @humanspeak/svelte-markdown | Tiptap |
|---|---|---|
| Svelte 5 Compatibility | yes | Official integration guide (runes or legacy syntax) |
| TypeScript Support | yes | yes |
| Markdown Rendering | yes | Via extension |
| WYSIWYG Editing | no | yes |
| Bundle Size | Focused renderer + parser | Editor core + selected extensions |
| Custom Renderers | yes | Via node views |
| Token Caching | yes | no |
| AI Streaming Tiptap can stream AI-generated text, HTML, and tool edits into an editor. This is a paid editing workflow, not a read-only streaming markdown renderer. | writeChunk() / resetStream() | Paid AI Toolkit |
| Streaming HTML Output Tiptap streams HTML into an editable ProseMirror document; Svelte Markdown progressively renders an accumulating markdown/HTML response. | Partial blocks reconcile when </tag> arrives | Paid AI Toolkit streamHtml() |
| HTML Tag Control | 83 tags with allow/deny | Via schema |
| Collaborative Editing | no | yes |
| Toolbar/Menus | no | Headless (build your own) |
| Setup Complexity | Minimal — one component | Significant configuration |
where each shines.
- +Svelte 5 runes-native — built for runes, not retrofitted
- +TypeScript-first with full type safety
- +Built-in token caching (50-200x faster re-renders on repeated content)
- +LLM streaming with imperative writeChunk() / resetStream() API
- +24 markdown renderers + 83 HTML tag renderers — every override is a Svelte snippet
- +First-class extensions: KaTeX math, Mermaid diagrams, GitHub alerts, footnotes
- +Opt-in Shiki syntax highlighting (streaming-compatible, tree-shaken from core)
- +Built-in XSS protection — protocol allowlist, event-handler stripping, attribute sanitization
- +Allow/deny utilities (allowHtmlOnly, excludeRenderersOnly, etc.) for fine-grained control
- +Drop-in component — works anywhere in your Svelte app
- +Fraction of the bundle size
- +Zero configuration — just pass markdown and render
- +Purpose-built for rendering, not editing
- +Full WYSIWYG rich text editing experience
- +Massive ecosystem (~38,000 GitHub stars)
- +Collaborative editing support (Y.js)
- +Extensible with 100+ official extensions
- +Framework-agnostic — works beyond Svelte
where each falls short.
- −Smaller community (newer project)
- −Runtime-only (no build-time optimization)
- −No editing capabilities
- −No collaborative features
- −Massive bundle size for simple rendering use cases
- −Svelte integration is documented, but lower-level than the React and Vue packages
- −Complex setup and configuration for basic markdown display
- −Overkill if you just need to render markdown
the honest call.
Choose Tiptap when you need a rich text editor with WYSIWYG capabilities, collaborative editing, or complex content authoring. Choose @humanspeak/svelte-markdown when you need to display markdown content — it is dramatically simpler, smaller, and faster for pure rendering.
read more.
Every head-to-head, with the same matrix + pros / cons + verdict format.
Two Svelte 5 Renderers Built for AI Streaming
read comparison ↗Build-Time Preprocessor vs Runtime Component
read comparison ↗Raw Parser vs Svelte Component
read comparison ↗The Engine Under Our Hood
read comparison ↗Plugin-Driven Editor vs Focused Renderer
read comparison ↗Two Runtime Renderers, Different Engines
read comparison ↗Editor + Viewer vs Pure Renderer
read comparison ↗Full Editor vs Pure Renderer
read comparison ↗AST Pipeline vs Component Renderer
read comparison ↗Editor Toolkit vs Ready-Made Renderer
read comparison ↗The full /compare index — every head-to-head in one place.
browse all ↗svelte markdown → install in 30 seconds