PAK File Documentation
Summary
A PAK (Packed) file is a package archive that a game engine uses to bundle many assets — textures, models, sounds, maps and scripts — into one file. There is no single PAK format: id Software (Quake), Unreal Engine, Valve Source and countless custom engines all reuse the .pak name with different, often undocumented layouts, so the right tool depends on the game. Its generic MIME type is application/octet-stream. Do not delete or rename a game’s .pak files, because that corrupts the install.
Technical details
| Feature | Value |
|---|---|
| Full name | Package / Packed file (game resource archive) |
| File extension | .pak |
| MIME type | application/octet-stream |
| Format type | Archive of bundled game assets; layout is engine-specific |
| Category | Game files |
| Single format? | No — one extension shared by many unrelated layouts |
| Best-known variant | id Software / Quake PAK (1996) |
| Quake magic number | 50 41 43 4B (ASCII PACK) at offset 0 |
| Quake byte order | Little-endian |
| Quake header size | 12 bytes (magic + directory offset + directory size) |
| Quake directory entry | 64 bytes: 56-byte name, 4-byte offset, 4-byte size |
| Other variants | Unreal .pak (may be encrypted), Valve Source/GoldSrc, S.T.A.L.K.E.R., custom engines |
| ZIP-based cases | Some .pak files are plain ZIP archives |
| Open standard | No — no single specification |
| Compression / encryption | Engine-dependent; some encrypt or checksum contents |
| Common tools | Dragon UnPACKer, PakExplorer, QuArK, 7-Zip (ZIP-based only), GCFScape |
| Related extensions | .pk3, .pk4, .vpk, .wad, .bsa, .big, .dat |
What is a PAK file?
A PAK file (“packed” or “package”) is an archive that stores a game’s resources together so the engine can load them quickly: textures, 3D models, sounds, music, level and map data, fonts and scripts. The idea is old and simple. Rather than ship thousands of loose files, a studio bundles them into a few large containers with an internal directory the engine reads at startup. The best-known early example is id Software’s Quake from 1996, whose PAK format is small enough to describe in full and is documented below.
The crucial thing to understand is that .pak is a generic name, not a standardised format. The same three letters are reused by unrelated engines that put completely different structures inside. A Quake PAK, an Unreal Engine PAK, a Valve Source content pack and an indie studio’s custom blob can all carry the .pak extension while sharing nothing internally. That is why a tool that opens one game’s PAK often fails completely on another’s, and why the honest answer to “how do I open a PAK file?” always starts with “which game made it?”.
The Quake PAK layout: a 12-byte header and a 64-byte directory
The id Software PAK is worth reading byte for byte because it is the canonical design and one of the few .pak variants with a public specification. All integers are little-endian. The file opens with a 12-byte header:
Offset Size Field
0 4 magic "PACK" (50 41 43 4B)
4 4 dir_ofs byte offset of the directory (file table)
8 4 dir_size size of the directory in bytes
The header does not sit next to the directory. The asset data usually comes first, and dir_ofs points to a directory placed elsewhere (commonly at the end of the file). Dividing dir_size by 64 gives the number of entries, because each directory entry is exactly 64 bytes:
Offset Size Field
0 56 name file path, ASCII, null-padded (e.g. "sound/weapons/rocket.wav")
56 4 file_ofs byte offset of this file inside the PAK
60 4 file_len length of this file in bytes
To extract a file, a reader seeks to dir_ofs, walks the 64-byte entries, and for each one copies file_len bytes starting at file_ofs. There is no per-file compression in the classic Quake format: the packed data is stored verbatim, so a PAK is essentially concatenation plus an index. The 56-byte name field is why Quake asset paths are short. This same design carried into later idTech games, though Quake III moved to .pk3 and Quake 4 to .pk4, both of which are actually ZIP archives with a renamed extension.
Why one tool opens some PAKs and chokes on others
Because the extension is overloaded, extractor support is a patchwork. A generic archiver such as 7-Zip or WinRAR opens a .pak only when that file is genuinely a ZIP archive (some games, and all .pk3/.pk4 files). Point it at a Quake PACK file or a proprietary Unreal PAK and it reports a corrupt or unknown archive, because there is no ZIP central directory to find. Purpose-built tools handle the real variety: Dragon UnPACKer ships plugins that recognise many game-specific PAK layouts; PakExplorer and QuArK read Quake-style PACK files; GCFScape browses Valve Source and GoldSrc packages.
Modern engines add another wall. Unreal Engine 4 and 5 .pak files use their own container with an index that can be AES-encrypted, so extraction needs the game’s AES key and a tool such as a UE unpacker that accepts it. Other studios compress entries with zlib, LZ4 or Oodle, or sign them with checksums. None of that is discoverable from the extension. The reliable method for any specific title is to follow that game’s modding wiki, which names the exact extractor and, where relevant, the key.
The parts common to most PAK variants
Despite the differences, nearly every PAK-style container has the same three logical parts, even when the byte layout differs:
| Part | Role |
|---|---|
| Header / signature | Identifies the variant (e.g. PACK) and points to the directory; sometimes absent |
| Directory (table of contents) | Names, offsets and sizes of every packed file |
| Packed asset data | The concatenated files, sometimes compressed or encrypted |
Some engines add optional trailers for encryption metadata or integrity checksums. The directory is the piece that makes a PAK an archive rather than a plain blob: without it there is no way to know where one asset ends and the next begins.
Editing a PAK for modding without breaking the game
The two realistic reasons to touch a .pak are extracting assets to study or edit, and repacking custom content. Both should go through the game-specific tool. The general workflow is: back up the original .pak, extract with the correct unpacker, edit the loose assets, then repack in the format and folder layout the engine expects. For idTech3 games that means building a ZIP and renaming it .pk3; for Unreal it means a UE repacker that can re-encrypt if the game requires it. Skipping the game’s own instructions is the usual cause of a mod that refuses to load.
Do not delete PAK files to free space
The most common painful mistake is treating a large .pak as junk. These files hold the game’s core assets, and the engine expects them exactly where they are, referenced by name and offset. Deleting, renaming or moving one breaks or corrupts the installation, and the game may fail to start or crash mid-level. If you need the disk space, uninstall the whole game through its launcher instead of removing individual packages.
Downloaded PAKs carry a second, milder risk. The container itself does not auto-run code, but a mod package can arrive bundled with executables or scripts, so take mods only from reputable sites for that specific game, scan the download, and keep the original file so you can restore it. Malformed PAKs have occasionally exposed parser bugs in game engines, another reason to trust only known sources.
Frequently asked questions
How do I open a PAK file?
It depends on the game, because .pak is not one format. Quake-style PAKs (they begin with PACK) open in Dragon UnPACKer, PakExplorer or QuArK. Some PAKs are ZIP archives and open in 7-Zip. For a specific title, search its modding wiki for the correct unpacker, and for Unreal games be ready to supply an AES key.
Can I delete PAK files to free up space?
No. PAK files hold the game’s assets, and deleting or renaming them breaks the game. If you need the space, uninstall the whole game through its launcher rather than removing individual .pak files.
Why won’t 7-Zip or WinRAR open my PAK file?
Because that PAK is not a ZIP archive. It uses a proprietary game-engine layout with no ZIP central directory for the archiver to read. Generic tools handle only ZIP-based PAKs; use a tool built for that game, such as Dragon UnPACKer or a game-specific extractor.
References
- Quake Wiki — the Quake .pak format
- Dragon UnPACKer — multi-game asset extractor
- GCFScape — Valve Source / GoldSrc package viewer
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.