PromptZone - Leading AI Community for Prompt Engineering and AI Enthusiasts

Cover image for How SDXL Style Presets Work and How to Write Your Own
Samir Korhonen
Samir Korhonen

Posted on

How SDXL Style Presets Work and How to Write Your Own

Style presets are the cheapest way to pull a consistent look out of SDXL: no LoRA to train, no sampler to retune, no extra VRAM. What follows is what a preset contains, how front-ends apply one, which parts of it move the image, and how to build a library of your own.

A style preset is a prompt template, nothing more

Strip the UI away and an SDXL style is two strings and a placeholder:

{
  "name": "Cinematic",
  "prompt": "cinematic film still of {prompt}, shallow depth of field, 35mm, film grain, dramatic backlight",
  "negative_prompt": "cartoon, illustration, flat lighting, low contrast, deformed"
}
Enter fullscreen mode Exit fullscreen mode

Pick that style and the front-end drops your subject into {prompt}, then appends the second string to whatever is in your negative box. That is the whole mechanism: no adapter weights, no extra model, no conditioning trick. The style is text, and it costs nothing at inference time.

Two consequences: anything a preset does you can do by hand, so a style library is a vocabulary lesson as much as a shortcut; and being only text, the same JSON runs against base SDXL, a fine-tune, or another model.

Warm golden-hour sunlight falling across a windowsill

Where styles live

Tool Mechanism Stacking
Fooocus Built-in style list in the Style tab Yes — concatenated, and order matters
AUTOMATIC1111 WebUI styles.csv in the install root, with {prompt} support Yes, in selection order
ComfyUI No native styles; concatenate strings ahead of the CLIP text encode Whatever your graph does
Diffusers String formatting before the pipeline call Your code's problem

If a front-end has no {prompt} placeholder it appends your subject to the end of the style string instead. That is not cosmetic: SDXL weights early tokens more heavily, so "portrait of a lighthouse keeper, oil on canvas" and "oil on canvas, portrait of a lighthouse keeper" are not the same prompt. When porting a style between tools, check which end your subject landed on.

The parts of a style that actually do something

Most presets stack clauses from five buckets:

  • Medium and process — oil on canvas, gouache, 35mm film photograph, screen print, clay render. The highest-signal clause in almost any style. If you add one thing, add this.
  • Light — golden hour, hard rim light, overcast softbox, single candle. Light sells a look better than any adjective about quality.
  • Optics — 35mm, 85mm, macro, wide angle, shallow depth of field, tilt-shift. These carry real meaning because the training captions carried it.
  • Color and grade — muted earth tones, high-key, teal and orange, monochrome, duotone.
  • Detail and quality tokens — "highly detailed", "8K", "masterpiece". Far less signal than naming a medium, a light, or a lens. A preset that is mostly quality tokens is mostly noise.

Sanity test for a downloaded style: delete every clause from the last bucket and regenerate on the same seed. If little changes, the style was earning its keep elsewhere.

The negative half is not filler

The negative string does real work, and it is where portability problems start. A style built for photorealism typically pushes "illustration, cartoon, anime, painting" into the negative — drop it onto an illustration subject and the two halves of your prompt fight each other.

One caveat before you spend an hour debugging: distilled few-step checkpoints that run at CFG 1 — the Turbo and Lightning SDXL variants — have classifier-free guidance effectively off, so the negative prompt does nothing at all while the positive half still applies. If a preset behaves differently on a fast checkpoint, this is usually why.

Rows of colorful paint swatches laid out on paper

Building your own preset, step by step

  1. Fix a control subject and a seed. One neutral subject — "a wooden rowboat on a lake" — with the seed locked. Everything after this is a comparison against that baseline.
  2. Write the medium clause first. Generate. If the image did not move, the clause is too generic: "1970s Kodachrome slide" beats "photo".
  3. Add one clause at a time. Light, then optics, then grade, regenerating after each. Delete anything that changes nothing — every token competes with the subject.
  4. Move exclusions into the negative. Whatever you keep phrasing as "not X" belongs in the negative string.
  5. Save it with the placeholder, then test it on three subjects unlike your control — a face, an interior, a landscape. A style that only works on one subject is a prompt.

Refactoring a prompt into a style

Here is a self-contained SDXL prompt of the kind that circulates as inspiration. It works, but it fuses subject and style:

8K photography, pirate ship sailing in a storm inside of a glass globe on a window ledge at golden hour, 35mm, professional, 4k, highly detailed, great composition
Enter fullscreen mode Exit fullscreen mode

With a short negative prompt to match:

glitch, ugly, low contrast
Enter fullscreen mode Exit fullscreen mode

Everything except the ship-in-a-globe is style: medium, light ("golden hour"), optics ("35mm"), and a tail of quality tokens. Pull the subject out and you have a reusable preset:

{
  "name": "Golden Hour Still Life",
  "prompt": "35mm photograph of {prompt}, golden hour light through a window, shallow depth of field, natural color, sharp focus",
  "negative_prompt": "glitch, low contrast, harsh flash, oversaturated, deformed"
}
Enter fullscreen mode Exit fullscreen mode

The same look now applies to a bonsai, a chess set, or a cat on a radiator, and you tune one string instead of rewriting the prompt.

Where styles break

  • Subject collision. A preset that says "portrait, headshot" crops a landscape subject into something that is neither.
  • Stacking fights. Two presets are concatenated; if one negates a medium the other asserts, you get mush. Stack at most two, and read the resulting string.
  • Baked-in looks. Checkpoints trained hard on one aesthetic half-apply a style that pulls elsewhere. That is the checkpoint winning, not the style failing.
  • Token budget. SDXL's text encoders work in 75-token chunks. A long style plus a long subject pushes part of the subject into a later chunk, where it carries less weight — the usual cause of "the model ignored half my prompt".
  • Vocabulary drift. Wording tuned against SDXL does not transfer one-for-one to architectures with different text encoders. Re-run your library on a new model first.

Close-up of a vintage film camera lens

Takeaways

A style preset is a prompt template with a placeholder and a negative half — knowing that is enough to stop treating style libraries as black boxes. Judge one by its medium, light, optics and grade clauses; treat quality tokens as decoration. Build your own against a fixed subject and seed, one clause at a time. Keep presets short enough to leave room for the subject, and re-test them whenever you switch checkpoints: a style describes one model's vocabulary, and that changes with the model.

Top comments (0)