FLUX 3 docs show 67.8 to 94.1% unchanged pixels: measure your edits

BFL's FLUX 3 Image docs publish pixel-difference examples, not a guarantee. Measure the unchanged-pixel share of your own Sume edits with a 20-line script.

5 min readSume
All posts

Black Forest Labs' FLUX 3 Image editing docs say pixels outside the boxes usually stay the same, warn that shadows, reflections or nearby lighting may still change, and include pixel-difference examples with 67.8% to 94.1% unchanged (Black Forest Labs docs, read 2026-10-04). The product page markets pixel-perfect preservation of untouched elements (Black Forest Labs, read 2026-10-04). Those two statements sit together, and the numbers show a range, not a promise.

What that means for a Sume caller

FLUX 3 Image is not in the Sume image catalog; the closest Black Forest Labs rows are black-forest-labs/flux.2-pro and flux.2-flex (Sume Image API). What carries over is the habit: every model edits, and every model can move pixels you did not ask it to move. The only number that matters for your product is the unchanged share on your photos.

Unchanged-pixel evidence from the FLUX 3 docs, read 2026-10-04
ClaimSource wordingHow to use it
Pixels outside boxesUsually stay the sameDo not treat as exact
Lighting and shadowsMay still changeCheck the area near the edit
Measured examples67.8% to 94.1% unchangedRun your own count

Count unchanged pixels

The script compares an original and an edit of the same size, counts pixels whose channels differ by no more than 8 of 255, and prints the share. If the sizes differ, the edit changed geometry and the count is meaningless, so it says so.

from PIL import Image
import numpy as np

def unchanged_share(original: str, edited: str, tol: int = 8) -> float:
    a = np.asarray(Image.open(original).convert("RGB"), dtype=int)
    b = np.asarray(Image.open(edited).convert("RGB"), dtype=int)
    if a.shape != b.shape:
        raise ValueError(f"size changed: {a.shape} vs {b.shape}")
    same = (np.abs(a - b) <= tol).all(axis=2)
    return float(same.mean())

print(f"{unchanged_share('before.png', 'after.png'):.1%} unchanged")

Make the number comparable

If a model returns a different size, skip it or resample first, and note that you did.

  • Send an edit with no aspect_ratio on Ideogram 4.5, or aspect_ratio auto, so the output keeps the source shape.
  • Use the same photos and the same instruction across models.
  • Report the share beside the size of the edited region; a small edit should leave most pixels alone.

Sources

Related posts

More in Models

All Models posts

Written by Sume