How do I calculate a position where both sides have a developing mating attack but neither is giving check yet?
These answers restate the rules implemented by our open-source engine, which follows the WXF laws and is regression-tested against the official 110-diagram repetition casebook. Where an answer refers to a specific position, that position lives on the linked reference page, where the build verifies it against the engine before publishing.
Direct answer
Count how many moves each attack genuinely needs to land, then compare the totals directly. Unlike a mutual check race, where every move is forced, a race between two slower attacks lets each side insert a useful developing or defensive move along the way, so the calculation has to account for those extra moves too, not just the pure attacking sequence for each side in isolation.
Why this differs from a check race
When both sides are already giving checks, the sequence is mostly forced and easy to count move by move. When neither side is in check yet, both players have real choices, including a move that slows the opponent's attack rather than advancing your own, which makes a simple move count unreliable on its own.
A more reliable way to compare
Estimate the number of moves your attack needs assuming no interference, then ask whether your opponent has a single move that meaningfully delays it, adding a defender, blocking a key file, without abandoning their own attack. Do the same for their attack against you. The side that can slow the opponent for free while still attacking on schedule is usually winning the race.
Related questions
Does defending always cost a tempo in the attack?
Often, but not always; a move that both defends and develops toward your own attack costs nothing extra.
Is it ever right to abandon your own attack to defend fully?
Yes, if the count clearly favours your opponent, since arriving first with real threats usually beats arriving second with a bigger one.