1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> 7 <title>Endgame - Play Chess Online | Free Games, Puzzles & Tournaments</title> 8 <link rel="canonical" href="https://endgame.ai/" /> 9 10 <!-- SEO Meta --> 11 <meta name="description" content="Play chess online for free on Endgame. Challenge friends, compete in tournaments, solve daily puzzles, analyze games with AI, and play against chess bots Hans & Caïssa. Join the chess revolution."> 12 <meta name="keywords" content="chess, online chess, play chess online, free chess, chess game, chess puzzles, chess tournaments, chess analysis, chess AI, chess bot, daily chess puzzle, live chess, FIDE players, chess rating, chess platform, endgame chess" /> 13 <meta name="robots" content="index, follow" /> 14 <meta name="author" content="Endgame" /> 15 16 <!-- Open Graph / Facebook --> 17 <meta property="og:type" content="website" /> 18 <meta property="og:site_name" content="Endgame" /> 19 <meta property="og:title" content="Endgame - Play Chess Online | Free Games, Puzzles & Tournaments" /> 20 <meta property="og:description" content="Play chess online for free. Challenge friends, compete in tournaments, solve daily puzzles, analyze games with AI, and play against chess bots. Join the chess revolution." /> 21 <meta property="og:image" content="https://endgame.ai/img/og-image.png" /> 22 <meta property="og:image:width" content="1200" /> 23 <meta property="og:image:height" content="630" /> 24 <meta property="og:image:alt" content="Endgame Chess Platform" /> 25 <meta property="og:url" content="https://endgame.ai/" /> 26 <meta property="og:locale" content="en_US" /> 27 28 <!-- Twitter Card --> 29 <meta name="twitter:card" content="summary_large_image" /> 30 <meta name="twitter:title" content="Endgame - Play Chess Online | Free Games & Tournaments" /> 31 <meta name="twitter:description" content="Play chess online for free. Challenge friends, compete in tournaments, solve daily puzzles, and analyze games with AI." /> 32 <meta name="twitter:image" content="https://endgame.ai/img/og-image.png" /> 33 <meta name="twitter:image:alt" content="Endgame Chess Platform" /> 34 35 <!-- Structured Data: Organization --> 36
36<script type="application/ld+json"> 37 { 38 "@context": "https://schema.org", 39 "@type": "Organization", 40 "name": "Endgame", 41 "url": "https://endgame.ai", 42 "logo": "https://endgame.ai/android-chrome-512x512.png", 43 "description": "Online chess platform for playing, competing in tournaments, solving puzzles, and analyzing games with AI.", 44 "sameAs": [] 45 } 46 </script>
46 47 48 <!-- Structured Data: WebSite with search --> 49
49<script type="application/ld+json"> 50 { 51 "@context": "https://schema.org", 52 "@type": "WebSite", 53 "name": "Endgame", 54 "url": "https://endgame.ai", 55 "description": "Play chess online for free. Tournaments, puzzles, AI analysis, and chess bots.", 56 "potentialAction": { 57 "@type": "SearchAction", 58 "target": "https://endgame.ai/search/players?q={search_term_string}", 59 "query-input": "required name=search_term_string" 60 } 61 } 62 </script>
62 63 64 <!-- Structured Data: WebApplication --> 65
65<script type="application/ld+json"> 66 { 67 "@context": "https://schema.org", 68 "@type": "WebApplication", 69 "name": "Endgame", 70 "url": "https://endgame.ai", 71 "applicationCategory": "GameApplication", 72 "operatingSystem": "Any", 73 "offers": { 74 "@type": "Offer", 75 "price": "0", 76 "priceCurrency": "USD" 77 } 78 } 79 </script>
79 80 81 <!-- Fonts --> 82 <link rel="preconnect" href="https://fonts.googleapis.com"> 83 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 84 <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500&display=swap" rel="stylesheet"> 85 <link href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap" rel="stylesheet"> 86 <link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@200;300;400&display=swap" rel="stylesheet"> 87 <link href="https://fonts.googleapis.com/css2?family=Handjet:wght@400;500;600;700&display=swap" rel="stylesheet"> 88 89 <!-- Favicons --> 90 <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" /> 91 <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 92 <link rel="shortcut icon" href="/favicon.ico" /> 93 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 94 <link rel="manifest" href="/site.webmanifest" /> 95 <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"> 96 <meta name="msapplication-TileColor" content="#da532c"> 97 <meta name="theme-color" content="#17181C"> 98 <!-- Prevent dark mode extensions from overriding site colors --> 99 <meta name="darkreader-lock" content="true"> 100 <meta name="color-scheme" content="light dark"> 101
101<script> 102 /* 103 * Color-schema pre-boot bootstrap. 104 * Applies the chosen schema class to <html> BEFORE first paint to prevent 105 * FOUC. Mirrors src/composables/useTheme.ts â if you change SUPPORTED, 106 * DEFAULT_SCHEMA, STORAGE_KEY, META_BY_SCHEMA, or the dark-schema + 107 * transparent pairing here, mirror it there. 108 * 109 * `.transparent` is paired with `.dark-schema` because the legacy --cs-* 110 * tokens in src/assets/base.css use `.dark-schema.transparent { ... }` for 111 * alpha panel surfaces. Pairing is dropped only when those legacy tokens 112 * are retired. 113 */ 114 (function () { 115 var SUPPORTED = ['dark-schema', 'light-schema', 'gray-schema']; 116 var DEFAULT_SCHEMA = 'dark-schema'; 117 var STORAGE_KEY = 'color-schema'; 118 var META_BY_SCHEMA = { 119 'dark-schema': '#17181C', 120 'light-schema': '#FFFFFF', 121 'gray-schema': '#F5F5F5' 122 }; 123 124 var root = document.documentElement; 125 var stored = null; 126 try { stored = localStorage.getItem(STORAGE_KEY); } catch (_) { /* private mode */ } 127 var schema = SUPPORTED.indexOf(stored) >= 0 ? stored : DEFAULT_SCHEMA; 128 129 root.classList.add(schema); 130 if (schema === 'dark-schema') { 131 root.classList.add('transparent'); 132 } 133 134 var meta = document.querySelector('meta[name="theme-color"]'); 135 if (meta) { 136 meta.setAttribute('content', META_BY_SCHEMA[schema] || META_BY_SCHEMA[DEFAULT_SCHEMA]); 137 } 138 })(); 139 140 // odd exception handling 141 window.addEventListener('unhandledrejection', (event) => { 142 console.warn('Uhandled exception: unhandledrejection', event); 143 // Check if the error message contains the specific error you want to handle 144 if (event.reason && event.reason.message && event.reason.message.includes('Failed to fetch dynamically imported module')) { 145 console.error('Detected module fetch error.'); 146 let reloadCount = getReloadCount(); 147 148 if (reloadCount < 2) { 149 incrementReloadCount(); 150 console.error('Refreshing page...'); 151 location.reload(); 152 } else { 153 console.error('Max reload attempts reached. Not refreshing page.'); 154 } 155 } 156 }); 157 158 function getReloadCount() { 159 const reloadCount = sessionStorage.getItem('reloadCount'); 160 return reloadCount ? parseInt(reloadCount, 10) : 0; 161 } 162 163 function incrementReloadCount() { 164 let reloadCount = getReloadCount(); 165 reloadCount++; 166 sessionStorage.setItem('reloadCount', reloadCount); 167 } 168 </script>
168 169
169<script type="module" crossorigin src="/assets/index-A0Cx28Hu.js"></script>
169 170 <link rel="stylesheet" crossorigin href="/assets/index-Ds-gSs_T.css"> 171<link rel="manifest" href="/manifest.webmanifest">
171<script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script>
171</head> 172 173<body> 174 <div id="app"></div> 175 <noscript> 176 <div style="max-width:960px;margin:0 auto;padding:40px 20px;font-family:Inter,sans-serif;color:#fff;background:#17181C;"> 177 <h1>Endgame - Play Chess Online for Free</h1> 178 <p>Endgame is a modern online chess platform where you can play chess against friends, compete in tournaments, solve puzzles, and analyze your games with AI-powered insights.</p> 179 180 <h2>Play Chess</h2> 181 <p>Start a game instantly. Play rapid, blitz, or classical chess. Challenge friends or get matched with opponents at your skill level.</p> 182 <ul> 183 <li><a href="/bots">Play Chess vs AI Bots</a> - Challenge Hans and Caïssa, our unique chess AI personalities</li> 184 <li><a href="/tournaments">Chess Tournaments</a> - Join and compete in online chess tournaments</li> 185 <li><a href="/events">Watch Live Chess</a> - Stream and watch live chess broadcasts</li> 186 </ul> 187 188 <h2>Improve Your Chess</h2> 189 <ul> 190 <li><a href="/puzzles">Chess Puzzles</a> - Sharpen your tactical skills with curated puzzles</li> 191 <li><a href="/daily-puzzle">Daily Chess Puzzle</a> - A fresh puzzle every day to train your tactics</li> 192 <li><a href="/analysis">Chess Game Analysis</a> - AI-powered analysis and insights for your games</li> 193 <li><a href="/chesssweeper">ChessSweeper</a> - A fun chess-minesweeper mashup game</li> 194 </ul> 195 196 <h2>Community</h2> 197 <ul> 198 <li><a href="/players">Top Chess Players</a> - Browse FIDE rated players, ratings, and stats</li> 199 <li><a href="/clubs">Chess Clubs</a> - Join or create chess clubs</li> 200 <li><a href="/chesssweeper/leaderboard">Leaderboards</a> - See top performers</li> 201 </ul> 202 203 <h2>More</h2> 204 <ul> 205 <li><a href="/career">Careers at Endgame</a></li> 206 <li><a href="/terms">Terms of Service</a></li> 207 <li><a href="/privacy">Privacy Policy</a></li> 208 <li><a href="/contact">Contact Us</a></li> 209 </ul> 210 </div> 211 </noscript> 212</body> 213 214</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.