🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@office-open/docx

Package Overview
Dependencies
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@office-open/docx

Generate, parse, and patch .docx documents with a declarative TypeScript API

Source
npmnpm
Version
0.10.10
Version published
Weekly downloads
2K
256.65%
Maintainers
1
Weekly downloads
 
Created
Source

@office-open/docx

npm version npm downloads npm license

Generate, parse, and patch .docx documents with a declarative TypeScript API. Works in Node.js and browsers.

Features

  • 📄 Document Generation — Create Word documents with sections, headers, footers, and page numbers
  • ✍️ Paragraphs & Text — Rich text support with bold, italic, underline, strikethrough, and more
  • 📊 Tables — Full table support with merged cells, borders, and styles
  • 🖼️ Images — Inline and floating images with sizing, positioning, and wrapping
  • 🔗 Hyperlinks — External and internal hyperlinks with custom styling
  • 📑 Headers & Footers — First, last, even/odd page headers and footers
  • 📋 Lists — Numbered and bulleted lists with multiple levels and custom formats
  • 🎨 Styles — Paragraph, character, and table styles with inheritance
  • 📖 Table of Contents — Auto-generated table of contents with custom styling
  • 📝 Footnotes & Endnotes — Comprehensive footnote and endnote support
  • 📈 Charts — Bar, line, pie, area, and scatter charts with customization
  • 🔢 Math Equations — Full mathematical equation support via Office MathML (OMML)
  • 🧩 SmartArt — Built-in SmartArt graphic generation
  • 📚 Bibliography — Source management and citation support
  • 💬 Comments — Document comments with author and date tracking
  • 📝 Track Revisions — Insertions, deletions, and formatting changes
  • 📋 Content Controls — Structured document tags (SDT) for form-like documents
  • 📦 Text Boxes — Floating text boxes with content and styling
  • ☑️ Checkboxes — Form checkbox support in documents
  • 🖌️ DrawingML — Shapes with fills, shadows, effects, and transformations
  • 🔤 Custom Fonts — Font embedding and custom font tables
  • 🔧 Template Patching — Patch existing DOCX templates via placeholder replacement
  • ⚙️ Settings — Comprehensive document settings and compatibility options

Installation

# pnpm
pnpm add @office-open/docx

# npm
npm install @office-open/docx

# yarn
yarn add @office-open/docx

# bun
bun add @office-open/docx

Quick Start

import { generateDocument } from "@office-open/docx";
import { writeFileSync } from "node:fs";

const buffer = await generateDocument({
  sections: [
    {
      children: [
        {
          paragraph: {
            children: ["Hello World", { text: " - Bold text", bold: true }],
          },
        },
      ],
    },
  ],
});

writeFileSync("My Document.docx", buffer);

Examples

Check the demo folder for 100+ working examples covering every feature.

Benchmark

Performance vs original docx (9.6.1) package (higher ops/s is better, Windows 11 / Node 24).

Default = XML DEFLATE level 1 (SuperFast); media is split by type, matching MS Office Word — already-compressed formats (PNG/JPEG/GIF) are STOREd, the rest (EMF/WMF/BMP/TIFF/…) use DEFLATE level 1 (verified on a real MS Office file). All STORE = no compression ({ compression: { xml: 0, media: 0 } }). docx (async only) always uses DEFLATE for ALL entries including images (via JSZip, hardcoded, no STORE option).

// Default (matches MS Office)
await generateDocument(options);
// All STORE (no compression)
await generateDocument(options, { compression: { xml: 0, media: 0 } });

Create + toBuffer (end-to-end)

ScenarioDefault syncDefault asyncAll STORE syncAll STORE asyncdocx
Simple (2p + 1 img)1,026 ops/s636 ops/s2,509 ops/s2,500 ops/s92.0 ops/s
Styled paragraphs (20) + 1 img1,132 ops/s663 ops/s2,849 ops/s2,791 ops/s99.1 ops/s
Table (10x5)1,226 ops/s681 ops/s2,774 ops/s2,616 ops/s221 ops/s
Full featured + 2 imgs753 ops/s496 ops/s1,642 ops/s1,634 ops/s55.3 ops/s

Large Files — Create + toBuffer

ScenarioDefault syncDefault asyncAll STORE syncAll STORE asyncdocx
2000 paragraphs + 20 images81.5 ops/s78.7 ops/s90.9 ops/s88.7 ops/s3.04 ops/s
200x10 table196 ops/s168 ops/s216 ops/s216 ops/s37.2 ops/s
20 sections x 100p + 40 images80.9 ops/s67.7 ops/s95.8 ops/s91.0 ops/s1.82 ops/s

Large File (~100MB) — Mixed Content

500 styled paragraphs + 38 mixed-size images (1-5MB, 100MB total) + 50x10 table.

ScenarioDefault syncDefault asyncAll STORE syncAll STORE asyncdocx
Mixed (500p+38img+50x10)24.4 ops/s22.6 ops/s24.7 ops/s25.3 ops/s0.31 ops/s

License

Keywords

clippy

FAQs

Package last updated on 01 Jul 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts