
Key facts.
- Judges favor their own work: LLM evaluators show self-preference bias, rating their own generations higher than equal-quality outputs from humans or other models (Self-Preference Bias in LLM-as-a-Judge, arXiv:2410.21819, 2024).
- Position changes the verdict: the order in which two answers are presented significantly sways which one an LLM judge prefers, independent of quality (Judging the Judges: Position Bias, arXiv:2406.07791, 2024).
- Length and style win: judges systematically rate longer, more elaborately-styled answers higher, with style bias strong across models (0.76 to 0.92), so polish can beat correctness (Justice or Prejudice?, arXiv:2410.02736, 2024).
Why is an LLM judge biased?
Because it scores the same way it writes, on surface features it learned to associate with quality. It recognizes its own style and rates it higher, a self-preference bias that's a problem when the model judging is also the model being improved. It reads length and polish as competence, so a verbose, well-formatted answer outscores a terse correct one. And it's anchored by order: present the same two answers in a different sequence and the preference can flip. None of these track whether the answer is right. They track what the model finds familiar and fluent, which is exactly the thing a confident wrong answer has in abundance.
Why does this quietly corrupt your evals?
Because you're now optimizing toward the judge's biases instead of toward correctness. If your eval rewards length, your system learns to pad. If it rewards the judge's own style, you select for outputs that flatter the evaluator. If position sways the score, your A/B results are partly noise from ordering. The danger is the same as eval-gaming: once a measure becomes the target, the system climbs the measure, and a biased judge points the climb in the wrong direction. You see a rising score and ship, while real quality drifts sideways, because the judge was grading the wrong things all along.

Using a judge without being fooled
The judge is an instrument you calibrate, not an oracle. Every pairwise comparison: run it in both orders, count only agreement, that cancels position bias. Cap length or use length-adjusted win rates so verbosity stops being a free point. Never let a model judge its own outputs in a training loop, use a different, ideally stronger model. Anchor against a human-labeled set so you know the agreement rate, and trust scores only as far as that agreement goes. Keep humans on release decisions.
Mitigations at a glance
| Bias | Mitigation |
|---|---|
| Self-preference | Use a different model as judge than the one being evaluated |
| Position | Swap order and require agreement across both presentations |
| Verbosity | Cap length or use length-controlled win rates |
| Style over substance | Add explicit correctness rubrics; check against ground truth |
| Unknown judge error | Calibrate against a human-labeled set; report agreement rate |
The judge favors its own style and length; a more capable judge carries the bias, rework hides. (arXiv:2410.21819)
The pattern is that an LLM judge grades on the same surface features it writes with, so it rewards its own style, length, and ordering rather than truth, and your evals inherit that tilt. Swap positions, control for length, judge with a different model, and anchor on human labels. None of that's a bigger model, which is an even more confident biased judge. it's a verification layer that grades the work instead of the wrapper, which is what VibeModel builds as the Pattern Intelligence Layer.
Frequently asked questions
Can I trust an LLM judge at all?
As a calibrated, noisy signal, yes. Measure its agreement with human labels on your task, debias for position and length, and use it to triage at scale, but keep humans on the decisions that ship. don't treat its score as ground truth.
What's the worst mistake?
Letting a model judge its own outputs inside the loop that improves it. Self-preference bias means it rewards its own style, so you optimize toward the judge's taste, not toward correctness. Always judge with a different model.
How do I cancel position bias cheaply?
Run each comparison twice, answers swapped. Count a win only when the judge picks the same answer both times. Order disagreements expose the position bias. Exclude them.

