sourcepp 2026.3.9

dotnet add package sourcepp --version 2026.3.9
                    
NuGet\Install-Package sourcepp -Version 2026.3.9
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="sourcepp" Version="2026.3.9" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="sourcepp" Version="2026.3.9" />
                    
Directory.Packages.props
<PackageReference Include="sourcepp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add sourcepp --version 2026.3.9
                    
#r "nuget: sourcepp, 2026.3.9"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package sourcepp@2026.3.9
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=sourcepp&version=2026.3.9
                    
Install as a Cake Addin
#tool nuget:?package=sourcepp&version=2026.3.9
                    
Install as a Cake Tool

<div> <img align="left" width="128px" src="https://github.com/craftablescience/sourcepp/blob/main/branding/logo.png?raw=true" alt="The Source Pretty Parsers logo. A printer-esque device is scanning a page with hex codes and printing a picture of Cordon Freeman." /> <h1>Source Pretty Parsers</h1> </div>

<div> <a href="https://github.com/craftablescience/sourcepp/actions" target="_blank" rel="noreferrer"><img src="https://img.shields.io/github/actions/workflow/status/craftablescience/sourcepp/build.yml?label=Build&logo=github&logoColor=%23FFFFFF" alt="Build Status" /></a> <a href="https://github.com/craftablescience/sourcepp/blob/main/LICENSE" target="_blank" rel="noreferrer"><img src="https://img.shields.io/github/license/craftablescience/sourcepp?label=License&logo=libreofficewriter&logoColor=%23FFFFFF" alt="License" /></a> <a href="https://discord.gg/ASgHFkX" target="_blank" rel="noreferrer"><img src="https://img.shields.io/discord/678074864346857482?label=Discord&logo=Discord&logoColor=%23FFFFFF" alt="Discord" /></a> <a href="https://ko-fi.com/craftablescience" target="_blank" rel="noreferrer"><img src="https://img.shields.io/badge/donate-006dae?label=Ko-fi&logo=ko-fi&logoColor=%23FFFFFF&color=%23B238A1" alt="Ko-Fi" /></a> </div>

Several modern C++20 libraries for sanely parsing Valve formats.

Other Languages

<div> <a href="https://pypi.org/project/sourcepp" target="_blank" rel="noreferrer"><img alt="Version" src="https://img.shields.io/pypi/v/sourcepp?logo=python&logoColor=%23FFFFFF&label=PyPI%20Version" /></a> <a href="https://pypi.org/project/sourcepp" target="_blank" rel="noreferrer"><img src="https://img.shields.io/pypi/pyversions/sourcepp?logo=python&logoColor=%23FFFFFF&label=Python%20Versions" alt="Python Versions" /></a> </div>

Wrappers for libraries considered complete exist for C, C#, and/or Python, depending on the library.

The Python wrappers can be found on PyPI in the sourcepp package.

Included Libraries

<table> <tr> <th>Library</th> <th>Supports</th> <th>Read</th> <th>Write</th> <th>Bindings</th> </tr> <tr></tr> <tr> <td rowspan="1"><code>bsppp</code></td> <td> <a href="https://developer.valvesoftware.com/wiki/BSP_(Source)" target="_blank" rel="noreferrer">BSP</a> v17-27 <br> • Console modifications <br> • Left 4 Dead 2 modifications <br> • <a href="https://stratasource.org" target="_blank" rel="noreferrer">Strata Source</a> modifications </td> <td align="center">✅</td> <td align="center">✅</td> <td rowspan="1" align="center">Python</td> </tr> <tr></tr> <tr> <td rowspan="1"><code>fspp</code><sup></sup></td> <td>Source 1 filesystem accessor</td> <td align="center">✅</td> <td align="center">✅</td> <td rowspan="1" align="center"></td> </tr> <tr></tr> <tr> <td rowspan="3"><code>gamepp</code></td> <td>Get Source engine instance window title/position/size</td> <td align="center">✅</td> <td align="center">❌</td> <td rowspan="3" align="center">C<br>C#<br>Python</td> </tr> <tr></tr> <tr> <td>Run commands in a Source engine instance remotely</td> <td align="center">❌</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td rowspan="5"><code>kvpp</code></td> <td> <a href="https://developer.valvesoftware.com/wiki/DMX" target="_blank" rel="noreferrer">DMX</a> <br> • Legacy binary v1-2 encoding (<code>binary_vN</code>) <br> • Legacy SFM v1-9 encoding (<code>sfm_vN</code>) <br> • Binary v1-5, v9 encodings (<code>binary</code>, <code>binary_seqids</code>) <br> • <a href="https://github.com/TeamSpen210/srctools" target="blank" rel="noreferrer">srctools</a> encodings (<code>unicode</code>) </td> <td align="center">✅</td> <td align="center">❌</td> <td rowspan="5" align="center">Python</td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/KeyValues" target="_blank" rel="noreferrer">KeyValues</a> v1 Binary</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/KeyValues" target="blank" rel="noreferrer">KeyValues</a> v1 Text<sup>†</sup></td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td rowspan="5"><code>mdlpp</code><sup>*</sup></td> <td><a href="https://developer.valvesoftware.com/wiki/MDL(Source)" target="_blank" rel="noreferrer">MDL</a> v44-49</td> <td align="center">✅</td> <td align="center">❌</td> <td rowspan="5" align="center"></td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/VTX" target="_blank" rel="noreferrer">VTX</a> v7</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/VVD" target="_blank" rel="noreferrer">VVD</a> v4</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td rowspan="3"><code>sndpp</code><sup>*</sup></td> <td>WAV</td> <td align="center">✅</td> <td align="center">❌</td> <td rowspan="3" align="center"></td> </tr> <tr></tr> <tr> <td>XWV v0-1, v4</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td rowspan="5"><code>steampp</code></td> <td>Find Steam install folder</td> <td align="center">✅</td> <td align="center">-</td> <td rowspan="5" align="center">C<br>C#<br>Python</td> </tr> <tr></tr> <tr> <td>Find installed Steam games</td> <td align="center">✅</td> <td align="center">-</td> </tr> <tr></tr> <tr> <td>Find Steam game library assets</td> <td align="center">✅</td> <td align="center">-</td> </tr> <tr></tr> <tr> <td rowspan="3"><code>toolpp</code></td> <td> <a href="https://developer.valvesoftware.com/wiki/FGD" target="_blank" rel="noreferrer">FGD (Source 1)</a> <br> • <a href="https://jack.hlfx.ru/en" target="_blank" rel="noreferrer">J.A.C.K.</a> modifications <br> • <a href="https://ficool2.github.io/HammerPlusPlus-Website" target="_blank" rel="noreferrer">Hammer++</a> modifications <br> • <a href="https://stratasource.org" target="_blank" rel="noreferrer">Strata Source</a> modifications </td> <td align="center">✅</td> <td align="center">✅</td> <td rowspan="3" align="center">Python</td> </tr> <tr></tr> <tr> <td> <a href="https://developer.valvesoftware.com/wiki/Command_Sequences" target="_blank" rel="noreferrer">WC</a> (CmdSeq) v0.1-0.2 <br> • <a href="https://ficool2.github.io/HammerPlusPlus-Website" target="_blank" rel="noreferrer">Hammer++</a> modifications <br> • <a href="https://stratasource.org" target="_blank" rel="noreferrer">Strata Source</a> modifications </td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td rowspan="3"><code>vcryptpp</code></td> <td><a href="https://developer.valvesoftware.com/wiki/VICE" target="_blank" rel="noreferrer">VICE</a> encrypted files</td> <td align="center">✅</td> <td align="center">✅</td> <td rowspan="3" align="center">C<br>C#<br>Python</td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/Vfont" target="_blank" rel="noreferrer">VFONT</a> encrypted fonts</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td rowspan="33"><code>vpkpp</code></td> <td>007 v1.1, v1.3 (007 - Nightfire)</td> <td align="center">✅</td> <td align="center">❌</td> <td rowspan="33" align="center">C<br>C#<br>Python</td> </tr> <tr></tr> <tr> <td>APK (Fairy Tale Busters)</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>FGP v2-3 (PS3, Orange Box)</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>FPX v10 (Tactical Intervention)</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/GCF_archive" target="_blank" rel="noreferrer">GCF</a> v6</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td>GMA v1-3 (Garry's Mod)</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>HOG (Descent)</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td>OL (Worldcraft Object Library)</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td>ORE (Narbacular Drop)</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td> <a href="https://quakewiki.org/wiki/.pak" target="blank" rel="noreferrer">PAK</a> (Quake, WON Half-Life) <br> • <a href="https://en.wikipedia.org/wiki/Sin(video_game)" target="_blank" rel="noreferrer">SiN</a> modifications <br> • <a href="https://store.steampowered.com/app/824600/HROT" target="_blank" rel="noreferrer">HROT</a> modifications </td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://docs.godotengine.org/en/stable/tutorials/export/exporting_pcks.html" target="_blank" rel="noreferrer">PCK</a> v1-2 (Godot Engine)</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td> <a href="https://developer.valvesoftware.com/wiki/VPK" target="_blank" rel="noreferrer">VPK</a> pre-v1, v1-2, v54 <br> • <a href="https://www.counter-strike.net/cs2" target="_blank" rel="noreferrer">Counter-Strike: 2</a> modifications <br> • <a href="https://clientmod.ru" target="_blank" rel="noreferrer">Counter-Strike: Source ClientMod</a> modifications </td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>VPK (Vampire: The Masquerade - Bloodlines)</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>VPP v1-3 (Red Faction)</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td>WAD v3</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>XZP v6 (Xbox, Half-Life 2)</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td> ZIP <br> • <a href="https://github.com/BEEmod/BEE2-items" target="_blank" rel="noreferrer">BEE_PACK</a> alias (BEE2.4 Package) <br> • <a href="https://developer.valvesoftware.com/wiki/Bonus_Maps" target="_blank" rel="noreferrer">BMZ</a> alias (Source 1 Bonus Maps) <br> • FPK alias (Tactical Intervention) <br> • <a href="https://doomwiki.org/wiki/PK3" target="_blank" rel="noreferrer">PK3</a> alias (Quake III) <br> • <a href="https://doomwiki.org/wiki/PK4" target="_blank" rel="noreferrer">PK4</a> alias (Quake IV, Doom 3) <br> • PKZ alias (Quake II RTX) <br> • XZP2 modifications (X360 & PS3, misc. Source 1 titles) </td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td rowspan="37"><code>vtfpp</code></td> <td><a href="https://wiki.mozilla.org/APNG_Specification" target="_blank" rel="noreferrer">APNG</a></td> <td align="center">✅</td> <td align="center">❌</td> <td rowspan="37" align="center">C<br>C#<br>Python</td> </tr> <tr></tr> <tr> <td><a href="https://en.wikipedia.org/wiki/BMP_file_format" target="_blank" rel="noreferrer">BMP</a></td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://openexr.com" target="_blank" rel="noreferrer">EXR</a> v1</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>FRAMES (PS3, Orange Box)</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td><a href="https://en.wikipedia.org/wiki/GIF" target="_blank" rel="noreferrer">GIF</a></td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td><a href="https://en.wikipedia.org/wiki/RGBE_image_format" target="_blank" rel="noreferrer">HDR</a></td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://en.wikipedia.org/wiki/JPEG" target="_blank" rel="noreferrer">JPEG</a></td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>PIC</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td><a href="https://en.wikipedia.org/wiki/PNG" target="_blank" rel="noreferrer">PNG</a></td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://netpbm.sourceforge.net/doc/pnm.html" target="_blank" rel="noreferrer">PNM</a> (PGM, PPM)</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/PPL" target="_blank" rel="noreferrer">PPL</a> v0</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://www.adobe.com/creativecloud/file-types/image/raster/psd-file.html" target="_blank" rel="noreferrer">PSD</a></td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td><a href="https://qoiformat.org" target="_blank" rel="noreferrer">QOI</a></td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://developer.valvesoftware.com/wiki/Animated_Particles" target="_blank" rel="noreferrer">SHT</a> v0-1</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://en.wikipedia.org/wiki/Truevision_TGA" target="blank" rel="noreferrer">TGA</a></td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>TTX (TTH, TTZ) v1.0</td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td>VBF v3</td> <td align="center">✅</td> <td align="center">❌</td> </tr> <tr></tr> <tr> <td> <a href="https://developer.valvesoftware.com/wiki/VTF(Valve_Texture_Format)" target="_blank" rel="noreferrer">VTF</a> v7.0-7.6 <br> • <a href="https://stratasource.org" target="blank" rel="noreferrer">Strata Source</a> modifications <br> • <a href="https://developer.valvesoftware.com/wiki/Half-Life_2(Xbox)/Modding_Guide" target="_blank" rel="noreferrer">XTF</a> v5.0 (Xbox, Half-Life 2) <br> • <a href="https://developer.valvesoftware.com/wiki/VTFX_file_format" target="_blank" rel="noreferrer">VTFX</a> v8 (X360 & PS3, Orange Box) <br> • <a href="https://developer.valvesoftware.com/wiki/VTFX_file_format" target="_blank" rel="noreferrer">VTF3</a> v8 (PS3, Portal 2 & CS:GO) </td> <td align="center">✅</td> <td align="center">✅</td> </tr> <tr></tr> <tr> <td><a href="https://developers.google.com/speed/webp" target="_blank" rel="noreferrer">WebP</a></td> <td align="center">✅</td> <td align="center">✅</td> </tr> </table>

(*) 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.

Anything using the sourcepp parser set that I know of, directly or indirectly.

These are only the tools and games using sourcepp that I know of. If you would like to be listed here, email me or join my Discord server, I'd love to hear from you!

Tools

  • fgptool: A tool to crack the filepath hashes in The Orange Box PS3 file groups.
  • fOptimizer: A GUI-based collection of tools written in Python for cutting down on unnecessarily bloated Garry's Mod addon sizes.
  • gimp-vtf: A GIMP plugin to load and save VTF files.
  • gm_addon_optimization_tricks: A desktop tool to optimize Garry's Mod addons/maps.
  • GodotSource: A work-in-progress set of bindings to connect the sourcepp libraries to Godot. Allows GDScript to work with the libraries, and allows Godot to directly load Source engine assets from a user project or from installed Source games.
  • MareTF: An open source MIT-licensed CLI/GUI tool that can create, extract from, preview the contents of and write to every variant of VTF file. Replicates the functionality of Valve's vtex.exe and VTFEdit.
  • Myst IV: Revolution: Performs various fixes for the game Myst IV: Revelation.
  • PBR-2-Source: A Python-powered GUI for converting PBR materials into materials compatible with the Source engine.
  • QVTF++: A QImageIO plugin to load VTF textures, based on panzi's QVTF plugin.
  • RectMaker: A freeware GUI tool that can create and modify .rect files used in Hammer++'s hotspotting algorithm.
  • reloaded2ps3: Convert the PC version of Portal Reloaded to a playable PS3 game.
  • Verifier: A small program that can build an index of a game's files, and validate existing files based on that index. Similar to Steam's "Verify integrity of game files" option, but without overwriting any files.
  • VPKEdit: An open source MIT-licensed CLI/GUI tool that can create, extract from, preview the contents of and write to several pack file formats. Replicates the functionality of Valve's vpk.exe and GCFScape.
    • bsp-linux-fix: Patches maps which have improperly cased packed assets by repacking the assets, fixing an issue on Linux.
    • CS2-EomVotesFix: Fixes displaying workshop map names and thumbnails during end-of-match voting for LAN events.
    • dham: Modifies Dota 2 hero aliases based on a configuration file and packages the changes.
    • Linux BSP Case Folding Workaround: A bash script designed to resolve issues with improperly cased packed map assets in Source engine games on Linux. Extracting the assets allows the game to find them properly.
    • props_scaling_recompiler: Allows converting prop_scalable into a static prop, effectively implementing static prop scaling outside CS:GO.
    • rock:sail: CS2 client-side tool to use skins for free (only visible to the user of the tool).
    • vpk2wad_nd: Converts textures in a VPK to a WAD that can be used by Narbacular Drop maps.
  • VTF Forge: A modern multiplatform recreation of VTFEdit, using Qt.
  • VTF Thumbnailer: Adds previews for VTF files in your file explorer of choice on Windows and Linux.

Games

<table> <tr> <td><a href="https://store.steampowered.com/app/440000/Portal_2_Community_Edition/" target="_blank" rel="noreferrer"><img width="250px" src="https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/440000/header.jpg" alt="Portal 2: Community Edition"/></a></td> <td> <ul> <li>Local addon assets are packed with <code>sourcepp</code>.</li> <li>Verifier and VPKEdit are shipped with the game.</li> </ul> </td> </tr> <tr> <td><a href="https://store.steampowered.com/app/669270/Momentum_Mod/" target="_blank" rel="noreferrer"><img width="250px" src="https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/669270/header.jpg" alt="Momentum Mod"/></a></td> <td> <ul> <li>Some bundled textures are created and/or compressed with MareTF.</li> <li>Some bundled assets are packed with VPKEdit.</li> </ul> </td> </tr> <tr> <td><a href="https://store.steampowered.com/app/2954780/Nightmare_House_The_Original_Mod/" target="_blank" rel="noreferrer"><img width="250px" src="https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/2954780/header.jpg" alt="Nightmare House: The Original Mod"/></a></td> <td> <ul> <li>Game assets are packed with VPKEdit.</li> </ul> </td> </tr> </table>

Special Thanks

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2026.3.9 89 3/9/2026