Five things that quietly ruin a LoRA before training even starts

Five things that quietly ruin a LoRA before training even starts
Most bad LoRAs are not a settings problem. The learning rate was fine, the
steps were fine, the base model was fine. The dataset was broken and nothing
told you.
Training does not validate your folder. It takes what you give it and runs.
You find out two hours later when the results look wrong and you have no idea
which part to blame.
Here is what I check every time now.
1. Missing captions
An image with no txt next to it does not throw an error. Depending on your
trainer it either gets skipped or trained with an empty prompt, which is worse.
An empty prompt teaches the model that this image is what "nothing" looks like,
and that bleeds into every generation.
Ten images, one without a caption, and you have quietly poisoned ten percent
of your set.
2. Orphan txt files
The reverse case. You deleted a bad image but left its caption behind. Harmless
in most trainers, but it makes your file count lie to you. You think you have
40 pairs, you have 37 pairs and 3 ghosts.
3. Duplicate captions
This is the one that gets everybody. You caption twenty images by copy pasting
a base description and editing the details. Three of them you forget to edit.
Now you have three different images sharing one identical description. The model
cannot tell which visual feature belongs to which word, so it averages them.
This is a real cause of that soft mushy look people blame on the base model.
4. Resolution drift
Your set is 1024x1024 and two images came in at 900x1200 because you grabbed
them from somewhere else. Bucketing handles this, but bucketing works by grouping
similar sizes together, and a bucket with two images in it gets seen far less
often than a bucket with thirty.
Those two images barely train. If they were your only shots of a specific angle,
that angle is gone.
5. Caption length past the limit
CLIP takes 75 tokens. Everything after that is cut. Not compressed, cut.
People write beautiful 40 word descriptions and put the most important detail at
the end, where it never reaches the model. If you use a trigger word, it goes
first. Always.
Roughly, a token is a bit more than a word. If your caption is over 55 words you
are probably losing the tail.
How I check now
I got tired of doing this by hand so I built a small tool for it. Drop the folder
in, it lists every pair and flags all five of these. You fix them in one screen,
bulk add a trigger word if you need one, download the corrected folder.
Runs in your browser, nothing gets uploaded, free and no signup:
https://huggingface.co/spaces/SEEDRAAI/seedra-dataset
One more thing that is not a bug
Caption what varies, not what stays the same.
If your character has red hair in all 40 images and you write "red hair" in all
40 captions, you have taught the model that "red hair" is a thing you have to
ask for. Leave it out and it becomes part of the character itself.
Caption the pose, the outfit, the lighting, the background. Those are the things
you want to be able to change later. Whatever you never caption is what the LoRA
learns as fixed.
This is the single biggest difference between a LoRA that holds a face across
200 generations and one that drifts.
---
Written by SEEDRA. We build production ComfyUI workflows and train custom LoRAs
to order. seedraai.com