Build powerful editors with zero runtime dependencies. Supports Mentions, Merge Tags, Templates, Tables, Image Upload & Resizing, HTML Editing, TypeScript, and Native Browser APIs.
Built from scratch for the modern web. No TinyMCE, CKEditor, or Quill.
Welcome to the most modern editor for Vue 3.
Hey @John Doe, please review the {{invoice.total}}.
Standard bold, italic, underline, strikethrough, lists, and headings with zero bloat.
Async debounced search for user mentions with session caching and AbortSignal support.
Autocomplete drop-downs and categorized slide-out drawers for data placeholders.
Insert application-provided HTML snippets through a searchable modal with live preview.
Drag-and-drop uploads, custom server handlers, and interactive corner-handle resizing.
Insert and manage interactive tables natively without external heavyweight plugins.
Toggle between WYSIWYG mode and raw HTML source code editing instantly.
Familiar productivity shortcuts out-of-the-box (Cmd+B, Cmd+I, Undo/Redo).
Built directly on the browser's Selection, Range, and DOMParser APIs. Only Vue 3 is needed.
Built-in distraction-free writing mode that expands the editor to fill the entire viewport.
First-class TypeScript support with comprehensive interfaces for props, events, and configuration.
Search and replace document text, inspect a sanitized preview, and print only the editor content.
Toolbar overflow, viewport-aware menus, active command states, word counts, and constrained editor resizing.
Safe links, video, audio, embeds, emoji, special characters, anchors, horizontal rules, and date-time.
Allowlisted tags, attributes, styles, URLs, embeds, mentions, and merge tags with SSR-safe initialization.
ARIA-labelled controls, keyboard-friendly menus, and clear focus states support inclusive editing workflows.
Edit the content below and explore the complete menubar, toolbar, mentions, merge tags, templates, tables, media, preview, and source tools.
| Feature | @erag/text-editor-vue | TinyMCE | CKEditor | Quill | Tiptap |
|---|---|---|---|---|---|
| License | 100% Free (MIT) | GPL 2+ / Commercial | GPL 2+ / Commercial | BSD-3-Clause | MIT |
| Zero External Dependencies | Requires ProseMirror | ||||
| First-party Vue 3 Component | Vue integration | Vue integration | Community wrapper | Vue integration | |
| Mentions (@) | Premium Plugin | Premium Plugin | Third-party | Extension | |
| Merge Tags ({{ }}) | Premium Plugin | Premium Plugin | Custom Node | ||
| Configurable Template Picker | Premium Plugin | Premium Plugin | |||
| Interactive Image Resizing | Third-party | Extension | |||
| Image Drag & Drop Upload | Third-party | Custom Extension | |||
| Interactive Table Editor | Third-party | Extension | |||
| Built-in HTML Source Dialog | |||||
| Image Upload + Server Delete Callback | Built in | Plugin / adapter | Upload adapter | Custom module | Extension / custom |
| Find, Preview, Print & Fullscreen UI | Built in | Plugin mix | Build dependent | Custom UI | Extension / custom |
| Emoji, Symbols, Anchors & Date-Time | Built in | Plugin mix | Plugin mix | Custom modules | Extensions |
| Responsive Menubar, Overflow & Status Bar | Included UI | Basic theme UI | Headless / add UI | ||
| Typed Vue Props, Events, Slots & Methods | First-party Vue 3 | Vue integration | Vue integration | Community wrapper | Vue integration |
@ triggers an async user search dropdown, complete with debouncing and caching. Typing {{ triggers a dynamic merge tags dropdown. Both are fully native Vue components rendered over the editor canvas. imagesUploadHandler function to handle CSRF tokens and POST images directly to your Laravel controllers.