About the Libraries

Source Pretty Parsers (SourcePP) is an MIT-licensed open source collection of several libraries, which can read and write many Source engine file formats. Precompiled builds are distributed for Windows, Linux, and macOS, and should work without issue on any little-endian system (big-endian support is mostly untested, some libraries will not work). Bindings of varying completeness exist for C, C#, and Python, and bindings for JavaScript and Rust are planned. C++ and Python are the languages with the most support and development focus.

Created by craftablescience, with contributions from many lovely people.

Supported Formats

Library Supports Read Write
bsppp
  • Python
BSP v17-27
  • Console modifications
  • Left 4 Dead 2 modifications
  • Strata Source modifications
fspp* Source 1 filesystem accessor
gamepp
  • C
  • Python
Get Source engine instance window title/position/size
Run commands in a Source engine instance remotely
kvpp
  • Python
  • DMX
    • Legacy binary v1-2 encoding (binary_vN)
    • Legacy SFM v1-9 encoding (sfm_vN)
    • Binary v1-5, v9 encodings (binary, binary_seqids)
    • srctools encodings (unicode_*)
KeyValues v1 Binary
KeyValues v1 Text
mdlpp* MDL v44-49
VTX v7
VVD v4
sndpp* WAV
XWV v0-1, v4
steampp
  • C
  • Python
Find Steam install folder
Find installed Steam games
Find Steam game library assets
toolpp
  • Python
FGD (Source 1)
WC (CmdSeq) v0.1-0.2
vcryptpp
  • C
  • C#
  • Python
VICE encrypted files
VFONT encrypted font
vpkpp
  • C
  • C#
  • Python
007 v1.1, v1.3 (007 - Nightfire)
FGP v2-3 (PS3, Orange Box)
FPX v10 (Tactical Intervention)
GCF v6
GMA v1-3 (Garry's Mod)
HOG (Descent)
OL (Worldcraft Object Library)
ORE (Narbacular Drop)
PAK (Quake, WON Half-Life)
  • SiN modifications
  • HROT modifications
PCK v1-2 (Godot Engine)
VPK pre-v1, v1-2, v54
VPK (Vampire: The Masquerade - Bloodlines)
VPP v1-3 (Red Faction)
WAD v3
XZP v6 (Xbox, Half-Life 2)
ZIP
  • BEE_PACK alias (BEE2.4 Package)
  • BMZ alias (Source 1 Bonus Maps)
  • FPK alias (Tactical Intervention)
  • PK3 alias (Quake III)
  • PK4 alias (Quake IV, Doom 3)
  • PKZ alias (Quake II RTX)
  • XZP2 modifications (X360 & PS3, misc. Source 1 titles)
vtfpp
  • C
  • Python
APNG
BMP
EXR v1
FRAMES (PS3, Orange Box)
GIF
HDR
JPEG
PIC
PNG
PNM (PGM, PPM)
PPL v0
PSD
QOI
SHT v0-1
TGA
TTX (TTH, TTZ) v1.0
VBF v3
VTF v7.0-7.6
  • Strata Source modifications
  • XTF v5.0 (Xbox, Half-Life 2)
  • VTFX v8 (X360 & PS3, Orange Box)
  • VTF3 v8 (PS3, Portal 2 & CS:GO)
WebP

* These libraries are incomplete and still in development. Their interfaces are unstable and will likely change in the future. Libraries not starred should be considered stable, and their existing interfaces will not change much if at all. Note that wrappers only exist for stable libraries.

Many text-based formats in Source are close to (if not identical to) KeyValues v1, such as VMT and VMF.

Special Thanks