The short answer

Across 3 independent positions, moving the same piece twice never came out top of the candidates compared. The gap to the top candidate averaged 0.51 pawns and reached 0.88. Not losing, then — but consistently a little worse.

(“Top” here means top of the candidates compared, not the best move among all legal moves — see how we tested it.)

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.

What is compared is a set of candidate moves relevant to the article, not every legal move: the move under test, and the moves a player would normally consider there. So the top row of a table is not "the best move in the position" but the highest-scoring move among those compared.

On top of that, each position is also searched once with no candidate list, and the move the engine itself picks is recorded (it is shown with each position below). This is there to catch a candidate list that quietly decides the answer: the generator aborts if that free choice beats the top candidate by 0.50 or more. Across the current data the largest such difference is 0.18.

Engine
Stockfish 18 Lite WASM
Search depth
depth 20
Engine settings
stockfish-18-lite-single.js from npm [email protected] (single-threaded), Hash 256MB, ucinewgame before each position
Positions tested
3
Candidate moves analysed
15
Units
Pawns (1.00 = one pawn). From the point of view of the side that moved.

Position by position

PositionTop candidateMove testedGap
Moving the same knight again in a 1.d4 opening (White to move)c4 +0.29Ne5 −0.220.51
The same knight twice in the Italian (White to move)d3 +0.23Ng5 +0.080.15
Black moving the same knight twice (Black to move)Be7 −0.35Nd4 −1.230.88

Position 1|Moving the same knight again in a 1.d4 opening (White to move)

1.d4 d5 2.Nf3 Nf6

FENrnbqkb1r/ppp1pppp/5n2/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 2 3

The highest-scoring candidate was c4 (+0.29). Ne5 scored −0.22, a gap of 0.51.

Searched with no candidate list imposed, at the same depth, the engine also chose c4.

Tap a candidate move to change the board

MoveEvaluationDiff vs top candidate
c4+0.29baseline
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

FENr1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4

The highest-scoring candidate was d3 (+0.23). Ng5 scored +0.08, a gap of 0.15.

Searched with no candidate list imposed, at the same depth, the engine also chose d3.

Tap a candidate move to change the board

MoveEvaluationDiff vs top candidate
d3+0.23baseline
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

FENr1bqkb1r/1ppp1ppp/p1n2n2/4p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 3 5

The highest-scoring candidate was Be7 (−0.35). Nd4 scored −1.23, a gap of 0.88.

Searched with no candidate list imposed, at the same depth, the engine's own first choice was Nxe4 — a move that is in the table above. That search is not the same procedure as playing each candidate first and searching the position that follows, so the order can differ.

Tap a candidate move to change the board

MoveEvaluationDiff vs top candidate
Be7−0.35baseline
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 top candidate, 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 the chosen candidates 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: every number here is built from chess-analysis.json, the raw output of the run — positions, candidates, scores and principal variations. Running the same engine with the settings above reproduces them exactly: the search is single-threaded, the hash is cleared before each position, and the depth is fixed. A different engine version or hash size will give different numbers.

What to remember at the board

  • In all three positions, moving the same piece again fell short of the top candidate
  • 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.

Check it in the Chess Dojo

Free, no account. Play straight from the browser.

♟ Play Chess

Related guides