Replace the third-party package engines with Packwright.Pkg, an engine of its own: package reader, validator, writer, Kraken compression and a metadata-only package editor. Remove ProsperoPkgTool and the LibProsperoPkg 1.2.0 payload, add optional user-imported compatibility keys, update the README, notices and credits.
Packwright
One app to manage your PS5 dump and image collection, read PS5 packages, fix their details, and build, convert and send them. For Windows, Linux and macOS.
Packwright grew out of PS5 PKG Tool by pearlxcore (GPL-3.0), and its exFAT, FFPKG and FFPFSC image code, library scanner and task queue still come from that project. Thank you to pearlxcore. Details are in License and credits.
This is not software for obtaining free PS5 games.
PlayStation and PS5 are trademarks of Sony Interactive Entertainment Inc. This project is independent and is not affiliated with, authorized or endorsed by Sony. No Sony software, SDK files or keys are included.
Experimental: Images and packages generated by this app have been validated and compared on PC, but they have not been tested on a jailbroken PS5. A successful build or validation does not guarantee that an image will mount, or that a package will install, launch, or play correctly on real hardware. The same goes for Send to console, which has only been tested against a simulated console. Keep backups and use generated output at your own risk.
Contents
- Highlights
- Download and install
- macOS help
- Getting started
- Features
- Command line
- Searching your library
- Where your data lives
- Platform support
- Build from source
- Releases
- Project layout
- License and credits
Highlights
- Library of dumps, packages and images as artwork cards or a sortable list, with a search language, grouping, saved views and a details panel.
- Fix missing details: autofill what it can from the files, look titles up by Title ID, and edit names, IDs, firmware and icons, in the library or inside the file.
- Image and package tools: convert between folders, exFAT, FFPKG, FFPFSC, ZArchive and debug packages (FPKG) in every direction, verify, extract, edit and rebuild with new details, repair and edit files inside images, with presets.
- Library health report: moved or unreadable files, duplicates, superseded updates, wasted space and more.
- Send to console over FTP, or ask a console's installer to download a package from your PC.
- Export the library as CSV, JSON or a web page with artwork.
- Command line for scripts and servers.
- Real installers for every system, with a built-in update check that you control.
Download and install
Download the installer for your system from the latest release. Everything is self-contained, so no .NET install is needed.
| System | Download | Install |
|---|---|---|
| Windows 10/11 (64-bit) | Packwright-Setup-v<version>-windows-x64.exe |
run it (no administrator rights needed) |
| macOS, Apple silicon | Packwright-v<version>-macos-arm64.dmg |
open it, drag Packwright onto Applications |
| macOS, Intel | Packwright-v<version>-macos-x64.dmg |
open it, drag Packwright onto Applications |
| Linux (64-bit), Debian, Ubuntu, Mint | Packwright-v<version>-linux-x64.deb |
your software installer, or sudo apt install ./<file>.deb |
| Linux (64-bit), Fedora, openSUSE, RHEL | Packwright-v<version>-linux-x64.rpm |
your software installer, or sudo dnf install ./<file>.rpm |
- Uninstall: Windows, Settings > Apps (or the Start menu entry); macOS, delete Packwright from Applications; Linux,
sudo apt remove packwrightorsudo dnf remove packwright. - Windows: the installer is not code-signed, so Windows may say the publisher is unknown.
- macOS: the app is not notarized by Apple, so macOS asks for your approval the first time you open it. See macOS help for the steps.
- Linux: the package adds a menu entry and a
packwrightcommand (see Command line). - Each release also has
SHA256SUMS.txtso you can verify a download.
Packwright only writes to your user profile (settings, library cache and thumbnails), never to the install folder.
macOS help
Packwright needs macOS 13 (Ventura) or later. The macOS builds are less tested than the Windows one, so please report anything odd.
1. Pick the right download
Open the Apple menu, choose About This Mac and look at the line Chip or Processor:
- Apple M1, M2, M3, M4... (Apple silicon):
Packwright-v<version>-macos-arm64.dmg - Intel:
Packwright-v<version>-macos-x64.dmg
2. Install
- Double-click the downloaded
.dmg. - Drag Packwright onto the Applications shortcut in the window that opens.
- Eject the disk image (the eject button next to it in Finder's sidebar), then you can delete the
.dmg.
3. Open it the first time
Packwright is not notarized by Apple (that needs a paid Apple developer account), so macOS shows a warning such as "Apple could not verify Packwright is free of malware" the first time. This is expected, and you only have to do it once. Following Apple's own steps (Safely open apps on your Mac):
- Open Packwright from Applications. When the warning appears, click Done (or OK).
- Open the Apple menu, then System Settings, then Privacy & Security.
- Scroll down to the Security section. You will see a note that "Packwright" was blocked. Click Open Anyway and enter your password or use Touch ID.
- Click Open in the next prompt.
From then on, Packwright opens with a normal double-click.
On macOS 14 (Sonoma) and earlier you can instead Control-click (or right-click) Packwright in Applications, choose Open, then click Open again.
Only do this for downloads you got from this project's releases page. You can check a download against SHA256SUMS.txt in Terminal with shasum -a 256 <file>.dmg.
If it still will not open
-
"Packwright is damaged and can't be opened" is macOS's wording for a blocked download. Run this once in Terminal, then open the app again:
xattr -cr /Applications/Packwright.app -
The window does not appear: open Terminal and run
/Applications/Packwright.app/Contents/MacOS/Packwright version. If it prints a version, the app is fine and the problem is only the permission step above. If you report a bug, include the log (Log page, then Open log folder). -
Files and folders: the first time Packwright reads a folder on an external drive, Downloads or Desktop, macOS asks whether to allow it. Choose Allow, or add Packwright under System Settings, Privacy & Security, Files and Folders (or Full Disk Access).
Updating and removing
- Update: Packwright can check for new versions (About, then Check for updates). It downloads and verifies the new
.dmg; open it and drag Packwright onto Applications again, choosing Replace. - Uninstall: quit Packwright and drag it from Applications to the Bin. Its settings and library cache live in
~/.local/share/Packwright; delete that folder too if you want a clean removal. - Command line:
/Applications/Packwright.app/Contents/MacOS/Packwright help(see Command line).
Getting started
-
Open Library and choose Add folder. Point it at a folder with PS5 dumps,
.pkgfiles or images. Use More > Add a package or image file for a single item. -
Browse your collection as artwork cards or as a list. Select a game to see its details on the right.
-
Right-click a game for the things you can do with it: convert or build, extract or verify it, edit its details, send it to a console, rename, move or delete it.
-
Open Tools to convert, extract, verify or repair something. The source can come from the library, the file pickers, drag and drop onto the window, or the command line:
Packwright "D:\Games\MyGame" Packwright --open "D:\Games\MyGame.pkg" -
Every job is queued on the Tasks page, where you can follow progress, cancel, retry or clear it. Queued work survives a restart.
Packwright runs as one window: starting it again brings the open window to the front. It remembers the window's size, position and whether it was maximized.
Features
Library
- Scans folders for unpacked dumps, PS5
.pkgfiles,.ffpfsc,.ffpkgand.exfatimages, and ZArchive (.zar) files. - Cards with game artwork, or a list. In the list, click a column name to sort (click again to reverse) and right-click a column header to choose which columns are shown.
- Group by family (base game, updates and DLC together), Title ID, category, region, format or firmware. Updates that a newer patch replaces are marked.
- A search language and saved views that remember the search, filters, grouping, sort and columns.
- Rename with a preview (presets or your own format), rename packages by install order, move, delete, find duplicates, and list updates or DLC that are missing a base game.
- Export what is shown (More > Export what is shown) as a CSV spreadsheet, a JSON file, or a single web page with artwork, summary figures, search and sortable columns that loads nothing from the internet. For JSON and the web page you choose whether file paths are included.
- The layout adapts to the window: the details panel becomes a slide-over and the sidebar shrinks to icons when the window is narrow.
Game details
- Overview, artwork (with save), trophies (with icon export), activities, executable, package data, statistics and raw
param.json. - A file explorer for dumps, images and packages: a folder tree with icons, sizes and file counts, filtering, extraction of single files, whole folders or everything, and a preview for images (including DDS), text and raw bytes. It can also open in its own window with the preview beside the tree.
Fix and complete details
- Edit details and icon of any title (right click it, or use Edit details in the details panel). Every detail the Overview shows can be changed: title, Title ID, Content ID, region, Concept ID, category, version, master version, required firmware, SDK version, DRM, default language, created date, tool version and the declared features (HDR, VRR, 120 Hz, PS VR2, PS5 Pro and so on), plus the icon. The region is the first two letters of the Content ID, so choosing one rewrites it. Format, size and path describe the file itself and cannot be edited. Keep the change in the library only, or write it into the file itself or a new copy: dump folders, exFAT, FFPKG, FFPFSC, ZArchive and debug packages are supported. If a dump or archive has no
param.json, one is created. Packages are rebuilt as debug packages (retail or encrypted ones cannot be), and the builder sets their required firmware from the game's SDK. - Autofill missing details: titles that lack a
param.jsonare marked "Missing details" (search them withmissing:yes). Autofill missing in Edit details, or More > Fix missing details for the whole library, works out what it can from the title itself (nptitle.dat, trophy data, the executable header, artwork) and from its file and folder names, shows you what it found and where it came from, and saves it only when you confirm. It never uses the network. Dumps that were stripped of their metadata may have little to go on. - Search PlayStation Network: in Edit details, one button looks up the title's Title ID (read from the file or its name) in a public PS5 title list (andshrew's list, a 2 MB file downloaded once from GitHub and kept on your computer) and shows the matching entries to pick from. Picking one fills the title, Title ID, content ID and, from the PlayStation Store, the icon. You can also search by game name. More > Look up missing details online does this for the whole library for every title that has a Title ID. The only things sent are that one file download and, for icons, the game's name to store.playstation.com, about one request per second and only when you ask. The store search is not an official API and can change.
Library health
The Health page checks the whole library at a glance: files that were moved or deleted, files that cannot be read, missing details, file names that disagree with their Title IDs, updates without their base game, exact duplicates, older copies and superseded updates (with the space they take), and drives that are nearly full. Check files too also looks inside every title for a missing icon and checks unpacked dumps for launch problems. Each issue has buttons to show the title in the Library, fix its details, or open its folder, and the report can be exported as Markdown. Nothing is deleted for you.
Image tools
- Convert between dump folders and exFAT, FFPKG, FFPFSC and ZArchive (
.zar) images, or build a debug package (FPKG) from a dump or an image. A.zarcan be used as a source too: extract it, verify it, convert it to another image, or build a package from it. - Presets: save the target and all its options under a name and apply them again in one click. A few presets are built in (for example the smallest FFPFSC, or a reproducible package). A preset never contains the source or output path.
- Extract a dump tree out of an image or package, and verify images and packages. A finished check says "Verified: no problems found" with what was checked and how long it took; a failed one says in plain words what is wrong.
- Edit files inside exFAT and FFPKG images (replace, add, import a folder, create folders, delete). Changes are rebuilt beside the original and swapped in only after verification.
- Repair a damaged exFAT image, refresh the AMPR index, and rebuild FFPKG metadata.
- ZArchive files are written and read by a managed implementation of the ZArchive format (zstd blocks, SHA-256 integrity). A new archive is verified after the build, and a
.zarin your library is browsed in place, without unpacking it.
Debug packages (FPKG)
Packwright has its own package engine (src/Packwright.Pkg). It uses no third-party engine, ships no keys and bundles no Sony files.
- Read, verify, extract: debug packages built with the default passcode (all zeros) or a passcode you enter. Includes inner file browsing, trophies and PlayGo data. Extracting also writes the title's
sce_sysentries, so the result is a complete folder. - Convert: a package becomes a folder, exFAT, FFPKG, FFPFSC or ZArchive, and any of those becomes a package.
- Build from a folder or an image: the Content ID is read from the source. Options: inner compression (Auto, Kraken, uncompressed), compression threads, DRM type, SDK version (written into
param.json), PlayGo chunks (only for a title without PlayGo files), reproducible output. Files are streamed into the package as it is written, so a build needs room only for the package; free space is checked first. - Edit and rebuild: details and icon of a package are changed by rewriting only its metadata, which takes seconds even for a large title. If the Content ID is changed, the package is rebuilt in full.
- Files are taken as they are. Executables are not re-signed. The title's own
keystoneandsce_sys/about/right.sprxare copied when present. When one is missing, Packwright does not make one: it tells you (in the log) that the file is not present and builds the package without it. - Missing icon textures (
icon0.dds,pic*.dds) are generated from the PNG pictures. - Optional keys: a few fields of a package are normally sealed with public RSA values. If you have them, import them under Settings > Compatibility keys (see docs/KEYS.md). Packwright ships none; without them a package is complete and readable on a PC.
- Retail packages are recognized but not decoded: their filesystem is encrypted with a key that is not in the file. Retail keys are for you to supply, and entering one is not available yet.
- Not supported: the install metadata table
naps_meta_18, signing of raw ELF modules, and PlayGo files for titles that bring their own (those are copied unchanged).
Send to console
Right-click a game, image or package and choose Send to console... to put it on a console on your own network.
- FTP upload: large files are streamed, a partly sent file is continued (when the console supports it), a copy that is already there is skipped, and the size is checked afterwards. If the connection drops (a sleeping phone, a Wi-Fi hiccup) Packwright waits and reconnects by itself, up to six times in a row without progress, and shows a countdown. If it finally gives up, the task says why in plain words and Retry on the Tasks page picks up where it stopped. Dump folders upload file by file. It runs as a background task with progress on the Tasks page.
- Install by URL (for a
.pkg): Packwright shares the file from your PC for the length of the download and asks the console's package installer to fetch it. Installer payloads differ in the request they expect, so the request is a template you can adjust; its defaults follow the common "remote package installer" style and are untested on a real console. - Consoles are set up in Settings > Manage consoles (address, FTP port, default folder, Test connection). Console FTP payloads usually let anyone in, so the user name and password can stay empty. A phone or PC running an FTP app normally shows a user name and password to enter there; the password is saved in your settings file, not encrypted, and is never exported.
- Privacy and safety: only addresses on your local network are accepted, and nothing is contacted until you press Send or Test. Your firewall may ask you to allow Packwright while it shares a file.
- Also available as
packwright send(see Command line).
Updates
Packwright can check GitHub for a newer version. It asks once, About > Check for updates works any time, and automatic checks run at most once a day and can be turned off in Settings. When a new version is out you see what is new and the download is checked against the release's SHA256SUMS.txt. On Windows, one button then installs it and restarts Packwright; on Linux and macOS it downloads the right package and tells you how to install it. Nothing is installed without you pressing a button, and the only server contacted is github.com.
Settings and everyday comfort
- Light or dark theme (the moon button at the top of the sidebar), library layout, artwork on or off, output and rename defaults, preview limits, default passcode, optional compatibility keys, confirmation prompts.
- Import and export settings (the passcode is left out unless you ask for it).
- On Windows, an optional "Open with Packwright" entry for Explorer's right-click menu (per user, no administrator rights).
Command line
Everything heavy can also run without the window, for scripts and servers. On Windows use packwright.cmd (installed beside Packwright.exe) so the prompt waits for the result; on Linux the package adds a packwright command, and on macOS run /Applications/Packwright.app/Contents/MacOS/Packwright.
packwright info "D:\Games\PS5\Quake\PPSA01880-app0.zar"
packwright scan D:\Games\PS5 --csv -o library.csv # or --json
packwright health D:\Games\PS5 --md # exit code 1 when a real problem is found
packwright verify game.ffpkg
packwright extract game.pkg -o out-folder --passcode 00000000000000000000000000000000
packwright convert dump-folder --to ffpfsc --level 9
packwright convert game.zar --to exfat --preset "exFAT image with AMPR index"
packwright send big.pkg --to "My PS5" --folder /data/games # FTP; add --install to let the console download a .pkg
packwright consoles # the consoles saved in Settings
packwright help
convert takes the same options as the Tools page (and its presets, saved or built in). Exit codes: 0 done, 1 failed, 2 wrong usage, 130 cancelled. Apart from send, which talks to a console on your local network, the command line only uses local files and never connects to the internet.
Searching your library
Type in the search box. Words are combined with AND, | means OR, and a leading - excludes.
| Term | Matches |
|---|---|
bloodborne |
any field containing the text |
"spider man" |
an exact phrase |
title: id: content: |
name, Title ID, Content ID |
category: role: region: format: |
category (Game, Patch, DLC), role, region, format |
version: fw: path: feature: |
version, required firmware, path, declared feature |
missing:yes |
titles with missing details |
size:>50GB version:>=01.05 |
comparisons (> >= < <=) on size and version |
id:=PPSA12345 |
= after the colon requires an exact match |
-dlc |
hide anything matching |
Example: id:PPSA01 size:>20GB -dlc | category:patch.
Where your data lives
| What | Location |
|---|---|
| Settings (including consoles and presets), library cache, task history | Windows %LOCALAPPDATA%\Packwright, Linux and macOS ~/.local/share/Packwright |
Library-only edits (metadata-overrides.json, overrides/ for custom icons) |
the same folder |
| Logs | logs/ inside that folder (also shown on the Log page) |
| Temporary work files | your system temporary folder (only used when an image has to be unpacked first) |
Delete the folder to reset the app. Setting the PACKWRIGHT_DATA environment variable to a folder makes a separate copy of the app use that folder instead (handy for testing).
Platform support
| Feature | Windows | Linux | macOS |
|---|---|---|---|
| Library, details, file preview | yes | yes | yes |
| exFAT, FFPKG, FFPFSC, ZArchive convert, extract, verify, edit | yes | yes | yes |
| FPKG build (built-in engine), with Kraken compression | yes | yes | yes |
| Send to console, health report, export, command line | yes | yes | yes |
| One-button update install | yes | - | - |
| Explorer context menu | yes | - | - |
The filesystem, image, ZArchive and package code (including Kraken compression) is managed C# and behaves the same everywhere. Linux and macOS builds are produced by the release workflow, but the Windows build has had the most testing.
What works and what does not
Tested on real titles (a 1.1 GB and an 8 GB one): every file comes out identical, and every package digest and seal is recomputed and matches. Nothing has been tested on a console, so a successful check on a PC does not promise that a loader will mount an image or install a package.
| Operation | Folder | exFAT | FFPKG | FFPFSC | ZArchive | Debug package |
|---|---|---|---|---|---|---|
| Read, browse, verify | yes | yes | yes | yes | yes | yes |
| Extract to a folder | - | yes | yes | yes | yes | yes |
| Convert to exFAT / FFPKG / FFPFSC / ZArchive | yes | yes | yes | yes | yes | yes |
| Build a debug package from it | yes | yes | yes | yes | yes | - |
| Edit details and icon (rebuilds with the change) | yes | yes | yes | yes | yes | yes (metadata only, fast) |
| Edit files inside | - | yes | yes | - | - | - |
| Repair / rebuild metadata | - | yes | yes | - | - | - |
Every pair of formats converts in both directions (20 pairs tested).
Cannot do (yet):
- Decode retail packages (needs a key you supply).
- Generate a missing
keystoneorright.sprx; the package is built without it and you are told. - Write
naps_meta_18, sign raw ELF modules. - Guarantee that a console accepts an image or package.
Build from source
Requirements: the .NET 10 SDK. No other tools or sibling repositories are needed.
git clone https://github.com/itsmemac/Packwright.git
cd Packwright
dotnet build Packwright.slnx -c Release
dotnet run --project src/Packwright.App
Publish a self-contained build for one system (run from the repository root):
dotnet publish src/Packwright.App -c Release -r win-x64 --self-contained true -o publish/win-x64
dotnet publish src/Packwright.App -c Release -r linux-x64 --self-contained true -o publish/linux-x64
dotnet publish src/Packwright.App -c Release -r osx-arm64 --self-contained true -o publish/osx-arm64
dotnet publish src/Packwright.App -c Release -r osx-x64 --self-contained true -o publish/osx-x64
Any system can publish for any target.
The installers are built from a publish folder: installer/Packwright.iss (Inno Setup 6, Windows), installer/linux/build-packages.sh (.deb and .rpm, needs dpkg-deb and rpmbuild), and the macOS disk image step in .github/workflows/release.yml.
Releases
Releases are automatic. Every push to main builds the app for Windows, Linux and macOS and publishes a GitHub release named after the <Version> in src/Packwright.App/Packwright.App.csproj. Every download is an installer (a Windows setup program, macOS disk images, and Linux .deb and .rpm packages), attached with SHA256SUMS.txt. There are no zip or tar archives.
- To publish a new version, raise
<Version>and push tomain. - Pushing again without changing the version refreshes that version's release with the new build.
- Changes that only touch Markdown files or
LICENSEdo not trigger a release. - Pull requests are built on all four targets (without publishing) to catch breakage early.
The workflows live in .github/workflows/: release.yml and build.yml.
Project layout
src/
Packwright.App Avalonia application: pages, styles, queue glue, command line
Packwright.Core Packages, parsers, library scanner, builders, FTP client, update checker, task queue
Packwright.Pkg The package engine: reads, verifies, extracts and builds PS5 packages
Packwright.Containers exFAT, PFS/PFSC (FFPFSC) and ZArchive images
Packwright.Ufs2 UFS2 / FFPKG filesystem
installer/ Windows installer script and Linux package builder
third-party/ License texts of bundled components
docs/KEYS.md The optional compatibility key file
docs/ Screenshots
.github/workflows/ Build and release automation
Packwright.slnx Solution
License and credits
Copyright (c) 2026 itsmemac. Packwright is licensed under the GNU General Public License v3.0, with no warranty.
Packwright started from PS5 PKG Tool by pearlxcore (Copyright (c) pearlxcore, GPL-3.0) and has since grown into a different application, with a new cross-platform interface and many new features. Its exFAT, FFPKG and FFPFSC image code, the library scanner and the task queue still come from that project, so its copyright and license notices are kept.
The PS5 package engine (src/Packwright.Pkg) is Packwright's own: it reads, verifies, extracts and builds packages and uses no third-party engine and no third-party binary. It builds on the published format work of the projects below, and the source files taken from them keep their copyright notices.
The changes made in 2026 are listed in THIRD_PARTY_NOTICES.md, which also lists every bundled component, its license and its copyright. The source of each release is the tag with the same version in this repository, and the license texts of the bundled components ship in the licenses folder of the installed app.
- pearlxcore: author of PS5 PKG Tool, the project Packwright grew out of.
- SvenGDK: LibProsperoPKG (GPL-3.0-or-later), whose package format work the Packwright package engine builds on, and the UFS2Tool filesystem code the FFPKG support is based on.
- maxton: LibOrbisPkg (GPL-3.0), from which parts of LibProsperoPKG, and so of the package engine, descend.
- Powzix: ooz (GPL-3.0), the Kraken decoder that the package engine's Kraken code is translated from.
- PSBrew / Renan Barreto: MkPFS.
- kerrdec97: ps5-exfat-builder.
- strongt1me: PS5-Dump-Image-Converter.
- Exzap: the ZArchive format.
- andshrew: the PS5 title list that Title ID lookups use (MIT License).
- Avalonia UI, ZstdSharp, ImageSharp and BCnEncoder.Net.
- Robin Perris for DarkUI, which the original Windows interface was built on.
