MPQ
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
Blizzard MPQ Preview.
At a glance
| Purpose | A Blizzard MPQ archive: the packed game data of Diablo, StarCraft, WarCraft III and World of Warcraft. |
| Extensions | .mpq |
| Poka parser | poka-mpq |
| Viewer | poka-tree-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B4 Summary (see Breadth tiers) |
How much Poka reads
B4 Summary. The container and metadata are read and summarised (counts, properties, structure), but the main content is not rendered.
Confidence: medium (the reviewer read the code). Basis: Reviewed 2026-10-26: read parsers/poka-mpq/src/main.rs (477 lines) and plugin.json. No tests/samples.rs; the corpus has D2MUSIC.MPQ, whose block table is a unit-test vector since #536. Covers .mpq, .w3m, .w3x, .sc2map and .sc2replay. The tree finds the archive header (following an MPQ user-data header) and shows the format version, archive size, sector size, header size, the positions and entry counts of the hash and block tables, and the v2 to v4 extension fields (hi-block, HET and BET tables). Since #536 it decrypts the block table with the standard MPQ key and counts the used, encrypted and deleted entries and sums their sizes; on D2MUSIC.MPQ the two decrypted entries run back to back up to the hash table. When decrypted entries point past the end of the archive, the counts are withheld and the card says why. Judgement: B4 (was B5 before #536), because the entry table is now decoded and summarised; no file is named or extracted.
What Poka does not read
- File names are not shown: the hash table is not decrypted and no (listfile) is read; entries are only counted and summed, not listed
- No file is extracted; there is no (listfile), (attributes) or (signature) reading
- HET and BET tables are located but not read
- Files over 1 GiB are cut (flagged)
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- wow-mpq (warcraft-rs) (candidate; MIT OR Apache-2.0; Rust; https://www.lib.rs/crates/wow-mpq) — Parser for MPQ archives with StormLib compatibility; aimed at World of Warcraft versions; version 0.7.0.
- StormLib (candidate; MIT; C++; https://github.com/ladislav-zezula/StormLib) — Reference library for reading and writing Blizzard MPQ archives; repository page does not state the language (C++ per package listings).
- ceres-mpq (candidate; MIT; Rust; https://www.lib.rs/crates/ceres-mpq) — Pure Rust MPQ reader/writer for version 1 archives only; last release 0.1.9 in March 2020; lacks some compression methods.
- mpq (candidate; MIT/Apache-2.0; Rust; https://github.com/msierks/mpq-rust) — A library for reading MPQ archives; v0.8.1, updated 2024-08-14; matched on lib.rs, not tested
- nom-mpq (candidate; MIT; Rust; https://github.com/sebosp/nom-mpq) — A nom parser for the MoPaQ archive format; v2.0.11, updated 2026-09-26; matched on lib.rs, not tested
- stormlib-rs (candidate; MIT; Rust; https://github.com/notOrrytrout/stormlib-rs) — Rust-native MPQ archive toolkit; v0.0.3, updated 2026-03-13; matched on lib.rs, not tested
- war3-mpq (candidate; MIT/Apache-2.0; Rust; https://github.com/war3-archive/war3-maps) — Read MPQ archives, hardened against protected Warcraft III maps (fork of mpq 0.8.1); v0.10.0, updated 2026-08-14; matched on lib.rs, not tested
Sources
- parsers/poka-mpq/src/main.rs
- parsers/poka-mpq/plugin.json