Nano Banana 2 (fal.ai)
Google's fastest image model, now in your graph
- image
Nano Banana is Google's own image model, and it's closed - no weights, no downloads, no local runs. It lives behind the Gemini API, and this node reaches it through fal.ai's hosted fal-ai/nano-banana-2 endpoint. So FAL_NanoBanana2 is the "I want Google's current fast model inside my ComfyUI graph without leaving it" button: you type a prompt, a Google model renders it, and a IMAGE tensor lands back in your workflow.
Which model, exactly? Nano Banana 2 is Gemini 3.1 Flash - the February 2026 speed-quality hybrid that the community promptly clocked as fast and, for realism, second only to Nano Banana Pro. The crowd also clocked something else: this is a heavily filtered Google product. Aggressive safety gating and an invisible SynthID watermark ship with every image. It's technically lovely and creatively boxed-in, which is the trade you're making by staying in this walled garden.
How it works
The node sends your prompt to fal-ai/nano-banana-2 via fal.subscribe, waits, and converts the returned images into a batched tensor. No local compute, no model files, no GPU strain - just an API call that costs you money and a few seconds of Google's TPUs.
The inputs that matter:
- prompt (required) - all other knobs are optional.
- aspect_ratio - a long list, from
1:1up to ultrawide21:9and even8:1/1:8. Default isauto, which lets the model pick. - resolution -
0.5K,1K,2K, or4K; default1K. This is the biggest cost lever, since higher resolutions bill higher. - safety_tolerance (1–6, default 4) - how much the built-in filter lets through. Lower is stricter; expect more refusals the further down you go.
- thinking_level (
none,minimal,high; defaultnone) - lets the model "reason" about the prompt before generating. Costs latency;highis where the quality/instruction-following juice is. - enable_web_search - a genuinely odd power feature: lets the model ground generation on live web results. Leave it off unless you have a specific use.
- num_images (1–4), seed (
-1random), output_format (png/jpeg/webp), private_mode (tells fal not to store your I/O).
One IMAGE output, same as every node in this pack - straight into a Preview, Save, or the next stage.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/elle-trudgett/fal-ai-comfyui-nodes
pip install -r fal-ai-comfyui-nodes/requirements.txt
or ComfyUI Manager → ComfyUI fal.ai Nodes. No models to download - the model is Google's. You do need a fal key: export FAL_KEY="..." (or a config.ini with [API] / FAL_KEY in the node folder for ComfyUI Desktop), get it at fal.ai/dashboard/keys, restart.
Gotchas
- "FAL_KEY not set" - the pack's universal first run error; set the env var or config.ini and restart.
- The filter will refuse things. This is Google's safety stack front and center; if you need to generate content this model blocks, no setting here overrides that -
safety_toleranceonly adjusts how much the model itself tolerates. - It's metered. 4K + multiple images = a real per-run bill. Check the resolution before you queue a batch.
- Errors come back as
fal.ai error: ...with fal's message unwrapped for you. - Don't expect it to match an uncensored open model's range. Powerful, fast, "unimaginative" is the honest community verdict - great for polish and realism at speed, less so for pushing boundaries.
Wire it next to your open-weight stuff and use it where speed and polish beat control. Just keep the watermark rule in mind if you publish the output.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| num_imagesopt | INT | 11–4 | — |
| seedopt | INT | -1-1–2147483647 | — |
| aspect_ratioopt | COMBO | auto | 15 options: auto, 21:9, 16:9, 3:2, 4:3, 5:4, +9 |
| resolutionopt | COMBO | 1K | 4 options: 0.5K, 1K, 2K, 4K |
| output_formatopt | COMBO | png | 3 options: png, jpeg, webp |
| safety_toleranceopt | INT | 41–6 | — |
| thinking_levelopt | COMBO | none | 3 options: none, minimal, high |
| enable_web_searchopt | BOOLEAN | false | — |
| private_modeopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |