NH Large Image Preview
Zoom into an 8K render in your browser without freezing the canvas
- image
- image
- manifest
The bigger your upscales get, the dumber ComfyUI's default preview feels. It renders the full image to the canvas, and once you're past a few megapixels the browser starts lagging on every scroll, zoom, and node drag. NH Large Image Preview (class NH_LargeImagePreview) exists for exactly that moment: it previews a lightweight proxy and lets you inspect the real pixels in a proper viewer, instead of wedging the whole image onto the canvas.
What it actually does
Same mechanism as its sibling NH Large Image Compare: the node builds a tiled preview cache - a thumbnail plus a pyramid of tiles (512px JPEG by default) under ComfyUI/temp/nh_large_preview. The canvas only ever shows the thumbnail, so the graph stays responsive. Click it and you get a viewer that loads tiles on demand as you pan and zoom, which means you can inspect a genuinely huge render at 100% without the UI choking.
It's an output node (OUTPUT_NODE = True), so it functions like Preview Image, but with a useful extra: it passes the original image through untouched, plus a manifest string describing what got cached. That passthrough matters - you can drop it mid-pipeline as a visual checkpoint and keep wiring the same tensor forward.
The inputs that matter
- viewer_mode -
modal,side_panel, ornew_tab. Modal is the default and it's the right one for most people.new_tabis handy when you're comparing several outputs across tabs. - preview_megapixels (default 1) - the resolution of the interactive preview. This is the "how much do I actually need to see at once" dial. Start at 1; go to 2–4 only when you're scrutinizing fine detail.
- preview_format / preview_quality - JPEG at 90 by default, which is a good speed/size trade. Drop to WebP if your browser handles it better.
- title - labels the viewer so you can tell outputs apart in a batch.
The optional tile_size, tile_format, and tile_quality control the pyramid internals. Leave them alone unless panning feels laggy - smaller tiles load faster but mean more requests.
Installing
From ComfyUI Manager, search NH-Nodes, install, restart. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/jetthuangai/NH-Nodes.git
cd NH-Nodes
pip install -r requirements.txt
Restart ComfyUI, and refresh the browser tab if the node looks cached. The heavy dependencies in requirements.txt (onnxruntime, transformers) serve the pack's Vision/VTON nodes - this preview node only needs the common image libraries.
Where people get burned
The cache is temp-storage by design, so it's not a save mechanism - don't rely on it for anything you can't regenerate. And because it's an output node, ComfyUI will rebuild the cache every run. If you leave a batch of these in a long workflow, the nh_large_preview folder grows; that's what NH Large Preview Cache Manager is for. Minor gripe: there's no "open folder" affordance, so when you do want the full-res file, you'll still want a Save node in the graph. As a viewing tool, though, this is the one I reach for over the built-in preview.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| preview_megapixels | FLOAT | 1.000.05–8 | — |
| preview_format | COMBO | jpg | 3 options: jpg, webp, png |
| preview_quality | INT | 901–100 | — |
| viewer_mode | COMBO | modal | 3 options: modal, side_panel, new_tab |
| title | STRING | NH Large Image Preview | — |
| tile_sizeopt | INT | 512128–2048 | — |
| tile_formatopt | COMBO | jpg | 2 options: jpg, webp |
| tile_qualityopt | INT | 901–100 | — |
| cache_policyopt | COMBO | temp | 1 options: temp |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| manifest | STRING | — |