Split a .docx locally

Four stored-marker modes, a preview, and a free ZIP of every chapter or only the ones you select.

Client-side · zero upload · OpenXML

Saving a file needs JavaScript. The explanation below is in the page HTML.

or drop one .docx here.

Up to 100 MB compressed and 250 MB expanded. One .docx at a time.

Heading levels

Topic
TopicThis browserServer uploadBy hand
EngineClient-side JavaScript. Not WebAssembly and not a server upload.An upload tool would transmit the package.Word opens the file in the desktop application.
ModesH1–H3, page breaks, section breaks, a literal keyword, or every N non-empty paragraphs.A server could apply its own rules after receiving the file.You can cut the document by hand.
Limits100 MB compressed and 250 MB expanded. Equal to the limit passes.This page does not publish another service's quota.Word's own memory limits are separate.
RelationshipsCopies styles, numbering, and media reached from the chapter, including headers and footers.A service might store unused media with the upload.Word keeps the package it already has open.
BoundariesNot physical page numbers, not refreshed fields, and not a pixel-perfect copy. Charts are not all under word/media.A remote renderer could differ as well.Word's layout can still differ from this export.

How this page works

  1. Choose the marker

    Select heading levels, a page or section break, a literal keyword, or a paragraph count. At least one heading level stays selected.

  2. Read the preview

    Each card shows the title, the export name, the word count, and the paragraph count. Page counts are not invented.

  3. Save parts

    Save one .docx or a ZIP of all chapters or the chapters you check. Names use the first 15 graphemes, such as 01-Chapter 1.docx.

Under the hood

The splitter is client-side JavaScript, not WebAssembly, and it does not upload the file. Heading mode uses H1, H2, and H3. A heading inside a table does not split the table. Page mode reads w:br type page, even inside a run. Section mode reads w:sectPr. The final body sectPr is not an extra chapter. Breaks follow stored layout, not physical page numbers. Keyword mode matches a paragraph start: 第, numerals, then 章, 节, 回, or the word 部分, or Chapter or Section plus a number. Custom text is literal, not a regular expression. Paragraph mode groups every N non-empty body paragraphs, default 30. Paragraphs inside a table are not counted. Each saved part rebuilds [Content_Types].xml, word/document.xml, and word/_rels/document.xml.rels. Only reached pictures, headers, footers, styles, and numbering are copied. Not every chart lives under word/media. Comments are removed. Fields may need F9. Limits are 100 MB compressed and 250 MB expanded. This is not pixel-perfect.

Questions

Which split modes are real?

Heading levels H1 through H3, explicit page breaks, paragraph section breaks, a default or custom literal keyword, and a fixed count of non-empty body paragraphs are implemented.

Are tables and headings inside tables split?

No. A table stays whole. A heading or break inside a table is not a split point, and paragraphs inside a table do not count toward N.

Is the export identical to Word?

No. It is an OpenXML package built in the browser. Fields may need F9, tracked changes stay as stored markup, and layout is not promised to match Word pixel for pixel.

What is the privacy claim?

The document is processed locally and is not uploaded by this splitter. That is not a GDPR or CCPA compliance certification.