About this project
UnityDataTools is a command-line tool and showcase of the UnityFileSystemApi native dynamic library, aimed at analyzing the content of Unity data files such as AssetBundles and Player content. It runs directly on Unity data files without requiring the Editor, covering most functionality of Unity's WebExtract and binary2text tools with better performance, and adds capabilities such as generating a SQLite database for detailed build content analysis. It is designed to scale for large build outputs and has been used to fine-tune large Unity-based games.
The tool also analyzes Unity Addressables build reports, automatically detecting and parsing Addressables JSON build outputs to extract information about bundles, assets, dependencies, file sizes, and build performance metrics.
Installation: builds for Windows, macOS (Apple Silicon) and Linux are attached to each release and are self-contained, bundling the executable, the native UnityFileSystemApi library, and offline documentation. No .NET runtime is required. Intel Macs have no published build and must build from source. The README provides PowerShell and shell commands to download, unzip, and verify the version, and notes that checksums.txt holds SHA-256 hashes.
Documentation covers Unity content formats (SerializedFiles, Unity Archives, TypeTrees, AssetBundle format, Player build format, content directory format, ContentLayout.json) and tool usage (command-line reference, Analyzer, database schema, example queries, AI agent workflow, comparing builds, Addressables build reports, build reports).
The repository is organized in three layers: base libraries that read Unity binary formats (UnityFileSystem, UnityBinaryFormat, UnityDataModels), feature libraries that turn raw data into useful output (Analyzer for SQLite databases, TextDumper for human-readable dumps, ReferenceFinder for reference chains, Archive and SerializedFile inspectors), and the UnityDataTool command-line executable that wires them together and exposes commands such as analyze, dump, find-refs, archive, and serialized-file.
UnityFileSystemApi is compiled from Unity source code and exposes core functionality to open and read Unity Archive and Serialized File formats, including navigating TypeTrees so objects can be read generically without hardcoded type knowledge. It is backward compatible but not forward compatible, and is also distributed in the Data/Tools folder of the Unity Editor since 2022.1.0a14. The repository includes pre-compiled copies for Windows, Mac, and Linux.
Building requires cloning the repository, installing the .NET 9.0 SDK, optionally replacing the bundled UnityFileSystemApi library with one from a Unity Editor installation, and running dotnet build -c Release. Tests and shared test data are included, with two Unity projects (Baseline and LeadingEdge) used to regenerate test data.
The project is the evolution of the AssetBundle Analyzer by Francis Pagé, which first introduced SQLite database analysis of Unity build output but was slow and fragile due to reliance on WebExtract and binary2text. UnityDataTools and UnityFileSystemApi were created to provide fast, reliable access to Unity data files. The project is provided as-is and is not officially supported by Unity; it is described as experimental, with bug reports and pull requests welcome but support not guaranteed.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.