apriiori
random

Metachess

Inspired by a variant proposed by Florence; the rules below are our specification of it.

Metachess is standard chess with one extra legality constraint: a move is illegal if, after you make it, your opponent has a chess-legal reply that delivers checkmate. Everything else — piece movement, castling rights, en passant, promotion, the 50-move and threefold-repetition draws — is unchanged.

The new rule generates two new concepts. You are in metacheck when, were it your opponent's turn from the current position, they would have at least one chess-legal mating move against you; equivalently, if you were able to pass your move, you would lose immediately to mate-in-1. Metacheck is not chess check — your king need not be attacked. Metacheckmate is the loss condition: no metachess-legal move available, and you are in either chess check or metacheck. The previously-stalemate case where you have no moves but are in metacheck counts as metacheckmate (a loss), not a draw; ordinary stalemate (no moves, no check, no metacheck) is still a draw. Castling extends the rule to the king's transit square: O-O or O-O-O is illegal if, with the king placed on the square it would pass through (and the rook still on its origin), you would be in metacheck — analogous to the chess rule against castling through check.

new game get a link to share with a friend hot-seat play both sides on this device

While you play, your metalegal moves are highlighted green; chess-legal moves that would hang a mate (and so are illegal here) are highlighted amber. Metacheck shows up as an amber glow around the king, distinct from the red of ordinary chess check. The notation panel records the game in standard SAN.

examples — click any piece to see the rule

back-rank metacheck

White's king is hemmed in by its own pawns. If it were Black's turn, Ra1# would mate — so White is in metacheck right now (amber glow on the king). White's escape: push a pawn to open up an escape square, or sidle the king to f1 where Ra1+ would no longer be mate.

click the king — Kh1 is amber (still gets mated), Kf1 is green.

chess-check becomes metacheckmate

Black is in chess check from Rc2 (red glow). The king has three chess-legal escape squares, but every one of them lets White play a mating reply — so all three are amber, not green. With no legal escape from check, Black is metacheckmated.

click the king to see the three "would hang mate" escapes.

stalemate becomes metacheckmate

In ordinary chess this would be stalemate — Black has no legal move and is not in check, so the game is a draw. But Black is in metacheck (Qg7# is waiting if Black could pass), so this is metacheckmate. The metachess rule converts what would have been a draw into a loss.

the king has the amber glow even though there's no red check.

endgame tablebases

Computed by retrograde analysis under the metachess rule, side-to-move perspective, 50-move rule ignored. Each .pkl is a Python pickle of {position_code: (wdl, dtm)}. position_code is a custom packed int (not a standard format like Syzygy): high bit is side-to-move (1 = white), then 6 bits per piece for its square index (0–63), with piece types implicit in each endgame's canonical slot order — e.g. for KQvk the slots are [white king, white queen, black king]. wdl (win/draw/loss) is +1, 0, or -1 from the side-to-move's perspective; dtm (distance to mate) is plies to mate under optimal play.