Back to blog
Image21 min read

FLUX Guidance Scale Explained (2026)

FLUX guidance is not the CFG scale you know from Stable Diffusion. Per-model ranges, defaults and names from Black Forest Labs' own spec, plus a sweep that finds your value.

NH
Nafiul Hasan
Founder, Prompt Architects

TL;DR: FLUX guidance pushes a generation toward literal prompt adherence and away from realism. On the distilled FLUX models it is not the CFG scale you know from Stable Diffusion: Black Forest Labs' own cards say those models were trained with guidance distillation. Ranges, defaults and even the parameter's name differ per surface. Verified August 29, 2026.

What is the FLUX guidance scale?

It is the one number in a FLUX request that trades realism for obedience.

Black Forest Labs describes it in one sentence, and only inside its machine-readable API specification rather than anywhere in its prose documentation: "Guidance scale for image generation. High guidance scales improve prompt adherence at the cost of reduced realism." That sits on the flux-dev and flux-2-flex request bodies. On fill and expand the same field carries a blanker description, "Guidance strength for the image generation process", with a completely different range attached.

That is the whole of BFL's published explanation. No page in the FLUX prompting guide covers guidance, and the guide's own "Technical Parameters" section covers aspect ratios and working without negative prompts while never mentioning the parameter.

The observable behaviour is easy to state; the internals are not. Turn it up and the model follows your words harder, while skin, fabric and depth of field start to look rendered. Turn it down and the image relaxes into something photographic, quietly dropping the third and fourth clause of your prompt.

Is FLUX guidance the same as CFG scale?

On most FLUX checkpoints, no, and assuming otherwise is what produces bad advice.

Black Forest Labs states the training method on the model cards themselves. FLUX.1 [dev]: "Trained using guidance distillation, making FLUX.1 [dev] more efficient." The same sentence, model name swapped, appears on FLUX.2 [dev] and FLUX.1 Kontext [dev]. The klein Base cards state the inverse: "Trained without step or guidance distillation, making FLUX.2 [klein] 4B Base more efficient and flexible."

That is BFL telling you the number is a distilled artefact rather than a sampler setting. It never describes the implementation, so the clearest primary source is the reference library.

Hugging Face's diffusers exposes two separate arguments on its FLUX pipeline. One is guidance_scale, documented as "Embedded guiddance scale is enabled by setting guidance_scale > 1" — the typo is theirs — and then: "Guidance-distilled models approximates true classifer-free guidance for guidance_scale > 1." The other is true_cfg_scale, documented as: "True classifier-free guidance (guidance scale) is enabled when true_cfg_scale > 1 and negative_prompt is provided."

The code settles it. guidance_scale is packed into a tensor and handed to the transformer alongside the timestep, only when the checkpoint advertises guidance embeddings. Real classifier-free guidance happens elsewhere, in the familiar one-line formula mixing a conditional and an unconditional prediction, and the coefficient in that line is true_cfg_scale.

What is the parameter called on each surface?

Four surfaces, four contracts. The last row matters most.

FLUX guidance, per surface. Verified August 29, 2026 from api.bfl.ai/openapi.json, the Hugging Face model cards, ComfyUI's comfy_extras/nodes_flux.py and Replicate's published schemas.
FeatureBFL APIModel card / diffusersComfyUIReplicate
Parameter nameguidanceguidance_scaleguidanceguidance
Value used for FLUX.1 [dev]3.0 default3.5 in the card's example3.5 node default3.5 default
Published maximum5.0 on flux-devNone stated100.010
Separate true-CFG controltrue_cfg_scaleKSampler cfg
Way to switch guidance offFluxDisableGuidance node

Black Forest Labs' hosted API calls it guidance, a plain number whose range changes per endpoint. The open-weight cards and diffusers call it guidance_scale, state no range, and simply pass a value in each usage example, disagreeing with BFL's own API defaults for the closest matching model.

ComfyUI puts it on a dedicated conditioning node, FluxGuidance, whose input is named guidance with a default of 3.5, a minimum of 0.0 and a maximum of 100.0. Its sibling node's description reads: "This node completely disables the guidance embed on Flux and Flux like models". That is the plainest confirmation anywhere that the value is an embedding rather than a sampler coefficient.

Resellers rewrite the range. Replicate's published schema for black-forest-labs/flux-dev sets guidance to a minimum of 0, a maximum of 10 and a default of 3.5, described as "Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5". BFL's own endpoint caps the same field at 5.0 and defaults to 3.0.

What is the documented range and default per model?

Only five of Black Forest Labs' twenty-plus image endpoints accept the field. Everything below was read from api.bfl.ai/openapi.json on August 29, 2026.

EndpointFieldMinimumMaximumDefault
/v1/flux-devguidance1.55.03.0
/v1/flux-2-flexguidance1.510.05.0
/v1/flux-pro-1.0-fillguidance1.510060
/v1/flux-pro-1.0-expandguidance1.510060
/v1/flux-pro-1.0-fill-finetunedguidance1.510060
/v1/flux-2-pro, /v1/flux-2-pro-preview, /v1/flux-2-maxnone
/v1/flux-2-klein-4b, -9b, -9b-previewnone
/v1/flux-pro-1.1, /v1/flux-pro-1.1-ultranone
/v1/flux-kontext-pro, /v1/flux-kontext-maxnone

Three things fall out of it.

FLUX.2's flagship endpoints have no guidance dial. Only flex does, which is exactly how BFL positions it: its model chooser table lists flex's controls as "Adjustable steps & guidance" against "Standard" for pro, max and klein, and the FLUX.2 launch note describes flex as offering "Control inference steps (up to 50) and guidance scale (1.5–10)". If a tutorial tells you to tune guidance on FLUX.2 [pro], it is describing a field the endpoint will not accept.

Kontext exposes nothing on the hosted API, though the open Kontext weights take guidance_scale and BFL's card example passes 2.5. Hosted Kontext editing is prompt-only.

Fill and expand run on a different scale entirely. A maximum of 100 and a default of 60 are not comparable to a maximum of 5.0 on flux-dev. Worth flagging: BFL's own inpainting documentation shows "guidance": 30 in both its curl and Python examples while the specification's default for that endpoint is 60. Both are live on BFL's own properties, and we report the discrepancy rather than picking a winner.

What do the open-weight cards actually pass?

The cards are where local users get their numbers, and they do not match the API.

WeightsCard's own guidance_scaleSteps in the same exampleLicence on the card
FLUX.1 [dev]3.550other / flux-1-dev-non-commercial-license
FLUX.1 [schnell]0.04apache-2.0
FLUX.1 Kontext [dev]2.5not givenother / flux-1-dev-non-commercial-license
FLUX.2 [dev]450other / flux-non-commercial-license
FLUX.2 [klein] Base 4B4.050apache-2.0
FLUX.2 [klein] Base 9B4.050other / flux-non-commercial-license

[dev] is not Apache 2.0, and neither is FLUX.2 [dev], Kontext [dev] or klein Base 9B. The Apache 2.0 releases here are FLUX.1 [schnell] and FLUX.2 [klein] Base 4B, whose card is explicit that its "Outputs can be used for commercial purposes, as described in the [Apache 2.0 license]". Everything else carries a BFL non-commercial licence. Check the card, not a blog post, before a client project.

Why does FLUX.1 [schnell] want guidance 0?

Because it was distilled a different way, and its card shows the value.

FLUX.1 [schnell] is described as "Trained using latent adversarial diffusion distillation, FLUX.1 [schnell] can generate high-quality images in only 1 to 4 steps." Note the absent phrase: not guidance distillation. Its usage example passes guidance_scale=0.0 with four steps, and Hugging Face's FLUX documentation makes it a rule for the timestep-distilled checkpoint: "guidance_scale needs to be 0."

For the other checkpoint the same page says "The guidance-distilled variant takes about 50 sampling steps for good-quality generation." Two models from one lab, one parameter, correct values of 0.0 and 3.5, and a twelve-fold difference in step count. There is no interpolation between them.

BFL does not expose schnell on its own API at all, and Replicate's schema for black-forest-labs/flux-schnell omits the guidance field entirely while capping steps at 4. The parameter is not part of that model's contract.

Why won't a guidance value carry from anywhere to anywhere?

Because four things change underneath it, and only one is the model.

The scale changes. 3.5 sits mid-range on flux-dev, low on flux-2-flex, and near the floor on a fill endpoint whose default is 60. Nothing normalises between them.

The mechanism changes. On distilled weights the number conditions the network. On undistilled klein Base weights, in the Klein pipeline, the same argument runs real classifier-free guidance, described there as "Higher guidance scale encourages to generate images that are closely linked to the text prompt, usually at the expense of lower image quality." On step-distilled klein, "For step-wise distilled models, guidance_scale is ignored."

The step count changes what the value feels like. Steps and guidance are coupled: fewer steps means each one carries more of the push. Our note on what sampling steps actually do applies unchanged here. diffusers is itself inconsistent about this on FLUX, with a signature default of 28 steps sitting under a docstring that says 50.

The host changes the range. Replicate allows 0 to 10 on flux-dev where BFL allows 1.5 to 5.0. A value of 8 is legal on one and rejected on the other.

This is the same failure mode as image-to-image strength, where the number runs in opposite directions depending on the tool. The per-tool denoising reference is the companion piece to this one, and the method it teaches is the method below.

How do you find your own working value?

Sweep one variable. It takes ten minutes and it is the only honest way to get a number.

Fix everything except guidance: same prompt, same seed, same dimensions, same step count. Then walk the endpoint's published range in five stops and view the results side by side.

# FLUX.2 [flex] guidance sweep. Range 1.5 to 10.0, default 5.0.
# Everything except `guidance` is pinned, including the seed.
PROMPT="A ceramic pour-over coffee dripper on a pale oak counter, morning window light from camera left, shallow depth of field, 50mm"

for G in 2.0 3.5 5.0 7.0 9.0; do
  curl -s -X POST "https://api.bfl.ai/v1/flux-2-flex" \
    -H "x-key: $BFL_API_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"prompt\": \"$PROMPT\", \"width\": 1024, \"height\": 1024, \"seed\": 42, \"steps\": 50, \"guidance\": $G}" \
    | tee "sweep-g$G.json"
done

The local equivalent on open weights is one loop:

import torch
from diffusers import FluxPipeline

pipe = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16
)
pipe.enable_model_cpu_offload()

prompt = ("A ceramic pour-over coffee dripper on a pale oak counter, "
          "morning window light from camera left, shallow depth of field, 50mm")

for g in [1.5, 2.5, 3.5, 4.5, 5.0]:
    image = pipe(
        prompt,
        height=1024, width=1024,
        guidance_scale=g,
        num_inference_steps=50,
        generator=torch.Generator("cpu").manual_seed(42),
    ).images[0]
    image.save(f"sweep-{g}.png")

Read the strip in one pass and ask two questions. Where does the last clause of the prompt first appear, and where does skin, fabric or bokeh start looking synthetic? The stop where both are true is your value for this subject, this endpoint and this step count, and it belongs written down next to the prompt.

Copy-paste prompts for the common FLUX jobs

Each block is a prompt plus a starting point. The starting point is our observation, not a BFL recommendation, and the sweep above exists to replace it. Prompts are prose because BFL's own advice for the family is to describe scenes rather than stack keywords.

Product and still life

A matte black cast-iron skillet on a weathered walnut board, side light from a
single north-facing window, faint steam, shallow depth of field, 85mm macro,
neutral grey seamless behind. Photographic, no styling props.
[start: flux-dev 2.8 / flux-2-flex 4.0]
A cut-crystal tumbler half full of amber whisky on polished concrete, hard key
light from upper right creating a caustic pattern on the surface, deep shadow
detail, 100mm. Editorial drinks photography.
[start: flux-dev 3.0 / flux-2-flex 4.5]
Three stacked bars of unwrapped olive-oil soap, chalky texture, top-down flat
lay on a limewashed plaster surface, soft overcast light, subtle contact shadow.
[start: flux-dev 2.6 / flux-2-flex 3.8]
A pair of tan leather work boots photographed against a white cyclorama, evenly
lit with two large softboxes, laces deliberately loose, every stitch and scuff
in focus front to back, catalogue photography.
[start: flux-dev 3.4 / flux-2-flex 5.0]

Portrait and people

A woman in her fifties in a linen shirt seated by a café window, half her face
in shade, warm reflected light on the shadow side, natural skin texture with
visible pores, 35mm, shallow focus falling off behind her shoulder.
[start: flux-dev 2.4 / flux-2-flex 3.4]
Environmental portrait of a boatbuilder in his workshop, sawdust in the air
caught by a shaft of afternoon light, hands resting on a plane, tools blurred
behind, 50mm, documentary tone.
[start: flux-dev 2.7 / flux-2-flex 3.8]
Two colleagues mid-conversation across a meeting table, both in soft focus
except the nearer one's eyes, overhead diffused office light, muted palette,
candid rather than posed.
[start: flux-dev 2.5 / flux-2-flex 3.6]
Studio headshot on a charcoal backdrop, single beauty dish above and slightly
right, subtle fill from below, crisp catchlights, natural skin, 85mm at f/2.8.
[start: flux-dev 3.2 / flux-2-flex 4.6]

Typography and layout

A minimalist poster with the words "SLOW MORNING" set in a heavy grotesque,
centred, black ink on warm off-white stock, visible paper grain, generous
margins, nothing else in the frame.
[start: flux-dev 3.8 / flux-2-flex 6.5]
A hand-painted shop window reading "OPEN LATE" in gold leaf script with a thin
black outline, seen from the street at dusk, warm interior light behind.
[start: flux-dev 4.0 / flux-2-flex 7.0]
An enamel travel mug printed with the single word "FIELDWORK" in a condensed
sans, white type on forest green, product shot on a stone ledge outdoors.
[start: flux-dev 3.6 / flux-2-flex 6.0]
A conference badge lanyard card showing the name "R. OKONKWO" above the smaller
line "DELEGATE", clean grid layout, matte laminate, held at a slight angle in
soft daylight.
[start: flux-dev 4.2 / flux-2-flex 7.5]

Illustration and stylised work

A risograph-style two-colour print of a lighthouse in a storm, fluorescent pink
and slate blue only, visible misregistration, coarse paper texture, flat shapes
with no gradients.
[start: flux-dev 4.0 / flux-2-flex 7.0]
A gouache illustration of a corner grocer at night, flattened perspective, warm
window glow against cool street, visible brush texture, muted mid-century
palette.
[start: flux-dev 3.6 / flux-2-flex 6.0]
An isometric cutaway of a small workshop rendered as clean vector art, four
flat colours plus a single accent, thin uniform outlines, no shading gradients.
[start: flux-dev 4.4 / flux-2-flex 8.0]
A woodcut print of a heron among reeds, bold black carving marks, high contrast,
cream paper, no grey tones anywhere.
[start: flux-dev 4.2 / flux-2-flex 7.5]

Architecture and interiors

A concrete stairwell photographed from below, raking morning light through a
narrow slot window, board-form texture on every surface, tight one-point
perspective, 24mm tilt-shift with verticals corrected.
[start: flux-dev 3.4 / flux-2-flex 5.2]
A small kitchen with pale oak cabinetry and a soapstone counter, late afternoon
sun across the floor, one chair pulled out, lived-in rather than staged, 28mm
at eye height.
[start: flux-dev 2.8 / flux-2-flex 4.0]
A brick warehouse conversion interior, exposed steel trusses, north-facing
clerestory glazing, polished screed floor reflecting the ceiling, wide
architectural photograph with straight verticals.
[start: flux-dev 3.2 / flux-2-flex 5.0]

Reference editing instructions

These run on FLUX.2's multi-reference endpoints and on Kontext, where the hosted API takes no guidance value at all. The instruction carries the whole load.

Using the first image as the subject and the second as the lighting reference,
place the subject in the second image's light. Keep the subject's face, hair
and clothing exactly as they are in the first image. Change only illumination,
shadow direction and colour temperature.
Replace the background behind the person with a plain warm grey studio sweep.
Keep the person's pose, edge detail and hair silhouette identical. Match the
existing key light direction so the new background's falloff agrees with it.
Change the text on the sign to read "MARKET HALL" in the same typeface, weight
and colour as the original. Leave every other element of the photograph
untouched, including the sign's wear and reflections.
Take the product from the first image and the surface and props from the second.
Composite them into one photograph with a single consistent light source from
camera left. Preserve the product's label text and material exactly.

Sweep harness prompts

Use one of these unchanged across a whole sweep, so the only thing moving is the number.

A single ripe fig, cut in half, on a plain white ceramic plate, soft daylight
from the left, shallow depth of field, 100mm macro, nothing else in frame.
A rain-slicked city crossing at night with one figure under an umbrella, neon
signage reflected in the road, 35mm, cinematic but not stylised.
A page of an open notebook showing the handwritten words "test one", ballpoint
ink, overhead daylight, slight paper curl at the spine.

What does Black Forest Labs not document?

Enough that a hedge belongs in any post on this topic, this one included.

The mechanism. BFL says its models were trained with guidance distillation, then stops. It does not publish what the number does at inference time, how it enters the network, or how the distilled behaviour relates to the classifier-free guidance it approximates. The evidence that it is an embedding comes from diffusers and ComfyUI, not from BFL.

Recommended values. Ranges and defaults, yes. Advice, no. No BFL page tells you to use 3.5 for portraits.

The relationship between guidance and steps. Both are exposed on flux-2-flex and flux-dev, with no published note on how one affects the other.

Why fill and expand run to 100. A default of 60 against a flux-dev maximum of 5.0 is a twenty-fold difference in ceiling with no explanation.

Whether flex's guidance is distilled. The flex weights are not published and there is no flex model card, so the training-method sentence that exists for [dev] and [klein] has no counterpart. Treat it as undocumented.

Per-checkpoint configuration. The guidance_embeds flag that diffusers reads to decide whether to build a guidance tensor lives in each repository's transformer config, and those repositories are gated. We did not read them and will not assert their values.

How can you verify all of this yourself?

Two files and a grep, which is why this post could be written from primary sources at all.

# Every FLUX endpoint, every parameter, ranges and defaults included.
curl -s https://api.bfl.ai/openapi.json > bfl.json
python3 -c "
import json; d=json.load(open('bfl.json'))
for n,s in d['components']['schemas'].items():
    for p,v in s.get('properties',{}).items():
        if 'guidance' in p: print(n, p, json.dumps(v))
"

# The whole documentation site as one text file.
curl -s https://docs.bfl.ai/llms-full.txt | grep -n -i guidance

For the open weights, take the number from the model card's usage example rather than a tutorial. For diffusers and ComfyUI, read the source: a docstring and a node schema are more current than any guide, and here more specific than the vendor's own docs.

Worth saying plainly, because it is the edge of what we do: Prompt Architects does not generate images and has no guidance slider. We generate the prompt. What breaks in this workflow is bookkeeping. One instruction, five guidance values, three endpoints whose ranges do not overlap, and a step count that changes the meaning of all of it, is the mess that lives in a dozen browser tabs until the version that worked is gone. Save the instruction once, make the subject and the lighting variables, and record the value beside it. Image prompt generation starts on the Pro plan at $4.99 a month at the time of writing, and the Free plan runs 5 prompt enhancements per day, forever, per our FAQ. Our FLUX.2 prompt generator covers the photorealism presets.

Free Chrome Extension

Stop rewriting prompts. Start shipping.

Works with ChatGPT, Claude, Gemini, Grok, Midjourney, Ideogram, Veo3 & Kling. 5.0★ on the Chrome Web Store.

Create An Account

Sources and dates

Every parameter name, range, default and licence above was read from BFL's own specification, documentation and model cards, or from a reference implementation's source, on August 29, 2026.

Black Forest Labs: api.bfl.ai/openapi.json for every endpoint's request body, and docs.bfl.ai/llms-full.txt for the model chooser table, the FLUX.2 release note, the prompting guide and the inpainting example. Both fetch cleanly with plain curl.

Model cards on Hugging Face, licences taken from each card's own metadata: FLUX.1-dev, FLUX.1-schnell, FLUX.2-dev, FLUX.1-Kontext-dev, FLUX.2-klein-base-4B and FLUX.2-klein-base-9B. Five of the six are gated, so raw files return 401 while the rendered card and the metadata API return the card.

Source code: diffusers pipeline_flux.py, pipeline_flux2.py, pipeline_flux2_klein.py and its FLUX pipeline docs; ComfyUI's comfy_extras/nodes_flux.py, nodes.py and FLUX examples page.

The two papers the diffusers docstrings point at are Classifier-Free Diffusion Guidance and On Distillation of Guided Diffusion Models, titles confirmed against the arXiv API.

Reseller schemas, cited as evidence about the reseller's own surface rather than the model: Replicate's schema for flux-dev, plus the equivalent pages for flux-schnell, flux-1.1-pro, flux-2-pro and flux-kontext-dev.

Product facts checked against our own live pages on August 29, 2026: /faq for the free daily allowance, and /pricing for the Pro price and for image prompt generation starting at Pro.

Frequently asked questions

Free Chrome Extension

Stop rewriting prompts. Start shipping.

Works with ChatGPT, Claude, Gemini, Grok, Midjourney, Ideogram, Veo3 & Kling. 5.0★ on the Chrome Web Store.

Create An Account