A command-line tool for comparing .uasset files to identify differences between two versions of a game’s assets.
This tool was developed to help modders track changes between game updates and replicate modified assets in their own Unreal Engine 4 projects. Since the game does not provide any modding API, assets often need to be recreated manually. This tool streamlines the process by highlighting differences.
You can also explore the results using the web viewer:
- Compares individual
.uassetfiles or directories. - Supports filtering by referenced dependencies from UE4 project.
- Provides option to handle renamed files.
- Optionally focuses on Blueprint assets only.
- Outputs results to console or file.
- Supports output to JSON (it could be opened using web viewer).
- Grab the latest binary from Releases and unpack it anywhere.
- Run the tool using command line. See command usage below.
UAssetDiffTool.exe <pathA> <pathB> [options]- Clone and build UAssetAPI manually. It's not available on NuGet.
- Clone this repository
- In the solution for UAssetDiffTool, add a project reference to the built UAssetAPI
- Build
UAssetDiffTool.exe <pathA> <pathB> [options]pathA: Path to the first.uassetfile or directory (e.g. old version).pathB: Path to the second.uassetfile or directory (e.g. new version).
-
--output <file>If set, writes output to a file instead of the console. -
--json-output <file>If set, also writes a detailed JSON report of the diffs to the specified file. The resulting JSON can be visualized using the web viewer. -
--pretty-jsonEnable indented (pretty) formatting for JSON output. -
--renamed-files <file>Path to a file listing renamed files (space-separated pairs).
Example:Content/main/lib1.uasset Content/main/lib.uasset Content/audio/misc/att_default.uasset Content/audio/misc/att_default_AO.uasset -
--filter-by-deps <file>Only show diffs for assets listed in a UE4 dependency file.
See workflow section below for how to generate it. -
--diff-types <Added|Removed|Changed>Types of differences to include. Can be multiple values, separated by commas or spaces.
Default:Added,Removed,Changed -
--blueprints-onlyOnly include assets that are Blueprint classes (i.e., have functions or properties). -
--expand-added-itemsShow child diffs for items marked as Added.
-
Extract game assets using FModel for both the old and new game versions.
-
Put them in two folders:
/old-game-assets/... /new-game-assets/... -
Generate a dependency list from UE4:
- Select relevant assets (e.g., your mod folders) in Content Browser.
- Right-click →
Reference Viewer. - Right-click your selected assets node →
Copy referenced objects list. - Paste into a
.txtfile, e.g.project-deps.txt.
-
First comparison run:
UAssetDiffTool.exe \ old-game-assets \ new-game-assets \ --output diff.txt \ --json-output diff.json \ --filter-by-deps project-deps.txt
-
Handle renamed assets:
- Manually inspect removed/added assets and note file renames.
- Create
renamed-files.txtwith the old and new file paths (space-separated).
-
Final run with rename mapping:
UAssetDiffTool.exe \ old-game-assets \ new-game-assets \ --output diff.txt \ --json-output diff.json \ --filter-by-deps project-deps.txt \ --renamed-files renamed-files.txt
-
View results:
- Open the JSON file in the web viewer to browse diffs interactively.
- Asset 'objects\test' Removed
+ Asset 'objects\coolBox' Added
~ Asset 'main\lib1' Changed
Path: main\lib1 => main\lib
~ Asset 'objects\actorChipPile' Changed
Property changes:
- Property 'flameBase' Removed
+ Property 'fireHealth' Added
Function changes:
~ Function 'microwave' Changed
Input param changes:
+ Property 'microwave' Added
~ Function 'getActionOptions' Changed
Input param changes:
+ Property 'numberIn' Added
- Function 'turnToPile1' Removed
+ Function 'turnToPile' Added
This project is licensed under the MIT License.
