13 September 2026
Converting AbiWord (.abw, .zabw) to Markdown: Open-Source Word Processing Recovery
In the late 1990s and early 2000s, the AbiSource project created AbiWord, a fast, cross-platform, open-source word processor. Designed to run on resource-constrained hardware where bloated office suites choked, AbiWord became a staple on Linux distributions, GNOME Office desktops, and the One Laptop Per Child (OLPC) XO initiative.
To store documents, AbiWord engineered an open, human-readable XML-based specification using the .abw extension (and .zabw for GZIP-compressed files). Long before Microsoft Word adopted Office Open XML (.docx), AbiWord was already proving that rich word processing documents could be stored cleanly in structured markup.
However, on modern macOS, Windows, and mobile devices without AbiWord installed, opening a .abw or .zabw file often results in raw XML code or "unsupported file format" errors.
This engineering guide examines the internal architecture of the AbiWord document tree and explains how convrtr's ABW to Markdown extractor transforms vintage AbiWord documents into portable GitHub Flavored Markdown with preserved YAML frontmatter, tables, styles, and embedded illustrations—100% locally in your browser.
The AbiWord Document Hierarchy
An AbiWord document is a single XML file conforming to the AbiWord Markup Language (AWML) Document Type Definition (DTD). Its root element is <abiword>:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE abiword PUBLIC "-//ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/2001/xhtml/awml">
<abiword xmlns:awml="http://www.abisource.com/2001/xhtml/awml" version="3.0.5">
<metadata>...</metadata>
<history>...</history>
<styles>...</styles>
<section>...</section>
</abiword>
1. Dublin Core Metadata Mapping
AbiWord was an early adopter of the Dublin Core metadata standard. Inside the <metadata> block, document properties are serialized as key-value pairs:
<metadata>
<m key="dc.title">Operating System Architecture</m>
<m key="dc.creator">Linus Torvalds</m>
<m key="dc.date">2001-05-15</m>
<m key="dc.description">Technical notes on microkernel vs monolithic design.</m>
<m key="abiword.keywords">kernel, memory, virtual filesystem</m>
</metadata>
When convrtr's engine processes this block, it serializes the Dublin Core tags into standard YAML frontmatter for Obsidian, Notion, and static site generators:
---
title: "Operating System Architecture"
author: "Linus Torvalds"
date: "2001-05-15"
description: "Technical notes on microkernel vs monolithic design."
tags:
- kernel
- memory
- virtual filesystem
---
Paragraph Styles and Heading Levels
Within the document's <section>, textual content is stored in <p> elements. Paragraph formatting is declared through style and props attributes:
<p props="heading:1">Microkernel Architecture</p>
<p props="heading:2">Inter-Process Communication</p>
<p style="Block Text">"A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable."</p>
<p style="Bullet List">Message queues</p>
<p style="Numbered List">Initialize message descriptor</p>
The converter maps these properties directly into GitHub Flavored Markdown syntax:
heading:1orstyle="Heading 1"$\rightarrow$# Heading 1heading:2orstyle="Heading 2"$\rightarrow$## Heading 2style="Block Text"$\rightarrow$> Blockquotestyle="Bullet List"$\rightarrow$- Bullet list itemstyle="Numbered List"$\rightarrow$1. Numbered list item
Character Spans and Inline Typography
Within paragraphs, styled runs of text are enclosed in <c> (character) elements using CSS-like property strings in the props attribute:
<p>
This text includes <c props="font-weight:bold">bold words</c>,
<c props="font-style:italic">italic phrasing</c>,
<c props="text-decoration:line-through">strikethrough text</c>, and
<c props="font-family:Courier">monospace code</c>.
</p>
The parser inspects the props string and wraps inner text with corresponding markdown delimiters:
font-weight:bold$\rightarrow$**bold words**font-style:italic$\rightarrow$*italic phrasing*text-decoration:line-through$\rightarrow$~~strikethrough text~~font-family:Courier$\rightarrow$`monospace code`text-position:superscript$\rightarrow$<sup>text</sup>text-position:subscript$\rightarrow$<sub>text</sub>
Hyperlinks defined as <a href="...">...</a> are translated into standard markdown link syntax: [Label](URL).
2D Grid Table Extraction
AbiWord handles tabular structures with <table> and <cell> elements. Rather than relying on HTML-like rows (<tr>), AbiWord indexes cells using 2D grid coordinates:
<table>
<cell x="0" y="0"><p props="font-weight:bold">Subsystem</p></cell>
<cell x="1" y="0"><p props="font-weight:bold">Latency</p></cell>
<cell x="0" y="1"><p>L1 Cache</p></cell>
<cell x="1" y="1"><p>1.0 ns</p></cell>
</table>
The parser groups cells by their y row coordinate, sorts columns by x, and formats a clean Markdown table with headers and alignment separators:
| Subsystem | Latency |
| --- | --- |
| L1 Cache | 1.0 ns |
Handling Embedded Images and GZIP Compression
1. Inlined Base64 Images
Unlike DOCX or ODT files that store images as loose binary files in a ZIP container, AbiWord inlines raster illustrations directly into XML <image> tags:
<image mime-type="image/png" data="iVBORw0KGgoAAAANSUhEUgAA..."/>
The converter extracts the base64 string, strips whitespace, and outputs a self-contained Markdown image:

2. GZIP Archive Decompression (.zabw)
To save disk space, AbiWord allows users to save documents with the .zabw extension. A .zabw file is a standard GZIP-compressed .abw stream. The converter detects GZIP magic bytes (0x1F 0x8B 0x08) and inflates the document in memory before XML parsing.
100% Client-Side Privacy
Confidential documents, manuscripts, and legal agreements should never be transmitted to third-party conversion servers. With convrtr's ABW to Markdown converter, all XML decoding, style translation, and image processing execute entirely within your browser using client-side TypeScript. Your documents never touch an external server.
Related reading
Converting Emacs Org Mode to Markdown: Outlines, Tables, and Checklists
Explore the syntax and semantics of Emacs Org Mode (.org). Learn how asterisk headings, TODO states, priority tags, Org Calc tables, and code blocks translate to GitHub Flavored Markdown.
Converting Evernote ENEX Notebooks to Markdown: Free Your Notes from Proprietary XML
Learn how Evernote XML Export (.enex) files structure notes, timestamps, tags, and ENML layout markup, and how to convert them into clean GitHub Flavored Markdown with YAML frontmatter.
Converting FictionBook 2.0 (FB2) E-Books to Markdown: XML Structure and Semantics
Explore the FictionBook 2.0 (.fb2) architecture. Learn how semantic XML e-book structures, epigraphs, poems, footnotes, and metadata are converted into clean GitHub Flavored Markdown.
Converting PalmDoc (PDB) to Markdown: Vintage Handheld E-Book Architecture
Explore the Palm OS PalmDoc (.pdb / .prc) architecture. Discover 78-byte database headers, record indices, 4KB LZ77 compressed blocks, and browser-based Markdown extraction.
Converting Hangul Word Processor (HWP) to Markdown: OLE CFB & Deflate Forensics
Unpack Hancom Hangul HWP 5.x compound documents. Discover how OLE 2.0 CFB directory tables, Deflate stream decompression, and HWPTAG_PARA_TEXT record parsers extract clean Markdown in browser memory.
Converting ClarisWorks and AppleWorks CWK to Markdown: Recovering Vintage Mac Documents
Learn how to extract text, paragraphs, and headings from vintage ClarisWorks and AppleWorks (.cwk) MacBinary files into clean GitHub Flavored Markdown with 100% private in-browser decoding.
Converting OpenOffice SXW to Markdown: Unpacking Pre-ODF XML Document Archives
Learn how OpenOffice.org 1.x and StarOffice Writer (.sxw) XML packages work. Discover how to extract text, tables, and lists into clean Markdown directly in your browser.
Converting StarOffice & StarWriter (SDW) to Markdown: OLE Compound Binary Forensics
Recover text, headings, bullet lists, and metadata from vintage StarOffice 3.x–5.x (.sdw) word processing documents. Learn how OLE CFB streams unpack to GitHub Flavored Markdown.
Converting Compressed AbiWord (ZABW) to Markdown: Gzip XML Document Extraction
Learn how AbiWord's compressed .zabw document format packages rich word processing XML inside Gzip containers, and how to convert it to clean GitHub Flavored Markdown.
Converting Apple RTFD Bundles to Markdown: Rich Text & Attachment Extraction
Learn how Apple macOS RTFD compound packages bundle Rich Text Format documents with graphic attachments, and how to convert them into GitHub Flavored Markdown 100% offline.