How to caption a LoRA dataset
Captions tell the trainer which parts of each image are variable and which belong to the character. Use one rare trigger word, describe the scene, outfit, pose, and lighting, and leave out the fixed identity traits you want the LoRA to absorb. FLUX.1 works best with natural sentences; SDXL and SD1.5 work well with shorter, tag-style captions.
Published 5 September 2026 · 3 min read
What does a caption do during training?
During training the model is shown an image together with its caption and learns to reconstruct the image from that text. Anything in the image that the caption names can be attached to those words. Anything the caption does not name has to be attached to something else, and the most consistent unnamed thing across your dataset is the character. That is the mechanism behind the common advice to describe what changes and omit what should stay fixed.
So a caption is not a description for a human reader. It is a list of the things you want to be able to control at generation time, prefixed by the token that should summon the identity.
How do you choose a trigger word?
The trigger word is a token the base model has no strong prior for, so the LoRA can fill it with your character. Made-up short strings like "bunn" or "ohwx" work; real names and common words drag in whatever the model already associates with them. Use the same trigger in every caption, put it first, and keep the spelling identical, including case.
Natural language or tags: which does your base model want?
The right caption style follows from how the base model reads text.
| Base model | Text encoders | Caption style that fits |
|---|---|---|
| Stable Diffusion 1.5 | One CLIP ViT-L/14 encoder, 77-token limit | Short comma-separated tags or one compact sentence. Longer captions are truncated. |
| SDXL | Two CLIP encoders (ViT-L/14 and OpenCLIP ViT-bigG), 77-token limit | Tags or one or two concise sentences, still under the token limit. |
| FLUX.1 | CLIP ViT-L/14 plus T5-XXL | Full natural-language sentences. T5 handles long, structured descriptions well. |
What does a good character caption look like?
Start with the trigger, then the subject noun, then only the variable attributes, then the setting, lighting, and medium:
"bunn, a woman wearing an oversized navy hoodie and black biker shorts, standing on a sunny park path in a wide full-body shot, golden hour light. Photorealistic photograph."
Hair colour, eye colour, face shape, and body type are absent on purpose: they are what the LoRA should learn. If the character changes hairstyle across the set and you want to control it later, describe hair; otherwise leave it out. LoRA Dataset writes captions in this shape automatically, and you can edit any of them before export.
What file format do trainers expect?
Almost every trainer reads one plain-text file per image with the same basename: image_001.png pairs with image_001.txt. Kohya sd-scripts selects the extension with caption_extension in the dataset config or on the command line. The Civitai on-site trainer reads the same pairs from a zip upload. LoRA Dataset exports exactly this layout: a zip containing each PNG and its caption text file.
Which caption mistakes quietly ruin a character LoRA?
- Describing fixed identity traits such as eye colour or jawline, which stops them binding to the trigger.
- Using a different trigger spelling in a few files.
- Pasting one identical caption on every image, which teaches nothing about what varies.
- Writing 200-word captions for an SD1.5 or SDXL model that truncates at 77 tokens.
- Leaving auto-generated captions unread. Captioners sometimes invent objects or mislabel clothing.
Frequently asked questions
- Should captions include the character name?
- Use the trigger word instead of a real name. A real name that the base model already knows will pull in that prior and fight your dataset. A made-up trigger starts empty and fills with your character.
- Do I need captions at all?
- You can train with a single class token per image, but you lose control at generation time: everything in the images, including backgrounds and outfits, gets absorbed into the trigger. Captions are how you keep the LoRA about the character and nothing else.
- How long should a Flux caption be?
- One to three sentences that name the variable elements is usually enough. T5 can read longer text, but the caption still needs to be accurate. A long caption with a wrong detail hurts more than a short correct one.
Sources
- Radford et al., "Learning Transferable Visual Models From Natural Language Supervision" (CLIP, 2021)
- Podell et al., "SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis" (2023)
- FLUX.1 [dev] model card, Black Forest Labs
- kohya-ss/sd-scripts dataset config README
- Civitai Education hub (on-site LoRA trainer guides)