Introduction

Browser-based WYSIWYG DOCX editor for React and Vue 3, with tracked changes, comments, content controls, and custom nodes.

docx-editor is a what-you-see-is-what-you-get (WYSIWYG) DOCX editor for React and Vue 3.

It parses Office Open XML (OOXML), renders paginated pages, and saves the edited state as a DOCX file. Browser editing needs no upload or conversion service.

Which API for which job

JobUse
Build a review UI in the browserThe React or Vue adapter hooks, plus the review hooks and DocxEditorReview from @docx-editor.dev/pro/react or @docx-editor.dev/pro/vue.
Edit in a headless, server, or agent pipelineThe editing API in @docx-editor.dev/editor-api, which follows the Office.js object model.
TaskBrowser host (React or Vue)Headless, server, or agent
Comment on found texteditor.findMatches, editor.selectMatch, then useReview().commentbody.search, then Range.insertComment
Reply to a threaduseReview().reply(item, text)Comment.reply(text)
Record a tracked replacementSuggesting mode, then editor.exec({ type: 'replaceMatch', match, text })document.changeTrackingMode = 'TrackMineOnly', then Range.insertText(text, 'Replace')
Propose an AI rewrite as tracked changesThe same code through DocxEditor.createBrowser from @docx-editor.dev/editor-api/browserprepareRewrite from @docx-editor.dev/editor-api/agent
Accept or reject a changeuseReview().accept(item) or useReview().reject(item)Revision.accept() or Revision.reject()
Open or reveal a change without scrollinguseReview().setActive(key, { reveal: false })Not applicable: no viewport
Highlight rangesuseHighlights(name, source, options)Not applicable
Custom review rail cardsDocxEditorReview with preset set to false, useReview().items, useStackedReviewPositions, and useReviewRailMetricsNot applicable
Comment-on-selection buttonDocxEditorReview.AddComment as a direct child of DocxEditorReview, or useEditorCommand('review.addComment')Not applicable
Page setup and paragraph dialogs from a custom toolbarDocxEditor.PageSetupDialog or DocxEditor.ParagraphDialog with open and a close handler (onClose in React, @close in Vue); enable the button from usePageSetup().isEnabled or useParagraphFormat().isEnabledSection.pageSetup, and Paragraph properties such as alignment

The review hooks need reviewModule() from @docx-editor.dev/pro in the editor's modules, and an editor author for comments and tracked changes. The editing API takes its author from the author option of DocxEditor.createServer, imported from @docx-editor.dev/editor-api, or of DocxEditor.createBrowser, imported from @docx-editor.dev/editor-api/browser.

For worked examples, see Task recipes.

Packages

PackagePurposeLicense
@docx-editor.dev/reactReact adapter and composition hooksApache 2.0
@docx-editor.dev/vueVue 3 adapter and composablesApache 2.0
@docx-editor.dev/coreFramework-independent OOXML, document, layout, paint, and editor engineApache 2.0
@docx-editor.dev/editor-apiBrowser and server automation through a documented Office.js-compatible subsetEigenPal Pro License
@docx-editor.dev/docx-to-markdownDOCX to Markdown conversion with pages and mediaApache 2.0
@docx-editor.dev/docx-to-pdfDOCX to PDF conversion on Node.jsEigenPal Pro License
@docx-editor.dev/proTracked changes, comments, and custom nodesEigenPal Pro License
@docx-editor.dev/telemetryAnonymous diagnostics, metrics, and error reporting for editors and collaboration serversEigenPal Pro License
@docx-editor.dev/i18nShared interface translationsApache 2.0
@docx-editor.dev/fontsOpen-licensed substitutes for common Word fontsApache-2.0 AND OFL-1.1 AND LicenseRef-GUST-Font-License
@docx-editor.dev/fonts-cjkOptional Chinese, Japanese, and Korean fallback font for PDF conversionApache-2.0 AND OFL-1.1

Compare EigenPal Pro License and support options on the pricing page.

The Nuxt module is a private workspace package. For external applications, follow the Nuxt guide.

Select packages

GoalPackages
Convert DOCX to Markdown@docx-editor.dev/docx-to-markdown and @docx-editor.dev/core
Convert DOCX to PDF on Node.js@docx-editor.dev/docx-to-pdf and @docx-editor.dev/core; add @docx-editor.dev/fonts-cjk for Chinese, Japanese, and Korean text
React editor@docx-editor.dev/react and @docx-editor.dev/core
Vue editor@docx-editor.dev/vue and @docx-editor.dev/core
Tracked changes, comments, or custom nodesAdd @docx-editor.dev/pro
Server-side editing through the documented Office.js-compatible subset@docx-editor.dev/editor-api and @docx-editor.dev/core
Browser automation through the same subsetAdd @docx-editor.dev/editor-api and use its /browser entry
Anonymous diagnostics, metrics, or error reportingAdd @docx-editor.dev/telemetry

Install the React editor:

npm install @docx-editor.dev/react @docx-editor.dev/core

For Vue, replace @docx-editor.dev/react with @docx-editor.dev/vue.

Document capabilities

AreaExamples
TextFormatting, fonts, theme colors, paragraph styles, and character styles
StructureTables, lists, numbering, footnotes, endnotes, and content controls
Page layoutSections, columns, headers, footers, margins, and pagination
ContentImages, hyperlinks, bookmarks, and fields
ReviewTracked changes and comments with @docx-editor.dev/pro

Support differs by feature and operation. See Word fidelity for editing, rendering, and round-trip status. Use the live demo to test a document.

Find a guide for your task

TaskGuide
Check pagination, table layout, and drawing limitsWord fidelity
Set paragraph direction for Arabic or Hebrew textRight-to-left text
Scroll to and highlight an external paragraph referenceNavigate a document
Configure PDF fonts, including Chinese, Japanese, and Korean fallbackPDF fonts
Configure interface translations, including Spanish@docx-editor.dev/i18n

Document direction, interface language, and font selection have separate settings. Use the corresponding guide to configure each setting.

Round-trip behavior

Saving preserves untouched package content and unsupported OOXML.

ContentBehavior
Modeled document structuresUses typed nodes for layout and editing.
Unsupported or misplaced XMLKeeps generic nodes in the document tree.
Media, fonts, macros, and VBA projectsCopies package payloads through save.
Custom XML and add-in markupPreserves structural content.

For the preservation contract and test method, see Word fidelity. For engine details, see Architecture.

Next steps

Customize your editor

Start with Overview. Choose a focused guide with a live contract preview and React and Vue examples.