💪TB | Build Custom Transcoder
Bolt any two VAEs together and make a latent-to-latent translator
- source_vae
- target_vae
- TRANSCODER
Here's the idea that makes TinyBreaker work: its base model and its refiner don't share a latent space, so to run the refiner after the base you have to translate the image between them. The pack ships a prebuilt transcoder for exactly that. 💪TB | Build Custom Transcoder is the DIY version - it lets you construct your own translator between any two latent spaces, from any two VAEs you own.
How it works
A transcoder here is a clever sandwich. You feed it a source_vae (used as the decoder) and a target_vae (used as the encoder). To move an image from source-space to target-space it decodes the source latent back into pixels, then encodes those pixels into the target latent. Decode → encode, and suddenly the refiner sees something it understands. The source code confirms the two remaining inputs are about polishing the pixels at the moment of the hand-off:
enhancer_op-None,Auto, orBlur.Autoinjects a Gaussian blur with sigma 0.5 at the pixel stage (the code notes this is tuned for the Tiny AutoEncoder pair specifically), andBlurlets you set the sigma yourself viaenhancer_level.enhancer_level- 0.0 to 5.0, step 0.1; only used whenenhancer_opisBlur.
Why blur at all? Because tiny autoencoders are lossy and can leave a faint grid or ringing in the decoded pixels, and a light blur before re-encoding smooths that out. It's the kind of hack that sounds wrong and produces noticeably cleaner results in practice.
The output
A single TRANSCODER - the pack's custom type, the same one the checkpoint loader's embedded transcoder produces. You feed it to the Tiny Dual Sampler's transcoder input in place of (or instead of) the built-in one. That's the whole payoff: a way to experiment with different latent bridges without touching the model files.
Install
Standard pack install - ComfyUI Manager search "tinybreaker", or:
cd ComfyUI/custom_nodes
git clone https://github.com/martin-rizzo/ComfyUI-TinyBreaker
Restart, then load your two VAEs through 💪TB | Load Any VAE (which can handle TinyAutoEncoder variants vanilla loaders may choke on) and wire them in. No extra downloads for the node itself.
When you'd actually use it
Honestly? Rarely. The built-in transcoder in the checkpoint is fine for the standard workflow, and if you're a beginner, this node is a detour. It becomes interesting in two situations: you want to feed TinyBreaker's refiner images that came from a different base model entirely (so you need a custom bridge into its latent space), or you're testing whether a different autoencoder pair survives the round-trip with less detail loss. The "Auto" blur being hardcoded for tiny autoencoders is a hint that the author built this mostly for his own experiments - treat it as an advanced lab bench, not a daily driver. If you set enhancer_op to None and the hand-off looks gritty, that's the round-trip loss talking, not a bug in your graph.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| source_vae | VAE | VAE model of the source latent space in the conversion. (This VAE will be used as the decoder) | |
| target_vae | VAE | VAE model of the target latent space in the conversion. (This VAE will be used as the encoder) | |
| enhancer_op | COMBO | None | 3 options: None, Auto, Blur |
| enhancer_level | FLOAT | 0.50–5 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TRANSCODER | TRANSCODER | A custom transcoder. |