Rename a .docx to .zip and it opens. Here's what's inside.
Since Word 2007, a document is a ZIP folder of small text files written in XML: one for the words, one for the styles, one for each picture. Browse the folder of a real-looking letter, and see which part of the file each thing you see in Word comes from.
<w:p> <w:pPr><w:pStyle w:val="Title"/></w:pPr> <w:r><w:t>Offer of employment</w:t></w:r></w:p><w:p> <w:r><w:t xml:space="preserve">Dear Sam, … role of </w:t></w:r> <w:r><w:rPr><w:b/></w:rPr> <w:t>Senior Designer</w:t></w:r> … <w:r><w:footnoteReference w:id="1"/></w:r></w:p>- Every paragraph (w:p) is split into runs (w:r) of text that share formatting. The bold job title is its own run. The heading just names a style instead of describing its look.
A heading can be made two ways: by choosing the "Heading 1" style, or by selecting text and making it big and bold by hand. They look identical in Word. To any other program, only the first is actually a heading. Switch the method and see what a converter receives.
<w:p> <w:pPr> <w:pStyle w:val="Heading1"/> </w:pPr> <w:r><w:t>Pay and benefits</w:t></w:r></w:p>
The format avoids decimals by choosing a tiny unit for each kind of measurement: half-points for text, twips for margins, EMUs for pictures. A “24” can mean 12 pt, a sliver of a millimetre or a thick border depending on where it appears. Pick a measurement and move the slider to see the value Word writes.
<w:rPr> <w:sz w:val="22"/> <w:szCs w:val="22"/></w:rPr>
Sending the offer letter sends the whole package. Some of these parts are visible if you know where to look in Word; others never appear on screen at all. Each one below is real markup, and each says whether it survives into a PDF and whether Word’s Inspect Document removes it.
<w:del w:id="3" w:author="Maya Chen" w:date="2026-09-28T10:14:00Z"> <w:r><w:delText>£48,000</w:delText></w:r></w:del><w:ins w:id="4" w:author="Maya Chen" w:date="2026-09-28T10:14:00Z"> <w:r><w:t>£52,000</w:t></w:r></w:ins>
Word works out how each piece of text looks by layering: document defaults, then the paragraph style and every style it is based on, then a character style, then direct formatting. This page rebuilds that cascade from the XML for whichever run you click. It also shows why the text is chopped into the runs it is, counts the editing sessions recorded in rsid attributes, and spots headings and lists that were typed by hand. Then it writes a cleaner copy and checks that every paragraph’s text and formatting came through. Everything happens on your device. Both samples are real DOCX files built in your browser.
<w:p w:rsidR="00A1B2C3" w:rsidRDefault="00A1B2C3"> <w:pPr><w:pStyle w:val="Heading1"/></w:pPr> <w:r w:rsidR="00A1B2C3"><w:t xml:space="preserve">Summary of the </w:t></w:r> <w:r w:rsidR="004F7E21"><w:rPr><w:rStyle w:val="Strong"/></w:rPr><w:t xml:space="preserve">proposal</w:t></w:r></w:p>in the clean copy
<w:p> <w:pPr><w:pStyle w:val="Heading1"/></w:pPr> <w:r><w:t xml:space="preserve">Summary of the </w:t></w:r> <w:r><w:rPr><w:rStyle w:val="Strong"/></w:rPr><w:t xml:space="preserve">proposal</w:t></w:r></w:p>
They all hold a word-processing document, but they're built very differently, which decides how safely they open in other apps.
Identifiers, package layout and standards from ECMA-376 and ISO/IEC 29500, plus the two conformance classes the standard defines and how the format got here.
Each converter reads the parts described above, so styled documents convert best.