A high-performance Total Commander Content Plugin (WDX) that lets you inspect, sort, and search AI-generated images by their embedded generation metadata — right from the file list, no extra tools needed.
Tested against Automatic1111 WebUI, Easy Diffusion, and ComfyUI (ComfyUI support is best-effort — its workflow JSON varies too much between custom nodes/graphs to cover exhaustively). Decoders for SD.Next, WebUI Forge, Fooocus, InvokeAI, SwarmUI, and NovelAI are also included, implemented against their published metadata formats, but not yet verified against real output from those tools — feedback/sample files welcome. MindCraft Studio, Tensor.Art and Civitai on-site generations are recognised as well, checked against a handful of real files each.
- Multi-Format Image Support:
- PNG (
.png): ParsestEXt,zTXt(zlib compressed),iTXt(UTF-8), andeXIfchunks. - JPEG / JPG (
.jpg,.jpeg): Parses EXIFUserComment(0x9286),ImageDescription, JPEG Comments (0xFFFE), and XMP metadata. - WebP (
.webp): Parses RIFFEXIFandXMPchunks. - AVIF (
.avif): Parses ISOBMFFExifandxmlmetadata boxes. - TIFF (
.tif,.tiff): Parses standard EXIF tags.
- PNG (
- Deep Generator Recognition:
- Automatic1111 (also covers SD.Next / WebUI Forge's compatible parameter format, with Forge itself detected and labeled separately by version string) and Easy Diffusion: Extracts Positive Prompt, Negative Prompt, Steps, Sampler, Scheduler, CFG Scale, Seed, Model, Model Hash, Clip Skip, Denoising Strength, Hires Upscale parameters, VAE, and LoRA list.
- ComfyUI (best-effort): Parses execution graphs (
prompt) and workflow JSON structure, including subgraphs with promoted widgets. Recursively traces KSampler nodes, CLIPTextEncode nodes, Checkpoint loaders, VAE loaders, LoRA loaders, and latent resolutions, with substring-based matching so many custom node packs are picked up too. - Fooocus (untested): Extracts Fooocus prompt expansions, styles, samplers, base models, and refiners.
- InvokeAI (untested): Extracts
invokeai_metadata. - SwarmUI (untested): Extracts
sui_image_params. - NovelAI (untested): Extracts NovelAI Diffusion parameters and seeds.
- Draw Things (untested): Extracts its XMP-embedded generation record (prompt, seed, sampler, LoRAs, and more).
- WanGP (untested): Extracts its EXIF-embedded generation record (prompt, seed, LoRAs, and more).
- MindCraft Studio: Extracts its own generation record (prompt, seed, steps, model, size).
- Tensor.Art: Reads its generation record next to the ComfyUI/A1111 data and shows the real checkpoint and LoRA names, the model hash and the typed prompt instead of the service's internal model IDs.
- Civitai: Images generated on the Civitai site are read like Automatic1111 and labelled
Civitaiin theGeneratorcolumn, recognised by the same marker Civitai's own reader uses.
- Fast Performance & Thread-Safe Caching:
- Zero-lag file list scrolling in Total Commander due to built-in single-pass file result caching.
- Decoded results for whole folders stay in memory until you refresh with
Ctrl+Ror leave them untouched for 30 minutes, so sorting a large folder (or a branch view,Ctrl+B) by a plugin column again, or by a different plugin column, does not re-read every file. See Metadata cache. - Large or network-hosted images are read on a background thread instead of Total Commander's main thread, so the file list stays responsive while their metadata is extracted; those columns fill in a moment later rather than freezing the window. Small local files are still read immediately, with no added delay. Interrupting a directory listing aborts an extraction already in progress.
- Full Unicode (UTF-16) Support:
- Correctly displays prompts containing non-Latin scripts (Cyrillic, Japanese, Chinese, etc.) and emojis.
Prompt, Negative Prompt and Full Parameters are full-text search fields (WDX ft_fulltext); Total Commander only shows fields of this type in its search dialog (Alt+F7 -> Plugins tab), not as file-list columns or in the Multi-Rename Tool -- use Prompt (Short) / Negative Prompt (Short) for a column instead. Field indices changed in 0.2.0 (the three full-text fields moved to the end of the table, as the WDX SDK requires); if you had custom columns configured against the old indices, remove and re-add them in Total Commander's column configuration.
| Field Name | Type | Description |
|---|---|---|
Generator |
String | Generator name (Automatic1111, ComfyUI, Fooocus, InvokeAI, SwarmUI, NovelAI, etc.) |
Prompt |
Full Text | Positive prompt text, untruncated (search dialog only, see note above) |
Prompt (Short) |
String | Positive prompt text, cut off at TC's column buffer size (handy for compact columns) |
Negative Prompt |
Full Text | Negative prompt text, untruncated (search dialog only, see note above) |
Negative Prompt (Short) |
String | Negative prompt text, cut off at TC's column buffer size |
Model |
String | Model / Checkpoint name |
Model Hash |
String | Short model hash (e.g. 7f92a4bc) |
Seed |
64-bit Number | Generation seed |
CFG Scale |
Floating Point | CFG / Guidance scale |
Steps |
32-bit Number | Generation step count |
Sampler |
String | Sampler algorithm (e.g. Euler a, DPM++ 2M Karras) |
Scheduler |
String | Scheduler algorithm (e.g. karras, normal, exponential) |
Clip Skip |
32-bit Number | CLIP skip value |
Size |
String | Generation resolution (e.g. 1024x1024) |
Aspect Ratio |
String | Width:height ratio in lowest terms, derived from Size (e.g. 16:9) |
Megapixels |
Floating Point | Total resolution in megapixels, derived from Size, rounded to 2 decimals |
Denoising Strength |
Floating Point | Denoising strength value |
Hires Upscale |
String | Hires.fix upscale factor (e.g. 1.5) |
Hires Upscaler |
String | Hires.fix upscaler name (e.g. 4x-UltraSharp) |
Hires Steps |
32-bit Number | Hires.fix step count |
VAE |
String | VAE model name |
LoRA |
String | Applied LoRAs and weights |
LoRA Count |
32-bit Number | Number of LoRAs applied, derived from LoRA |
Full Parameters |
Full Text | Complete raw parameters block or JSON workflow (search dialog only, see note above) |
Has AI Metadata |
Boolean | Yes / No (useful for quick filtering in Total Commander) |
A ComfyUI prompt can contain a placeholder such as [TextGenerate] or [WD14Tagger|pysssss]: that part of the prompt was produced at run time (an LLM, an image tagger, a random selector) and the image does not record it. The bracket holds the name of the node that produced it. When the file also carries a plain-text copy of the final prompt, that copy is shown instead.
A ComfyUI file whose graph holds no readable generation settings (an upscale-only workflow, or one whose generation is not recorded in a form the plugin can read) still shows Has AI Metadata = Yes, Generator = ComfyUI and the raw graph in Full Parameters; every other column stays blank rather than guessed.
Each release ships two Total Commander auto-installer archives, both containing the same 32-bit (aimg.wdx) + 64-bit (aimg.wdx64) DLL pair, just linked differently:
aimg.wdx.zip— static CRT (/MT). Self-contained, no extra dependencies. Recommended for most users.aimg-md.wdx.zip— dynamic CRT (/MD). Smaller DLLs, but requires the Visual C++ Redistributable (VCRUNTIME140/VCRUNTIME140_1) to already be installed on the target machine.
- Download either
aimg.wdx.ziporaimg-md.wdx.zip. - Open the archive inside Total Commander.
- Total Commander will automatically prompt: "Do you want to install plugin aimg?". Click Yes.
- Extract the archive.
- Go to Total Commander menu: Configuration -> Options -> Plugins.
- Click Content Plugins (.WDX) -> Configure.
- Click Add and select
aimg.wdx64(for 64-bit TC) oraimg.wdx(for 32-bit TC).
- Right-click the file list header in Total Commander and select Configure Custom Columns...
- Click New... and set name to
AI Images. - Add columns:
[=aimg.Generator][=aimg.Model][=aimg.Seed][=aimg.Prompt (Short)]
- Click OK to save.
- Go to Configuration -> Options -> Display -> Help texts.
- Enable Win32-style tips with file comments (if available).
- Custom tip rule for image extensions (
*.png;*.jpg;*.jpeg;*.webp;*.avif;*.tif;*.tiff):Generator: [=aimg.Generator] Model: [=aimg.Model] Seed: [=aimg.Seed] Prompt: [=aimg.Prompt (Short)] Negative Prompt: [=aimg.Negative Prompt (Short)]
- Press
Alt + F7in Total Commander to open Find Files. - Go to the Plugins tab.
- Set condition:
Plugin:aimgProperty:PromptOP:containsValue:cyberpunk(or any keyword)
- Click Start Search.
The plugin keeps the decoded metadata of files it has already read in memory (until you refresh the
folder with Ctrl+R, or the files go untouched for 30 minutes), so re-sorting a large folder by a plugin column is close to instant. There is nothing to
configure:
- The memory ceiling is automatic. In 64-bit Total Commander it is 1/16 of the installed RAM, between 256 MB and 4 GB (1 GB on a 16 GB machine). In 32-bit Total Commander it is a fixed 192 MB, because there the process address space, not RAM, is the limit.
- That is a ceiling, not a reservation: memory grows only with what has actually been read, at roughly 2–3 KB per file, so 1 GB holds about 400,000 files.
- Files that have not been looked at for 30 minutes are dropped, so folders you only browsed once do not keep holding memory for the rest of the session. Re-sorting a folder after a longer pause is as slow as the first sort.
- If a single sort pass touches more files than fit, each file is dropped just before the pass comes back to it, and re-sorting that folder is as slow as with no cache at all.
- A cached file is re-read whenever its size or modification time changes. A tool that rewrites a
file while keeping both unchanged can leave the old values on screen; press
Ctrl+R(refresh) in the folder to re-read its files and subfolders. - The first sort of a folder after starting Total Commander still reads every file.
Requirements: MSVC, GCC/MinGW or Clang, optionally with CMake. The easiest route is build.bat, which picks whichever of the three is installed; build_msvc.bat builds both bitnesses and the install zips.
mkdir build
cd build
cmake ..
cmake --build . --config Releaserc /fo build\aimg.res /i src src\aimg.rc
cl /W4 /WX /O2 /GL /Gy /GR- /EHsc /DUNICODE /D_UNICODE /DNDEBUG /MT /LD /I src src\metadata_parser.cpp src\aimg_decoder.cpp src\comfyui_decoder.cpp src\aimg.cpp /Fo"build\\" /Fe:build\aimg.wdx64 /link /DEF:src\aimg.def build\aimg.res /MACHINE:X64 /LTCG /OPT:REF /OPT:ICFwindres -I src src/aimg.rc -O coff -o build/aimg.res.o
g++ -Wall -O3 -flto -fno-rtti -ffunction-sections -fdata-sections -DUNICODE -D_UNICODE -DNDEBUG -shared -I src src/metadata_parser.cpp src/aimg_decoder.cpp src/comfyui_decoder.cpp src/aimg.cpp src/aimg.def build/aimg.res.o -o build/aimg.wdx64 -static -s -Wl,--gc-sectionsMIT License. Free for commercial and non-commercial use.
This plugin exists only because of Total Commander and its Content Plugin (WDX) API. Huge thanks to Christian Ghisler for creating and tirelessly maintaining the best file manager in the world.