Research ยท Encoding for constrained networks
EXI vs gzip on small messages: why general compression fails on tactical traffic
On our test messages, gzip cut 328 bytes to 202. Schema-informed Efficient XML Interchange (EXI) cut them to 19. The difference comes from what each method knows before it sees the message.
The problem
Extensible Markup Language (XML) repeats itself. Every value sits inside a named element, and the names travel with it. That is a fair price on a fibre link and a heavy one on High Frequency (HF) radio, where a byte costs airtime. MTF-XML gives coalition partners a shared, checkable format. Getting it across a narrow link is a separate problem.
Why gzip struggles with short messages
gzip works by finding strings that repeat inside the data it is compressing, and by spending fewer bits on the symbols that occur most. A short message gives it little to work with. Each element name appears only a few times, and the first occurrence of everything is paid at full price. On top of that, a gzip file carries a fixed header and trailer, which weighs on a message this short. In our evaluation gzip reduced the mean size from 328 bytes to 202.
What EXI does differently
EXI is a W3C standard that reads XML as a stream of events (an element starts, a value appears, an element ends) and encodes each event with a short code taken from a grammar. Values are stored as their real types, so a number is a number, not a run of characters.
Without a schema, the grammar is learned as the document is read, and the result is modest. With a schema, in schema-informed mode, the grammar is built in advance from the schema that sender and receiver both hold. If the schema says a grid reference always follows a call sign, the code for "the next element is the grid reference" takes a few bits, and the element name is never sent. The receiver rebuilds it from the shared schema.
| Encoding | Bytes |
|---|---|
| Plain XML text | 328 |
| gzip | 202 |
| EXI without the schema | 190 |
| Schema-informed EXI | 19 |
Most of the gain, then, comes from the schema and not from EXI alone: schemaless EXI at 190 bytes is close to gzip. The DDIL page covers what size means on a narrow link.
What to watch for
- Both ends must hold the same schema version. The encoded message is meaningless without it. A version mismatch is an operational risk, and it needs a process for distributing and confirming schemas, not just code.
- Free text compresses badly. Element names and typed values shrink a great deal. Narrative remarks do not. A message with a long free-text field will show a smaller gain than ours.
- EXI is not encryption. The schema is not secret, so anyone holding it can decode the message. Protect the link separately.
Limits of this measurement
The schemas are stand-ins for three message types built on public formats, not APP-11 definitions, and the messages are synthetic. Modem overhead is left out. We have not yet sent anything over a radio link. Expect the ratio to change on real schemas.
Sources
The format is specified in the W3C EXI recommendation, with a readable introduction in the EXI Primer. We used EXIficient, an open-source implementation, built from source at pinned versions.
Last reviewed September 29, 2026