Metadata Test Sampler
Test your metadata pipeline without loading a single model
- images
Model loading is slow. Checkpoint, CLIP, VAE - every full run spends its first minutes just pulling weights off disk. When all you want to do is verify that your metadata capture works - that the save node records the right sampler, the right LoRA names, the right hashes - that wait is pure waste. Metadata Test Sampler exists to make that test take two seconds: it fakes being a sampler and emits a solid-color image, but every one of its inputs is real metadata that the save node captures exactly as if you'd run a full pipeline.
It's a testing stub, and it's honest about it. No models load, no GPU sampling happens; you get a batch of flat-colored rectangles with a full metadata payload attached. Wire it into Save Image w/ Metadata Universal, save, and inspect the PNG's metadata. If the parameters are right, your rule config is right - without touching your real models.
The inputs
Everything here is a metadata record disguised as a generation parameter:
positive_prompt/negative_prompt- recorded verbatim (defaults to a "Synthetic prompt for metadata validation").model_name/model_hash,vae_name/vae_hash- fake names and hash stubs (defaults liketest_models/fake-model.safetensors,FAKEHASH001). The tooltip is explicit: no file access happens, these are just reported.clip_name1(plus optionalclip_name2/3/4) - encoder names recorded in metadata; leave the extras blank to skip.seed,steps,cfg,guidance,sampler_name,scheduler- the generation settings the save node normally pulls off a real KSampler.sampler_namedefaults toeuler, scheduler tonormal.width/height/batch_size- the size of the synthetic output. Bumpbatch_sizeand the saved metadata records batch index/size, which is handy for testing batch handling.colour_r/colour_g/colour_b- the RGB of the flat image (each 0–1). Change these if you want distinguishable outputs per run.generator_version- an optional version string recorded as "Metadata generator version".
The single images output is a solid-color IMAGE batch. Since batch_size is capped at 8 and dimensions at 4096, it's cheap enough to run dozens of times while iterating on rules.
Actually getting it
The node shows up under SaveImageWithMetaDataUniversal/Test after you install the pack - the |unimeta variant is registered by default. (There's also a plain MetadataTestSampler class, but that one only loads when you set the METADATA_ENABLE_TEST_NODES=1 environment flag before launching ComfyUI - you don't need it, since the |unimeta version is the always-on one.)
The loop it enables
The README's testing advice basically assumes this node exists:
- Build:
Metadata Test Sampler→Save Image w/ Metadata Universal. - Save, then drag the PNG back into ComfyUI or open it in a metadata viewer.
- Missing a field? Re-run the scanner, tweak rules, re-save rules, test again.
Pair it with the METADATA_TEST_MODE=1 env flag (multiline, deterministic parameter output) and you get diffable snapshot output - ideal for confirming that "field X now shows up" without squinting at one giant line. For testing whether your save node is doing its job, nothing beats a node that costs nothing to run.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| positive_prompt | STRING | Synthetic prompt for metadata validation | Positive prompt recorded in metadata. |
| negative_prompt | STRING | Negative prompt recorded in metadata. | |
| model_name | STRING | test_models/fake-model.safetensors | Model name reported in metadata (no file access). |
| model_hash | STRING | FAKEHASH001 | Precomputed hash string (optional metadata stub). |
| vae_name | STRING | test_vaes/fake-vae.safetensors | VAE name reported in metadata (no file access). |
| vae_hash | STRING | FAKEVAE001 | Precomputed VAE hash string. |
| clip_name1 | STRING | test_clip/fake-clip-1.safetensors | Primary CLIP/encoder name recorded in metadata. |
| seed | INT | 1234560–2147483647 | Seed value recorded in metadata. |
| steps | INT | 61–150 | Step count recorded in metadata. |
| cfg | FLOAT | 3.00–30 | CFG scale recorded in metadata. |
| sampler_name | STRING | euler | Sampler name recorded in metadata. |
| scheduler | STRING | normal | Scheduler recorded in metadata. |
| guidance | FLOAT | 1.00–30 | Guidance value; optionally mapped to CFG by the saver. |
| width | INT | 51216–4096 | Output width for synthetic image. |
| height | INT | 51216–4096 | Output height for synthetic image. |
| batch_size | INT | 11–8 | Number of images to generate (metadata records batch info). |
| colour_r | FLOAT | 0.000–1 | Red channel (0-1) for synthetic output. |
| colour_g | FLOAT | 0.000–1 | Green channel (0-1) for synthetic output. |
| colour_b | FLOAT | 0.000–1 | Blue channel (0-1) for synthetic output. |
| generator_version | STRING | metadata-stub-1.0 | Optional version string recorded under Metadata generator version. |
| clip_name2opt | STRING | Secondary CLIP entry (leave blank to skip). | |
| clip_name3opt | STRING | Tertiary CLIP entry (leave blank to skip). | |
| clip_name4opt | STRING | Additional CLIP entry (leave blank to skip). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |