Media Validation

Know exactly what's in your project

BranchPy Studio scans your Ren'Py project, classifies every media file, and verifies usage — highlighting missing references and flagging cleanup opportunities while protecting the assets your engine depends on. Everything is read-only and surfaced for your review.

Media inventoryMissing-asset detectionProtected-path safetyReference scanningReview tiers
BranchPy Studio Media validation screen — asset catalog with usage and issue badges

The Media screen in BranchPy Studio — every asset classified, with missing and unreferenced files surfaced for review.

The Ren'Py asset problem other tools get wrong

Most scanners flag every file that isn't explicitly referenced in a script as "unused." In Ren'Py that's dangerous: your game/gui/ folder holds dozens of images the engine needs at runtime, and none of them appear in script.rpy. Treating them as deletable silently breaks your game.

BranchPy Studio classifies files before showing them to you. Engine-managed paths are marked Protected and kept out of any action set. Nothing is deleted or modified for you — BranchPy validates, highlights, and reports, and every decision stays in your hands.

Capabilities

What it validates

Media inventory

A complete count of every file on disk by type — image, audio, video — with a referenced vs. unreferenced breakdown.

Reference scanning

Scans image, show, scene, play, voice, and Python API calls across every .rpy file to map what's actually used.

Missing-asset detection

Files referenced in scripts but absent from disk are highlighted immediately — before they become a runtime error on some rarely-reached label.

Protected-path classification

Engine-managed paths — gui/, renpy/, common/, launcher/, fonts/ — are classified and kept out of any selectable action.

Review tiers & confidence

Unreferenced files are grouped into Cleanup Candidate, Needs Review, and Dynamic Risk tiers with a deterministic confidence score and a reason per file.

Teach BranchPy your project

Define how your project loads media at runtime with project rules stored in .branchpy.toml. A live preview shows match counts and precedence before any rule is saved.

How it works

Scan, classify, review

A read-only pipeline that gives you an honest picture without ever touching your files.

1

Scan

BranchPy inventories every media file and scans all .rpy references to see what's actually used.

2

Classify

Each file gets one status — Used, Protected, Unreferenced, or Missing — with a reason you can inspect.

3

Review

Unreferenced files are tiered by confidence and surfaced for review. You decide what to do — nothing is removed for you.

Four statuses, one honest picture

Every file in your project gets exactly one classification.

StatusWhat it means
Used Referenced in at least one .rpy file via image, show, play, or similar, and present on disk.
Protected Lives in an engine-managed path (gui/, renpy/, common/, launcher/, fonts/). Never offered for any action.
Unreferenced Not detected in this scan. May still be loaded dynamically — shown for review, with a reason, not for automated cleanup.
Missing Referenced by a script but absent from disk — a runtime error waiting to happen, highlighted immediately.

Free for Ren'Py creators

Media Validation is included in Ren'Py Creator (free). Install BranchPy Studio, open your project, and see everything in under a minute.