A lightweight desktop tool that validates game submission assets (screenshots, banners, key art, logos…) against platform-specific requirements — dimensions, file format, file size, JPEG encoding mode, and more.
Built for Release Managers and production teams who need to verify asset packages before submitting to first parties.
- Automatic detection — point it at a folder, it scans all JPEG, PNG, and PSD files recursively
- Smart matching — assigns each file to the correct rule using filename patterns first, then technical specs, with a manual dropdown fallback for ambiguous cases
- Per-file compliance report — green/red/orange status for each rule, with detailed issue descriptions ("1920x1088, expected 1920x1080", "progressive JPEG, must be baseline", "612 kB, max 500 kB")
- Multi-platform profiles — ships with Nintendo Switch, PlayStation, and Microsoft Store rules out of the box
- Editable rules — TOML-based profiles you can edit directly in the app, or with any text editor. Adding a new platform = creating a new
.tomlfile - Update notifications — checks GitHub Releases on startup and prompts you when a new version is available
- Single binary — no runtime, no installer, just a
.exeyou can drop anywhere
Grab the latest .exe from the Releases page. No installation needed — just run it.
- Select a platform profile (Nintendo Switch, PlayStation, Microsoft Store…)
- Click Browse or paste a folder path
- Review the compliance report
- Reassign any mis-matched files via the dropdown if needed
| Platform | Formats checked | Key constraints |
|---|---|---|
| Nintendo Switch | JPEG, PSD | Baseline JPEG only (no progressive), strict dimensions per asset type |
| PlayStation | JPEG, PNG, PSD | 4K-first dimensions (3840×2160), PSD source for Hero Art (up to 1 GB) |
| Microsoft Store | PNG | HD/4K alternatives accepted for most assets, 50 MB cap |
Profiles live in your user config directory:
- Windows:
%AppData%\AssetChecker\profiles\ - macOS:
~/Library/Application Support/AssetChecker/profiles/ - Linux:
~/.config/AssetChecker/profiles/
Each profile is a TOML file. Example rule:
platform = "My Platform"
[[rule]]
name = "Hero Banner"
formats = ["jpeg", "png"]
sizes = [[1920, 1080], [3840, 2160]] # multiple accepted dimensions
max_kb = 4000
progressive = false # must be baseline JPEG
required = true
count = 1
name_patterns = ["*hero*", "*banner*"]| Field | Type | Description |
|---|---|---|
name |
string | Display name in the report |
formats |
list | Accepted formats: "jpeg", "png", "psd" |
width, height |
int | Expected dimensions (single size) |
sizes |
list of [w, h] | Alternative accepted dimensions (OR with width/height) |
max_kb |
int | Maximum file size in kilobytes |
progressive |
bool | false = must be baseline JPEG. Omit to skip this check |
required |
bool | Whether the asset is mandatory for submission |
count |
int | Expected number of files (0 = any) |
name_patterns |
list | Glob patterns matched against the filename (case-insensitive) |
Matching priority: rules are evaluated in file order. A file is assigned to the first rule where both a name pattern and dimensions match. If no name+dimensions match is found, name-only matching is tried, then unique spec matching. Remaining files appear as "unassigned" with a manual assignment dropdown.
- Go 1.21+
- A C compiler (CGO is required by Fyne):
- Windows: MSYS2 with
pacman -S mingw-w64-x86_64-gcc, then addC:\msys64\mingw64\binto your PATH - macOS:
xcode-select --install - Linux:
sudo apt install gcc(or equivalent)
- Windows: MSYS2 with
- Fyne CLI:
go install fyne.io/tools/cmd/fyne@latest
# Dev run
go run .
# Release build (Windows)
fyne package -os windows -release
# Or use the build script (auto-increments build number)
.\build.ps1 # build only
.\build.ps1 -BumpPatch # 1.0.0 → 1.0.1
.\build.ps1 -BumpMinor # 1.0.1 → 1.1.0
.\build.ps1 -BumpMajor # 1.1.0 → 2.0.0- Go + Fyne for the GUI
- JPEG/PNG/PSD detection via raw header parsing (no image decoding, no heavy dependencies)
- BurntSushi/toml for profile parsing
- sqweek/dialog for native OS file dialogs
- GitHub Releases API for update checks
This project is licensed under the GNU General Public License v3.0. You are free to use, modify, and distribute this software, provided that any distributed modifications are also licensed under GPL v3.
Anthony Avila