Olm Resolution Picker
The resolution picker that reads a text file (and why you want that)
- width
- height
Most resolution pickers ship a few hardcoded presets and call it a day. The Olm Resolution Picker takes the opposite bet: your resolutions live in a plain text file, so the dropdown is whatever you want it to be. Every architecture you actually run - SDXL, Flux, Wan, Hunyuan Video, LTX - has its own native resolution, and nobody keeps those numbers in their head. This node puts them in a menu you can edit without touching code.
It's also refreshingly small. There's a school of "just install my 90-node pack for one utility" that this deliberately dodges. The README is explicit: built for people who want more than hardcoded presets but don't want a huge pack. And it does exactly one job.
How it works
At the core it's a resolution → (width, height) INT pair node. You pick a preset, it hands you two integers, and you wire those into anything that wants a resolution: an Empty Latent Image node, a KSampler size input, a video VAE, whatever. Width and height are the only outputs - that's the whole trick, and it's why the node stays useful across model families.
Where it gets interesting is the config file. A resolutions.txt sits next to the node and gets parsed every time the node loads:
// First comment
-- SDXL
1024x1024: square (1:1)
768x1344: vertical (9:16)
-- Wan 2.1
1280x720: widescreen (16:9)
832x480: widescreen (16:9)
WxH lines become dropdown entries (the label after : is shown in the UI, ignored for output), -- lines become group headers, // lines are comments that vanish entirely. Malformed lines are skipped silently. The stock file even ships pre-grouped by model family with sensible defaults - Flux at 1MP, SDXL's trained ratios, the video models at their standard sizes - so it's usable out of the box, not just configurable.
The inputs that matter
The frontend toggles are worth a quick tour because they're more than decoration:
resolution- the dropdown, 56 choices when it ships, however many your file defines.draw_preview- draws a live preview panel inside the node so you can see the aspect ratio you're picking instead of guessing.show_checker- overlays a checkerboard; the tiles stay constant size regardless of resolution, so it gives you a feel for scale. The preview assumes a 4:3 image; replacejs/test_image.pngwith your own if you want a reference that means something to you.show_image- toggles that test image on and off.swap_dimensions- flips width and height, your one-click portrait↔landscape.custom_width/custom_height/divisible_by- the "Custom" entry in the dropdown switches to numeric input, anddivisible_by(1/2/4/8/16/32/64) snaps your numbers to a clean multiple. Leave it at 64 - that's the Flux-friendly default and the KB's advice to keep resolutions divisible by 64 holds.
Installation
No model downloads, no heavy deps. ComfyUI Manager: search Olm Resolution Picker. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/o-l-l-i/ComfyUI-Olm-Resolution-Picker
Then restart ComfyUI. The README lists a requirements.txt (torch, numpy, scipy) but says plainly you probably already have all of it - the "check/install dependencies" step is a formality for a node with no real dependency footprint.
Gotchas
Two things to actually be careful about. First, the author's own warning: "New added fields will break the node in graphs." That's version 1.0.1 adding widgets - if you have existing graphs saved with the old widget set, upgrade can break them. Second, the license is not standard open source: source-available, free to use, but no redistribution or rebranding without written permission. Fine for personal use, worth knowing before you embed it in something you ship.
The fallback behavior is the friendly part: if a header somehow gets selected or parsing fails, it returns 1024x1024 rather than crashing the graph. The author is upfront that this is a learning project (v1) with possible rough edges, so don't expect pack-of-the-year polish - but for a resolution dropdown that's exactly as opinionated as your text file, it works.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| resolution | COMBO | 1024x1024 | 56 options: 1024x1024, -- SDXL --, 1024x1024: square (1:1), 1536x640: landscape (12:5), 640x1536: portrait (5:12), 1564x670: cinematic (21:9), +50 |
| draw_preview | BOOLEAN | true | — |
| show_checker | BOOLEAN | false | — |
| show_image | BOOLEAN | false | — |
| swap_dimensions | BOOLEAN | false | — |
| custom_width | INT | 51264–8192 | — |
| custom_height | INT | 51264–8192 | — |
| divisible_by | COMBO | 64 | 7 options: 1, 2, 4, 8, 16, 32, +1 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| width | INT | — |
| height | INT | — |