The short answer
Across 3 independent positions, moving the same piece twice was never the best move. The gap to the best move averaged 0.51 pawns and never exceeded 0.88. Not losing, then — but consistently a little worse.
What we are testing
The opening is about getting pieces to useful squares quickly. Moving a piece that is already out delays bringing out a new one, which is why beginners are told not to move the same piece twice.
Plenty of established openings break that rule, though. So how much does the repeat move actually cost, and does it cost anything at all in the lines where theory allows it? Three positions, every candidate searched.
How we tested it
Testing a rule of thumb in one position cannot tell you whether you are seeing the rule or just that position. So we picked 3 positions of different character — open and closed, White to move and Black to move. In each one, every candidate is played and the resulting position is searched. All the numbers are real output, not estimates.
Position by position
| Position | Best move | Move tested | Gap |
|---|---|---|---|
| Moving the same knight again in a 1.d4 opening (White to move) | c4 +0.29 | Ne5 −0.22 | 0.51 |
| The same knight twice in the Italian (White to move) | d3 +0.23 | Ng5 +0.08 | 0.15 |
| Black moving the same knight twice (Black to move) | Be7 −0.35 | Nd4 −1.23 | 0.88 |
Position 1|Moving the same knight again in a 1.d4 opening (White to move)
1.d4 d5 2.Nf3 Nf6
The best move was c4 (+0.29). Ne5 scored −0.22, a gap of 0.51.
Tap a candidate move to change the board
| Move | Evaluation | Diff vs best |
|---|---|---|
| c4 | +0.29 | best |
| Bf4 | +0.17 | −0.12 |
| e3 | +0.16 | −0.13 |
| g3 | +0.09 | −0.20 |
| Ne5 | −0.22 | −0.51 |
Position 2|The same knight twice in the Italian (White to move)
1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6
The best move was d3 (+0.23). Ng5 scored +0.08, a gap of 0.15.
Tap a candidate move to change the board
| Move | Evaluation | Diff vs best |
|---|---|---|
| d3 | +0.23 | best |
| d4 | +0.17 | −0.06 |
| Ng5 | +0.08 | −0.15 |
| Nc3 | −0.11 | −0.34 |
| O-O | −0.26 | −0.49 |
Position 3|Black moving the same knight twice (Black to move)
1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O
The best move was Be7 (−0.35). Nd4 scored −1.23, a gap of 0.88.
Tap a candidate move to change the board
| Move | Evaluation | Diff vs best |
|---|---|---|
| Be7 | −0.35 | best |
| Nxe4 | −0.36 | −0.01 |
| b5 | −0.44 | −0.09 |
| d6 | −0.46 | −0.11 |
| Nd4 | −1.23 | −0.88 |
Where the difference comes from
In all three positions the repeat move came out below the best one, by 0.51 on average. In the engine’s lines the pattern repeats: while one side moves the same piece around, the other finishes developing, and the wandering piece ends up driven back to where it started.
But the spread is wide. Black’s Nd4 drops 0.88, while Ng5 in the Italian costs only 0.15 — and Ng5 is the entry to the Fried Liver Attack, played countless times. Breaking the rule is fine when what you get for it is large enough, and the numbers show exactly that.
Exceptions
What this measures is the cost of the repeat move by itself. A move like Ng5, which spends the tempo to aim directly at a weakness (f7), earns almost all of it back.
Put the other way round: do not move a piece again unless you can say what the move is for. "Never move the same piece twice" is a worse fit for the data than "if you move it again, be able to explain why".
What this does and does not show
- It shows: what the engine returned for these 3 positions, with every candidate searched to depth 20. The numbers are the raw output; none of them were adjusted afterwards.
- It does not show: anything about "all positions" — a sample of 3 is a very small slice of chess.
- The assumption: an evaluation assumes best play from both sides. Over the board, an inaccurate reply changes everything.
- Reproducing it: the positions and candidates live in
tools/generate-chess-analysis.mjs, the results inassets/chess-analysis.json. The same settings give the same numbers.
What to remember at the board
- In all three positions, moving the same piece again was not the best move
- The gap averaged 0.51 and reached 0.88
- Ng5 in the Italian costs only 0.15 — enough compensation to be theory
- Move a piece twice only when you can name what it attacks
Try it yourself
You can try the same idea in a real game. Every move is scored by the engine, so the difference between principled and careless moves shows up immediately.