Per-render drift: the real reason AI ads break brand consistency
Everyone blames the prompt. The cause is that every render is an independent sample, and a style guide describes a look without ever deciding a shot. Here is the layer contract we use instead, and the parts we apply in code after generation.
What is in here
- Why do AI-generated ads look inconsistent?
- Your designer was the consistency. The guide never was.
- What actually drifts when the prompt does not change?
- The color field that belonged to somebody else's brand
- How do you keep AI-generated ads on brand?
- Enforce it at creation time, not in QC
- What this is worth, honestly
Generated ads drift off brand because every render is an independent sample and nothing carries between them, so anything your brief left unspecified gets filled in from the model's own average. A style guide cannot fix that. Guides describe a look and leave the shot to whoever is holding the tool. What holds a brand together across hundreds of generations is a decided visual language plus deterministic assembly: one fixed grade, one grain plate, one type treatment, one shadow geometry, all applied in code after generation, so the only thing the model ever produces is the subject.
- Why identical prompts still return work that does not look like your brand
- The difference between a brand guide and a brand system, stated as a table
- The layer contract: which parts a model touches, and which parts code owns
- The device we ported from a reference brand as craft, and had to strip out of every film
Three statics for our own brand, generated separately
Three worlds, one language01Why do AI-generated ads look inconsistent?
Because each render is drawn on its own, from scratch, with no knowledge of the last one. Everything you specified is honored approximately. Everything you did not specify is filled in from the model's prior, which is the average of an enormous amount of other people's advertising. On brand, to a generator, means near the middle of everything it has ever seen.
That is why the prompt is the wrong place to look. You can write a perfect prompt and get twelve outputs that share a subject and disagree about everything else: the warmth of the light, how contrasty the shadows are, how heavy the type sits, whether the edges are crisp or soft. Each of those is a decision. Nobody made them, so the sampler did.
A brand guide against a brand system
The distinction that fixes it| Dimension | A brand guide | A brand system |
|---|---|---|
| Color | Six approved hex values | Yes. One grade, one file, applied last on every build |
| Type | A typeface and a scale | Yes. A weight, a plate under it, and a rule for what happens when the words are too long |
| Photography | Mood board, adjectives | Yes. Named camera heights, focal lengths and what is never shot |
| Texture | Rarely mentioned | Yes. One grain plate, one opacity, on every asset |
| Motion | A logo animation | Yes. One easing curve, a list of moves, and moves that are banned |
| Enforcement | No. A PDF and somebody's memory | Yes. Code that refuses to render the wrong thing |
02Your designer was the consistency. The guide never was.
Hand a good designer a brand guide and they fill the gaps with taste, and their taste is consistent because it belongs to one person. Hand the same guide to a sampler and the gaps get filled with the average. The guide was never the thing keeping your brand together. The designer was.
A guide describes a look. It does not decide a shot.
The line we put at the top of every brand system we write
So the work is deciding, in advance, what a guide leaves open. Not more adjectives. Values in a file that a build reads. Here is the shape of one.
The decided part of a visual language
Copy this shapeGRADE ....... one file, applied last, identical on every build
GRAIN ....... one scanned plate, tiled, never scaled, re-seated
per frame, overlaid at 0.10
EDGE ........ 1.6px gaussian feather on every cutout.
no keyline, no torn edge, nothing else
EASING ...... smoothstep only. no overshoot, no spring, no bounce
SHADOW ...... an offset blurred copy of the element's own alpha,
offset as a fraction of the element's width,
never a fixed number of pixels
BANNED ...... chromatic aberration, halation, scanlines, tape,
pins, staples, full-frame brand color fieldsThe shadow line is the one worth stealing. Offsets expressed as a fraction of the element's own width scale correctly when the element does. Offsets in fixed pixels do not, which is precisely why composited AI elements read as pasted on: a big object and a small object in the same frame end up wearing the same shadow.
The decided parts of one of our own statics
Tap the numbers
03What actually drifts when the prompt does not change?
Grade and white balance drift first, and they drift most. Then contrast and how deep the blacks sit. Then edge quality, texture and grain, which is the one nobody thinks to specify. Then type weight and the space around it. Then the small stuff that turns out to be identity: how heavy a shadow is, whether an object is centered or offset, how much air sits above a headline.
The fix is structural rather than verbal. Let the model make the subject and nothing else, then build everything around the subject in code, the same way every time. It is the same underlying problem as holding one person across six shots, moved up a level from a face to a whole brand.
The layer contract: who owns which layer
Layer anatomy04The color field that belonged to somebody else's brand
We spent weeks admiring a reference system in which a solid brand-color frame fires between shots, ported it into a client engine as craft, and had the owner catch it in the delivered films. In that brand nine products each own a signature color, so a field cutting to a color is naming a SKU; under any other brand it names nothing and reads as a slide transition, which is why every film in the set was recut to remove it and the engine now refuses that shot type with an error naming the reason.

The same disease in a second organ
The reverse failure is worse and harder to see. We once retired eight finished ads at once because they differed on every mechanical axis and matched on all six of the ones a viewer actually reads, and what makes an ad resist fatigue is that story at full length.
Four things people believe about staying on brand
Flip them05How do you keep AI-generated ads on brand?
Decide the visual language once, write it as values rather than adjectives, and apply it in code after generation instead of asking for it in the prompt. The generator's job shrinks to producing subjects. Grade, grain, type, plate geometry, shadow rule and easing never touch a model at all, which is why they cannot drift.
Where each decision gets made, and where it gets applied
The assembly orderWhere does your consistency effort actually go?
Move the slidersAudit your own brand system in ten minutes
Tick as you go - it remembers06Enforce it at creation time, not in QC
We audited two weeks of our own work against our own rulebook and the pattern was unambiguous. The rules that never broke were the ones enforced by a gate in the only path to the effect. The rules that broke repeatedly were the ones living as prose in a document that people were expected to remember.
A build refusing its own output
Watch it runIn practice: text never escapes the plate it belongs to, because the box fits the words or the plate grows, decided before render rather than found after. Text escaping its box stops being a review note and becomes a build failure. That is the argument of our piece on deterministic pipelines plus AI generation, and it is the least glamorous thing we do.
What we found when we measured our own enforcement
Our own audit07What this is worth, honestly
A system like this is a hygiene floor, not a growth engine. CreativeX put the nearest measurement on it: about ten percent more Creative Quality Score buys around two percent off CPM across roughly 822,000 observations. Real and small. We clear the floor every time, at speed. We will not tell you the grain plate is why the ad won.
Four films, four brands, four languages
Ours, made this wayWhat the system genuinely buys is cadence. Motion's benchmark set, 550,000 ads across more than 6,000 advertisers, found top accounts and average accounts running the same rough hit rate, with the top large account producing 5.99 winners a month against 1.75 on identical spend, purely by shipping around 31 new creatives a week instead of 11. Nobody sustains 31 a week if every one of them needs a person to protect the brand by hand.
What it costs you
One honest limit. A decided language is a constraint, and constraints cost you shots. We have lost frames we liked because a rule refused them, and kept the rule anyway. That trade is also why our work for two brands in one category should never look like it came from the same director, which is the subject of one visual language per brand.
Questions people actually ask
Open what you needWhy do AI-generated ads look inconsistent even with the same prompt?
Because each generation is an independent sample rather than a continuation of the last one. Your prompt constrains part of the image; everything it leaves open is filled from the model's own average. Grade, contrast, edge quality and texture drift first, and those four are exactly what people read as brand.
How do I keep AI ads on brand?
Shrink what the model decides. Let it produce the subject, then apply grade, grain, type treatment, plate geometry and shadow rule in code afterward, identically on every asset.
Then write your brand system as values rather than adjectives. A hex list and a mood board are not enough to make two hundred renders agree with each other.
Do brand guidelines work for AI-generated content?
Partly, and less than people expect. A guide is written for a human who will fill the gaps with judgment. A generator fills the same gaps with the statistical middle of everything it has seen. Guidelines have to be converted into decisions and defaults before they survive contact with generation.
What is per-render drift?
The variation introduced by each independent generation, even when nothing about your input changed. It is not a defect in a particular model and no prompt removes it. It is what sampling is. You manage it by reducing the surface it can act on, rather than by trying to argue with it.
Should every ad in a campaign look the same?
No, and chasing that is its own failure. We retired eight finished ads at once because they matched on argument, subject, world, energy, point of view and borrowed genre. Consistency means one language spoken in different rooms. Sameness is what a viewer notices instantly and a maker never can.
Can I fix brand consistency with a LoRA or a fine-tune?
It helps with subject identity and it does not touch the layers that actually carry a brand. A fine-tune will not give you one grade, one grain, one type treatment or one shadow geometry across every asset. Those are assembly decisions, and assembly is where they belong.
Most brand inconsistency in generated work was caused by decisions nobody had made, on a document that read as though they had.
Where the numbers came from
- Motion. Creative Benchmarks 2026: winners are rare - 550,000+ ads, 6,000+ advertisers, about $1.3bn spend; used for the cadence figures
- VidMob and TikTok. The Science of the Hook - 1,678 ads and 7.3bn impressions; used for the static logo overlay figure
- CreativeX. Creative Quality Score - roughly 822,000 observations; used for the quality-to-CPM relationship
Every figure above links to the place it was published. Numbers marked as ours are measured inside this studio and we say so where they appear. We do not print a statistic we cannot point at.
Send a link. Get one finished ad back.
One finished cut from your own product, inside three days, free and yours to run whether or not we ever work together. You will get the visual language written down with it: the grade, the type treatment, the texture and the list of things your brand does not do.
Replies within a day. Ad within three.