Flux.2 Klein + Refiner — Clean, Fast, No Nonsense
I'll be honest: I was almost ready to give up on Flux.2 Klein.
I spent an entire night downloading and testing workflows I found online — some popular, some less so — and none of them worked the way I needed. Generation times were absurd, sometimes hitting 400 seconds or more. On top of that, I kept getting images at resolutions I never asked for, with no upscale nodes in sight and no clear explanation. I was going crazy trying to fix issues I didn't even fully understand.
At some point I thought: maybe this is just how Flux.2 Klein works. But something didn't feel right. So instead of giving up, I built my own workflow from scratch — adapting it to the way I actually work.
Turns out the answer was simpler than I expected.
What this workflow does
This is a clean, straightforward Flux.2 Klein workflow with an optional SDXL refiner pass. No bloated node chains, no mystery outputs, no hidden upscaling. What you set is what you get.
Generation times I've achieved:
Without refiner: 20–30 seconds per generation
With refiner (SDXL 1.0 DMD): 35–40 seconds
(obviously based on my hardware, so your results may vary)
Resolution: fully customizable via a dedicated node — I personally use 1536×1920, but you can set whatever you need.
How the refiner works
After Flux.2 Klein generates the base image, a second KSampler with an SDXL 1.0 DMD checkpoint refines it at low denoise. Nothing exotic — just a classic refiner setup that adds detail and polish without rebuilding the image from scratch. You can run it or skip it depending on your needs.
Why am I sharing this?
Because I wasted hours on workflows that looked impressive but performed terribly, and I don't want the same to happen to you. This one works (at least for me :)... ). It's not fancy, but it's fast, predictable, and the results speak for themselves.
If you try it, let me know what you think. And if you use it for portraits or lifestyle shots, I'd love to see what you create.
All sample images were generated with this workflow. No post-processing.
Description
Version 2.1 — What changed
This update fixes the metadata bug mentioned in the v2.0 release notes: the positive prompt was being incorrectly written into the negative prompt field, causing CivitAI to display it in both places on upload. The wiring has been corrected and metadata now exports cleanly, with the negative prompt field properly empty (or populated only with what you actually set as negative).
If you spot anything else off, comments are welcome as always.
FAQ
Comments (15)
Why SDXL as a refiner rather than ZiT? I've mostly seen ZiT used.
Yes, ZIT is an excellent refiner if you use it for the whole image, as a final step perhaps after an SDXL model, but Klein is already excellent on its own. In this workflow the refiner is used only and exclusively for retouching specific areas such as nipples. ZIT does not excel in those areas, while SDXL is
Really cool workflow, pretty light and simple it gave me great results with klein 9b model even without NSFW, I just added Rgthree seed node it was driving me crazy haha
Thank you so much @HmNike!!
Yes, lightness was my focus in building it, I had had problems with other workflows, I'm happy you enjoyed it! and I would love to see the results 😉
regarding the node, what problems was it giving you?
@ShinobiSat I already using it for some of my previous vid, just I forgot to send you buzz for it and also a quick review, nah there was no issue it's just I'm so use to rgthree seed node that I can't use any workflow without
Here the vid I made with a picture gen with your V2, I'm not good at all with flux prompt system and even with help of llm or other prompt you can find I'm still struggling with it
@HmNike
Hi, I can't see the video...
Anyway, if it helps, a good way to structure the prompt for Flux.2 Klein is to break it down into:
1 - Subject (preferably specific; "a 23-year-old woman with short blonde hair" is better than "a person")
2 - Setting/scene
3 - Lighting (this is a very important factor)
4 - Style and mood
5 - Technical specifications (lens, aperture, shot type)
This is a good rule of thumb, but in reality it works well even without following it — if you look at many of my prompts, they don't follow it at all 🤣🤣 though it also depends on the result you want to achieve.
That said, the single most important thing, even if you skip the structure entirely, is to describe the scene in full sentences, as if you were explaining it to a photographer, rather than just tagging it. Klein uses Qwen3 as text encoder, so it reads prompts more like a language model than like a tag list.
@ShinobiSat thank you for all the insight, yeah the structure I try to follow this similar pattern, is more the natural language that bother me when you need to adjust something
Btw for the video I'm just stupid and forgot to paste the link
https://civitai.red/images/134837546
@HmNike @HmNike Oh yeah, it was a happier world with the old tag-based prompts 😂😂 Although, to be honest, it took me longer to learn how to write a good tag-based prompt than one in natural language, in fact, I probably never really understood how tags worked.
Hello, thank you very much for this workflow. However, I have a problem: my pre-refining and post-refining images are produced exactly the same. There is no difference whatsoever. They are identical. What could be causing this?
Hi @buneoglimamina222752 , there was an incorrect connection on the final "Save Image" node. I’ve fixed it and uploaded the new file; please download and test it—everything should work fine now.
The "Save Image" node was previously connected directly to the first "VAE Decode" node; that connection is necessary if you want to save the image while bypassing the entire refinement stage, but if you intend to use the refiner, the new file is already set up correctly.
I tested it with either just the "UltralyticsDetector" nodes active or the full refiner, and it works well in both cases. However, for Flux Klein, I recommend using only the "UltralyticsDetector" nodes rather than running the refiner on the entire image.
Thanks a lot for pointing this out, and let me know how it goes!
Thanks.
@ShinobiSat Thank you for your help. It's working perfectly now. Since you addressed my issue, I wanted to contribute by showing you how it works in a user review. I tried a few photos of my character; the ones on the left are the refined versions. I'm new to the site, so I could only send a link:
https://freeimage.host/i/C1rEHuI
@buneoglimamina222752 I'm glad everything is working now and that you like it! 😉 Excellent results.
And how do you write these amazing prompts? Do you use a workflow or tool that helps you?
I usually let various LLMs work on my material: I write a scene, and the LLM of the moment "corrects" it.
For instance, I might take Claude and "teach" it how a specific model reasons and how that model prefers its prompts to be structured; then, when I feed it a scene, Claude rewrites it with a better structure.
For SFW scenes, pretty much any LLM works fine, but for NSFW scenes, I like Gemini 3 Flash (as used by ppq.ai) because it has fewer filters and censorship restrictions.
I've been using DeepSeek a lot lately, and I'm really happy with it.



















