
Company News
Andrew Becherer Joins Socket as Chief Information Security Officer
Socket’s first CISO brings deep experience securing high-growth SaaS companies as open source supply chain threats accelerate.
@office-open/docx
Advanced tools
Generate, parse, and patch .docx documents with a declarative TypeScript API
Generate, parse, and patch .docx documents with a declarative TypeScript API. Works in Node.js and browsers.
# pnpm
pnpm add @office-open/docx
# npm
npm install @office-open/docx
# yarn
yarn add @office-open/docx
# bun
bun add @office-open/docx
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);
Check the demo folder for 100+ working examples covering every feature.
Performance vs original docx (9.6.1) package (higher ops/s is better, Windows 11 / Node 24).
Default = XML DEFLATE level 1 (SuperFast, matching MS Office) + media STORE. All STORE = no compression ({ compression: { xml: 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 } });
Create + toBuffer (end-to-end)
| Scenario | Default sync | Default async | All STORE sync | All STORE async | docx |
|---|---|---|---|---|---|
| Simple (2p + 1 img) | 827 ops/s | 493 ops/s | 1,392 ops/s | 1,483 ops/s | 89 ops/s |
| Styled paragraphs (20) + 1 img | 856 ops/s | 497 ops/s | 1,558 ops/s | 1,574 ops/s | 95 ops/s |
| Table (10x5) | 1,390 ops/s | 647 ops/s | 3,786 ops/s | 3,707 ops/s | 217 ops/s |
| Full featured + 2 imgs | 547 ops/s | 364 ops/s | 851 ops/s | 819 ops/s | 56 ops/s |
Large Files — Create + toBuffer
| Scenario | Default sync | Default async | All STORE sync | All STORE async | docx |
|---|---|---|---|---|---|
| 2000 paragraphs + 20 images | 29.4 ops/s | 31.5 ops/s | 27.5 ops/s | 32.2 ops/s | 2.7 ops/s |
| 200x10 table | 298 ops/s | 233 ops/s | 313 ops/s | 317 ops/s | 39.6 ops/s |
| 20 sections x 100p + 40 images | 18.1 ops/s | 17.3 ops/s | 17.4 ops/s | 18.4 ops/s | 1.7 ops/s |
Large File (~100MB) — Mixed Content
500 styled paragraphs + 38 mixed-size images (1-5MB, 100MB total) + 50x10 table.
| Scenario | Default sync | Default async | All STORE sync | All STORE async | docx |
|---|---|---|---|---|---|
| Mixed (500p+38img+50x10) | 3.9 ops/s | 3.9 ops/s | 4.4 ops/s | 4.0 ops/s | 0.31 ops/s |
FAQs
Generate, parse, and patch .docx documents with a declarative TypeScript API
The npm package @office-open/docx receives a total of 618 weekly downloads. As such, @office-open/docx popularity was classified as not popular.
We found that @office-open/docx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Company News
Socket’s first CISO brings deep experience securing high-growth SaaS companies as open source supply chain threats accelerate.

Company News
Replit is integrating Socket Firewall into its AI-powered development experience to help protect builders from malicious open source packages.

Security News
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.