PAK
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.
Quake / HL PAK Preview.
At a glance
| Purpose | A Quake or Half-Life PAK archive: id Software's flat archive of game files with a directory at the end. |
| Extensions | .pak |
| Poka parser | poka-pak |
| 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: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-26: read parsers/poka-pak/src/main.rs (299 lines) and plugin.json. The unit test the_corpus_pak_states_its_entry_count_and_declared_size checks the corpus sample.pak against a separate reader (5 entries, 427 bytes), and a second test covers an empty directory. Covers .pak. The tree checks the PACK magic and lists every directory entry as a nested folder tree with sizes, with the file count, directory offset and total data size. Judgement: B4: the archive is listed but no file is extracted or shown.
What Poka does not read
- File contents are not extracted or shown (no BSP, model, sound or texture preview)
- Other formats that use .pak (Unreal Engine 4 and later, Chrome resource packs and others) are refused as not PACK
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- qpak-lib (candidate; MIT; Rust; https://lib.rs/crates/qpak-lib) — Sync/async library to read and modify Quake PAK archives; repo https://github.com/cornmonger/qpak. Small, recent project.
- rustpak (candidate; CC-BY-NC-SA-4.0; Rust; https://docs.rs/crate/rustpak/latest) — Reads and writes GoldSrc/Quake .pak; non-commercial licence per its README, so likely unsuitable for Poka. Repo https://github.com/SharkyRawr/rustpak.
- Kaitai Struct quake_pak spec (candidate; CC0-1.0; Kaitai Struct; https://formats.kaitai.io/quake_pak/) — Formal format spec that generates parsers for many languages including Rust and Python. Licence is as shown on the page for the spec.
Sources
- parsers/poka-pak/src/main.rs
- parsers/poka-pak/plugin.json