Render one. Brown hair. Render two. Brown hair. Render three. Suddenly: dark blonde, with highlights, somehow.
This is the most common drift complaint I hear from people building avatars in ChatGPT. The character is "consistent" except for one detail that quietly mutates between renders. Hair color is the worst offender. Eye color is second. Cap color is third.
Why it happens
It's not random. The model treats vague color words as soft suggestions. "Brown hair" can mean anything from light chestnut to near-black depending on what other context the model is reading. "Dark hair" is even worse. Both are the kind of word that makes sense in conversation but leaves room for interpretation in image generation.
ChatGPT is the prompt anvil — open it and try the skeleton in this post.
The fix is to anchor the color with two extra words: a tone and a comparison.
The two-word fix
Don't write "brown hair." Write "warm medium brown hair, like a chestnut." The structure is tone + base color + comparison object. Three pieces. The base color alone is what gives the model room to drift. Adding tone and a comparison locks the value.
Other examples:
"Hazel eyes" → "warm hazel eyes with a green ring, like a tabby cat's"
"Dark cap" → "matte black cap, the kind a baseball player wears, no logo"
"Blue shirt" → "muted cobalt blue shirt, washed denim tone, not bright"
The comparison is the part most people skip. It's also the part that does the most work. The model knows what a chestnut looks like, what a tabby cat's eye looks like, what a baseball player's cap looks like. Pinning your color to a real-world reference object is way more deterministic than picking a hex code.
Where to put it
Put the locked colors in the APPEARANCE block of your avatar system prompt, then never restate them in the per-render prompt. The mistake people make is repeating "brown hair" in every prompt — every restatement is a new chance for the model to interpret it differently. Define it once, in the canonical bio, in the locked format above. Then trust it.
Per-render prompts should describe what's different about the scene — the setting, the lighting, the action, the expression. Not the avatar's anatomy. The anatomy lives in the system prompt and never gets touched.
The one-minute audit
Open your avatar's bio. Read every color word in it. For each one, ask: would two different artists draw the same thing from this description? If the answer is "probably not," add a tone and a comparison.
That single audit, applied to one bio, has fixed more drift in my renders than any model change ever did.
— Jeff
ChatGPT is the prompt anvil — open it and try the skeleton in this post.