Infinite XO

Start a game

  1. A registered player can create a room for another player. Registered players and guests can start an unrated match against the bot or a second player sharing the same device. A guest-created room is public to view but cannot be joined remotely.
  2. A second signed-in player joins from the lobby or shared room link.
  3. Before play begins, the host may use Kick on the other player's card. That player cannot view or rejoin the room, and another player may take the open slot.
  4. The second player marks themselves ready. The creator is ready by default, and either player can change their ready status before play begins.
  5. The creator chooses 5, 10, or 30 seconds per move; 10 seconds is selected by default. Once both players are ready, the host starts the game. The server randomly assigns X and O, and X takes the first turn.
  6. Choose Player, Bot, or Local player under Opponent. Bot shows a Difficulty level slider in the room creation box; its integer range runs from 0% to 100% and defaults to 50%. Local player shows two inputs for unique player names in the same box. Select Create Room after choosing the applicable values.

Bot and local matches start immediately and do not affect ELO. For a local match, enter two unique player names; the same browser controls the player whose turn is shown above the board. Guests may also view other Infinite XO rooms. On every bot move, the server independently uses Difficulty level as the percentage chance to use Perfect, which selects the best move from a solved graph of board positions. Otherwise, the bot looks for an immediate win, then an immediate block, and chooses a random unoccupied cell if neither is available. At 0% the bot always uses Win, Block, Random; at 100% it always uses Perfect. Perfect treats unresolved position cycles as draws and intentionally ignores the live threefold-repetition history when selecting a move.

Every room is public to view. A registered online player room's Joining setting is Open by default. Host approval lets the host Accept or Decline a pending request, while 4-digit passcode requires the exact code chosen at creation. A player may cancel a pending request and stays in any existing waiting room unless accepted. Only the host can see the passcode. Bot and local matches use Open.

Take a turn

Place your symbol in any empty cell. Players alternate turns, and a move cannot be placed on an occupied cell.

You can click an empty cell, or use the arrow keys to select a cell and press Space to place your mark.

The server counts down the selected time for the current move. If time expires, the server selects a random empty cell for that player. The next human receives the full selected time after the automatic move and any immediate bot response.

Your marks are ordered from newest to oldest. When you place a fourth mark, your oldest mark disappears immediately. The glowing mark shows which of your marks will disappear on your next turn.

End the game

You win by keeping three of your marks in one horizontal, vertical, or diagonal line. A win is checked only after any required oldest-mark removal, so a line that is broken by that removal does not win.

A position includes both players' marks in the order they will disappear and the player whose turn is next. The second time the same position appears, a warning says that one more appearance will draw. The third appearance ends the game as a draw.

Ratings and leaving

In a two-player room, a three-in-a-row win or repetition draw updates both players' Infinite XO ELO. A draw gives each player a 0.5 result score. During an active game, either player may choose Resign to remain in the completed room or Resign & Exit to return to the lobby after that same resignation succeeds. The opponent wins, both ratings are updated, the resigning player remains in the completed roster, and the navbar control otherwise changes to Exit. A direct active Exit request is treated as the same resignation. Local matches and matches against the bot are unrated; exiting a local match ends it without a rating change. Leaving a waiting room has no rating effect. The top-left links and closing the page change presence only and let a player return. Spectators may watch but cannot place marks or resign. After a rated result, each player card shows its ELO change in green for an increase, red for a decrease, or neutral white when unchanged.

During a rated game, open ELO changes in the right panel to compare the projected ratings. A player selects Win, Draw, or Loss from their perspective. A spectator instead selects either named player as the winner or Draw. Selecting a scenario changes only the preview; it does not change either rating or the game result. The actual update is calculated when the game completes. Bot and local games do not show this rated-game preview.