Free · MITv1.1.0

Find and fix every asset problem in one panel.

Asset Doctor checks naming conventions, textures, meshes and paths across your Unreal project, fixes most issues with one click, and fails CI builds when someone breaks the rules.

Engine
UE 5.6 · 5.7 · 5.8
Platforms
Win64 · Mac · Linux editor
Type
C++ editor plugin, source included
License
MIT, free for commercial use

Try it right here. This is the real workflow running on 48 sample assets.

Asset DoctorSample project
Asset DoctorProject asset validation
--/100
Project healthNot scanned yet
0Clean assets
This project has not been scanned yetPress Scan project to check 48 sample assets.
0 issues
0 auto-fixable issues
Ready0 assets scannedtridiARTWebsiteContactDiscordDocumentationv1.1.0
10built-in rules, each with its own severity
2 + 1naming presets plus your own table
0assets loaded to run a scan
3ways to run: panel, Data Validation, CI
Features

Everything a lint pass should do.
Nothing it shouldn't.

Naming conventions, your way

Two presets built in: Epic Recommended and Allar Style Guide. Or edit the table. Rows can target subclasses, Blueprint types and Blueprint parent classes, and the most specific row wins.

One-click auto-fix

Renames update every reference and save together with the referencing assets. Leftover redirectors are fixed up by default.

Scans without loading

Checks run on Asset Registry data, so even large projects scan without loading a single package.

Data Validation built in

Issues show up in Validate Assets, validate-on-save and changelist validation, right where your team already looks.

Texture sanity checks

Normal maps get Normalmap compression, masks go linear, colors stay sRGB. Oversized and non power-of-two textures are flagged.

Reference insight

See how many assets use each asset, spot ones that may be unused, and jump to the Reference Viewer in one click.

Path hygiene

Catch package paths that are too long to cook on Windows, assets dumped in /Game and leftover redirectors.

Extensible

Add project-specific checks as Blueprint or C++ rules. They run in the panel, in Data Validation and in CI.

Playground

Type a name. See the fix.

Pick a preset and an asset type to see what Asset Doctor expects. The prefixes and suffixes come straight from the plugin's built-in presets.

Preset
Current
Asset Doctor suggests
    Rules

    10 built-in rules.

    Each rule can be turned off or given a different severity: Info, Warning or Error.

    RuleChecksDefaultAuto-fix
    Naming.ConventionPrefix and suffix per asset typeWarningRename
    Naming.InvalidCharactersSpaces and characters other than A-Z, 0-9 and _ in asset and folder namesWarningRename (assets)
    Path.LengthPackage paths longer than the limit (breaks cooking on Windows)WarningManual
    Path.RootFolderAssets placed directly in /GameWarningManual
    Asset.RedirectorLeftover redirectorsWarningFix up
    Texture.PowerOfTwoNon power-of-two textures (UI texture group skipped)WarningManual
    Texture.MaxSizeTextures above the project limitWarningSets Maximum Texture Size
    Texture.SuffixSettings_N must be Normalmap, masks linear, colors sRGBWarningCompression / sRGB
    StaticMesh.MissingLODsDense non-Nanite meshes with a single LODInfoManual
    StaticMesh.NoCollisionStatic meshes without simple collisionInfoManual

    Full rule reference

    Command line & CI

    Your build server enforces the rules.

    The TAAssetDoctor commandlet scans the project, writes a JSON or CSV report and exits with a code your pipeline understands.

    0Passed
    1Issues at or above -FailOn
    2Setup error
    ci_check.bat
    > UnrealEditor-Cmd.exe MyGame.uproject -run=TAAssetDoctor -Report=Saved/AssetDoctor/report.json -FailOn=Error
    LogTAAssetDoctor: Display: Scanning /Game
    LogTAAssetDoctor: Display: [Error] Naming.Convention | /Game/Meshes/Props/RockMesh | Static Mesh names should start with SM_.
    LogTAAssetDoctor: Display: [Error] Naming.Convention | /Game/Materials/Props/RockMaterial | Material names should start with M_.
    LogTAAssetDoctor: Display: [Warning] Texture.SuffixSettings | /Game/Textures/Rock/T_Rock_N | Normal map ('_N') uses Default; it should use the Normalmap compression setting.
    LogTAAssetDoctor: Display: [Warning] Path.RootFolder | /Game/BP_TestActor | Asset is in the Content root folder. Move it into a subfolder.
    LogTAAssetDoctor: Display: Report written to Saved/AssetDoctor/report.json
    LogTAAssetDoctor: Display: ta Asset Doctor: 48 asset(s) checked in 0.21s. 2 error(s), 2 warning(s), 0 info. 2 issue(s) at or above -FailOn=Error.
    > echo %ERRORLEVEL%
    1
    # 0 = passed · 1 = issues at or above -FailOn · 2 = setup error
    Extend

    Your project, your rules.

    Write checks for the conventions only your studio has. Blueprint rules need no C++. Native rules are discovered automatically. Prefer Asset Registry tags over loading assets to keep scans fast.

    1. Create a Blueprint class with parent TAAssetDoctorRule
    2. Set Rule Id and override the Check Asset function
    3. Add it under Project Settings › Plugins › ta Asset Doctor › Custom Rules
    Custom rules guide
    MyRule_NoUntitled.h
    UCLASS()
    class UMyRule_NoUntitled : public UTAAssetDoctorRule
    {
        GENERATED_BODY()
    public:
        UMyRule_NoUntitled()
        {
            RuleId = TEXT("Project.NoUntitled");
            DefaultSeverity = ETAAssetDoctorSeverity::Error;
        }
    
        virtual void CheckAsset(FTAAssetDoctorContext& Context) const override
        {
            if (Context.AssetData.AssetName.ToString().Contains(TEXT("Untitled")))
            {
                Context.AddIssue(*this, FText::FromString(TEXT("Give this asset a real name.")));
            }
        }
    };
    Get Asset Doctor

    Free. Open source. Ready for UE 5.6 – 5.8.

    Asset Doctor is finishing its release on Fab and GitHub. Join Discord or drop us a line to hear the moment it ships.

    FabComing soonSoon
    GitHubSource + releasesSoon
    FAQ

    Questions, answered.

    Still curious? Read the full FAQ or contact us.

    Is Asset Doctor really free?

    Yes. It is free and open source under the MIT license, including for commercial projects. The full C++ source ships with the plugin.

    Does a scan load my assets?

    No. The checks run on Asset Registry data, so scanning does not load your packages. Fixes only load the assets they change.

    Will renaming break references?

    No. Renames update every reference and are saved immediately together with the assets that reference them. With Fix Up Redirectors After Rename on (the default), no redirectors are left behind.

    Does the texture size fix destroy my source art?

    No. It sets Maximum Texture Size on the texture and keeps the source data untouched, so you can raise the limit again at any time.

    Can I use my own naming convention?

    Yes. Start from the Epic Recommended or Allar Style Guide preset, or build your own table. Rows can target subclasses, Blueprint types (interface, function library, macro library) and Blueprint parent classes.

    How does my team share the settings?

    Settings are stored in Config/DefaultEditor.ini, so they travel with source control and everyone scans with the same rules.

    Why does an asset show 0 references?

    Nothing in the Asset Registry references it, so it may be unused. References from C++, config files or string paths are not detected, so check before deleting.

    Can I write my own checks?

    Yes. Create a Blueprint class based on TAAssetDoctorRule, or derive from UTAAssetDoctorRule in C++. Native rules are discovered automatically.

    Which engine versions and platforms are supported?

    Unreal Engine 5.6, 5.7 and 5.8, in the editor on Win64, Mac and Linux.