UNet Loader 🔰
Pick your UNet by looks, not by filename
- MODEL
If you keep a pile of standalone diffusion models in models/unet, the built-in loader makes you pick by filename - and filename roulette is how you end up generating with a checkpoint you forgot you'd swapped. OtacooUnetLoader is the "UNet Loader 🔰" node from the comfyui-otacoo pack, and its whole trick is showing you a preview image next to each model in the selector. Pick by looks, not by memory.
You'd reach for it when you're loading a model without its CLIP and VAE. That's the "unet" folder's job in ComfyUI: standalone diffusion models - SD3 and Flux class pipelines where you pair the model with a separate text encoder, or a finetuned unet you're swapping into an existing graph. One output, MODEL, straight into your KSampler's model input. That's the entire contract.
How it works
The backend is the same code the built-in UNETLoader runs: it hands the file to comfy.sd.load_diffusion_model() and returns the MODEL. What the pack adds is the frontend - it intercepts the dropdown, hits a small /otacoo/images/unet route, and renders a filterable grid of thumbnails instead of a text list. The loading itself is ComfyUI's own, so there's no behavior drift between this and the stock node. If you're on the classic (LiteGraph) UI the grid works as advertised; on the Nodes 2.0 / Vue UI the pack falls back to a plainer picker - the README is upfront that full previews are a LiteGraph thing for now.
The two inputs that matter
unet_name- the model to load. Files listed frommodels/unet. That folder doesn't exist on every fresh install; if the dropdown is empty, create it and drop your.safetensorsin.weight_dtype- defaults todefault, and that's usually right. The interesting options are the fp8 ones:fp8_e4m3fnandfp8_e4m3fn_fastare the ones you actually want (e4m3fn is the good 8-bit format, half the VRAM of fp16 with near-invisible quality loss - the standard way to fit a 12B-class model on a consumer card).fp8_e5m2is the older, less accurate format; skip it. The_fastvariant switches on ComfyUI's fp8 optimizations, which wins on some 40-series cards and can be a wash elsewhere - if you're not VRAM-starved, leave it atdefaultand let ComfyUI decide.
Output is a single MODEL, which wires into KSampler's model port. Since this loader doesn't return CLIP or VAE, you'll pair it with a separate text encoder and VAE node elsewhere in the graph.
Install
This is the whole pack, so installing it once gets you all four 🔰 nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/otacoo/comfyui-otacoo.git
then restart ComfyUI. Or use ComfyUI Manager → Install Custom Nodes → search otacoo. No pip requirements, no model downloads - the pack depends only on ComfyUI's own internals plus a bit of JS.
Getting previews to show
Drop an image next to the model file with the same base name, in the same folder:
models/unet/my_model.safetensors
models/unet/my_model.preview.jpg
The pack checks <basename>.preview.png/.jpg/.jpeg/.webp first, then plain <basename>.png/.jpg/.jpeg/.webp, first match wins. No preview file, no thumbnail - the entry just shows text. It's a small pack (first release early 2026, no real community footprint yet, so no bug reports to warn you about), but the one thing worth knowing: if the grid suddenly stops appearing, you're probably on the Vue UI, and that's a known limitation rather than a broken install.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | The UNet model to load. | |
| weight_dtypeopt | COMBO | default | The weight precision to load the model with. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |