Chrome extension that imports the chess.com game you're currently viewing into lichess.org with a single click — so you can use Lichess's analysis board on chess.com games.
sequenceDiagram
participant U as You
participant E as Extension
participant C as chess.com tab
participant L as lichess.org/api/import
U->>E: Click "Import current game to Lichess"
E->>C: Inject script: open Share modal, read PGN
C-->>E: PGN text
E->>L: POST pgn=...
L-->>E: { url }
E->>C: Inject script: close Share modal
E->>U: Open new tab at imported game
- Open any finished chess.com game page (live or daily).
- Click the extension icon → Import current game to Lichess.
- The extension automates the chess.com share modal to grab the PGN, then POSTs it to
https://lichess.org/api/import. - A new tab opens on lichess with your imported game, ready for the analysis board.
The extension does not log you in anywhere. For the best experience, log in to lichess.org in your browser first — imports made while logged in are attached to your account and appear in your games list. Imports made while logged out still work, but are anonymous and only accessible via the URL you get back.
- Download the latest
lichess-analyzer-vX.Y.Z.zipfrom the Releases page. - Unzip it.
- Visit
chrome://extensions, enable Developer mode, click Load unpacked, and pick the unzipped folder.
- Clone this repo.
- Visit
chrome://extensions, enable Developer mode, click Load unpacked, and pick this folder.
activeTab+scripting— to read the PGN from the chess.com tab you're currently on.- Host access to
https://www.chess.com/*andhttps://lichess.org/*.
No tracking, no background processes, no data sent anywhere except lichess.org/api/import.
- Chess.com's DOM changes occasionally. If extraction breaks, open an issue with the page you tried.
- Lichess rate-limits imports — if you see
429, wait a bit before retrying. - The share button only appears on finished games.
npm install
npm run lintCI runs ESLint and uploads an unpacked-extension artifact on every push.
Releases are driven by release-please. Commit to main using Conventional Commits (feat:, fix:, chore:, feat!: for breaking, etc.). Release-please opens and maintains a release PR that bumps manifest.json and updates the changelog; merging that PR cuts a vX.Y.Z tag, which the release workflow turns into a GitHub Release with the zip attached.
GNU Affero General Public License v3.0 — see LICENSE.
