Lichess org

Accounts

Lichess recognises all FIDE titles gained from OTB (over the board) play, as well as many national master titles. Here is a list of FIDE titles:

  • Grandmaster (GM)
  • International Master (IM)
  • FIDE Master (FM)
  • Candidate Master (CM)
  • Woman Grandmaster (WGM)
  • Woman International Master (WIM)
  • Woman FIDE Master (WFM)
  • Woman Candidate Master (WCM)

If you have an OTB title, you can apply to have this displayed on your account by completing the verification form, including a clear image of an identifying document/card and a selfie of you holding the document/card.Verifying as a titled player on Lichess gives access to play in the Titled Arena events.Finally there is an honorary title.

No.

This honorific title is unofficial and only exists on Lichess.We rarely award it to highly notable players who are good citizens of Lichess, at our discretion. You don’t get the LM title, the LM title gets to you. If you qualify, you will get a message from us regarding it and the choice to accept or decline.Do not ask for the LM title.

In general, usernames should not be: offensive, impersonating someone else, or advertising. You can read more about the guidelines.

No, usernames cannot be changed for technical and practical reasons. Usernames are materialized in too many places: databases, exports, logs, and people’s minds. You can adjust the capitalization once.

The way of Berserk

That trophy is unique in the history of Lichess, nobody other than hiimgosu will ever have it.

To get it, hiimgosu challenged himself to berserk and win all games of an hourly Bullet tournament.

The Golden Zee

That trophy is unique in the history of Lichess, nobody other than ZugAddict will ever have it.

ZugAddict was streaming and for the last 2 hours he had been trying to defeat A.I. level 8 in a 1+0 game, without success. Thibault told him that if he successfully did it on stream, he’d get a unique trophy. One hour later, he smashed Stockfish, and the promise was honoured.

April 29th, 2021

  • Rewrite the broadcast module, to organize rounds by tournaments
  • Improve Puzzle Streak sounds
  • Add Puzzle Storm/Racer/Streak events to user profile activity
  • Add best Puzzle Storm/Racer/Streak scores to user profile
  • Make the current Puzzle Streak persistent
  • Fix Puzzle Streak scoring bug
  • Fix mobile app unread messages count
  • Many, many new moderation tools
  • Allow hiding team members and forum from non-members
  • Add and improve API endpoints
  • Improve the appeal process
  • Improve the puzzle rating system
  • Allow kids of the same class to send messages to each other
  • Stop using mailgun to send emails
  • Fix race condition in study description updates
  • Fix featuring of titled players simuls
  • Fix analysis annotation on castling
  • Fix flipping the board editor
  • Better hide author of deleted forum posts
  • Internal vendors and libraries upgrades
  • Misc server-side optimizations
  • Misc user interface tweaks and fixes
  • Translate notifications
  • Add Zen mode to puzzle and coordinate training
  • Redesign coordinate training
  • Improve typescript typing and strictness
  • Improve personal data export
  • Automatically close accounts on worse cases of poor in-game behaviour
  • Replace reCaptcha with hCaptcha
  • Allow reporting a forum post
  • Redirect streamer profiles to twitch/youtube directly when streaming
  • Raise server-side analysis limits: 35/day and 160/week
  • Better scrub user data upon GDPR erasure request
  • Add RCF and CFC ratings to user profiles
  • Lock swiss variant and clock after tournament start
  • Improve swiss homepage
  • Fix chat input persistence
  • Fix display of 8 piece game end positions
  • Improve language selector
  • Allow importing up to 32 PGN study chapters at once
  • Automatically set chapter orientation in study PGN imports
  • Improve homepage event system
  • Improve on-site documentation
  • Remove team join requests on account closure
  • Fix learn UI bugs
  • Better puzzles for provisional players
  • Allow sorting own studies alphabetically
  • Many new translations

February 5th, 2021

  • Reworked studies entirely to work around a MongoDB bug that had forced us to disable them. The study changes broke multi-board previews but they will be fixed with the next site update. Requested analysis will also be fixed.
  • Bulk pairings now possible with the API. More than one challenge can be sent with a single API call.
  • Weekly analysis limits raised to 150 from 120.
  • New API endpoint to update team battles.
  • The page that finds puzzles taken from the games of a certain user will no longer show puzzles from closed accounts.
  • Fixed a bug with the «go deeper» button on computer analysis.
  • Sped up the ending animation for Puzzle Storm.
  • Games served via the API should now arrive 50% faster.
  • Ongoing games will now be given for all game exporting APIs with a small move delay.
  • Puzzle Storm runs now expire after 2 minutes if not started.
  • The message that users receive when they look for puzzles from their games and find none will now include «You have no puzzles in the database, but Lichess still loves you very much.»
  • Fixed a bug with mouse wheel scrolling in puzzles.
  • Fixed a bug that was giving incorrect team performances for team battles.
  • Added a link to a page about different ratings systems to the FAQ section about what rating system Lichess uses.
  • Small change in wording for the description of the «Discovered Attack» Motif.
  • Added a link to the BOTs blog post to the page for community BOTs.
  • Clicking on a user’s puzzle rating no longer takes you to your own puzzle dashboard.
  • Closing a team now automatically denies all open join requests.
  • Puzzles arrived at via a direct link are now unrated.
  • Removed the Bongcloud Trophy.
  • New Translation via Crowdin.

July 23rd, 2021

  • Upgrade to Stockfish 14+
  • Improve accessibility of the analysis board and the
  • Improve keyboard navigation
  • Highlight own messages in chats
  • Add Zen mode to Puzzle Storm & Puzzle Racer
  • Fast piece animation for Puzzle Storm & Puzzle Racer
  • Fix little bugs in study interactive lessons
  • Improve simul responsiveness
  • New (examples)
  • Add
  • Let the / API
  • Fix piece set choice in game embeds
  • Fix nested tooltips
  • Add evaluation range to Chess Insights
  • Fix coordinates trainer graph
  • Show piece color in challenges widget
  • Add manual currency selector to /patron
  • Improve correspondence rematches
  • Replace slack with zulip
  • Improve broadcasts UI
  • Remind coaches, streamers and teachers to use 2FA
  • Improve moderation tools
  • Many fixes and optimizations all around
  • Tons of new translations via Crowdin

January 15th, 2021

  • New Puzzle Dashboard added at https://lichess.org/training/dashboard/30/dashboard with «Improvement areas,» «Strengths,» and a full puzzle history.
  • Added 3 new puzzle themes; «Master,» «Master vs. Master» and «Super GM.»
  • Added a «play with the machine» button after a puzzle attempt is made. This allows you to play out the position against Stockfish.
  • New puzzles added, now over 1 million puzzles in the database.
  • Fixed a bug where puzzle history was stored locally after logging out.
  • Fixed some bugs with Puzzles on the app.
  • Team Leaders can now set a password to allow joining a team.
  • Added a section for featured bots on https://lichess.org/player/bots.
  • Improvements to which games are chosen for «top game» on https://lichess.org/tv.
  • Added Chess960 variant tournaments and tweaked variant tournament scheduling to make more hourly variant tournaments.
  • Self-mentions (with «@») are no longer possible in chat.
  • Fixed a bug where BOT accounts were incorrectly shown offline.
  • New Translations via Crowdin.
  • Fixed session fixation with magic login links and added an OAuth scope to create login links.
  • Added text shadow when using a transparent background to make the text more readable.
  • The privacy policy has been updated and a link is now included on the signup page and the email confirming a new account.
  • Fixed a bug that caused some lag when passing 120,000 concurrent users.
  • Released fishnet 2.2.1 The minimum required version necessary for fishnet clients is now 2.1.3, so all standard games are now analysed using NNUE.
  • Fixed a bug that had broken embedded interactive lesson chapters in studies.
  • added to FAQ.
  • Added a logout URL for users with very old browsers that cannot access the menus on the homepage.
  • Fixed a bug with anonymous correspondence seeks.
  • New URL for the changelog: https://lichess.org/changelog. The changelog is also now linked on the website in other documentation like Lichess.org/about.
  • Improvements to the non-visual user interface for blind users.
  • The maximum amount of study topics is bumped up to 64 from 32
  • The maximum number of cores for local analysis has been raised to 32 from 16.
  • Added language that clarifies that playing (for example) Stockfish level 8 is still using Stockfish version 12.

February 28th, 2021

  • Added small circular icons that appear over the pieces that reflect a inaccuracy/mistake/blunder on a game analysis page. They can be toggled on and off in the settings.
  • The color of moves in the movelist will change to reflect an inaccuracy/mistake/blunder.
  • Added a new stand-alone page to team battles that shows team information such as players, score, performance, etc. Accessible at https://lichess.org/tournament//team/
  • Fixed a link on lichess.org/contact that explained castling.
  • Fixed a bug that caused Casual swiss tournaments to not appear in user activity
  • Fixed a bug that was breaking some user’s custom backgrounds.
  • You will have to hover over one of the menu buttons at the top of every Lichess page to open it. This will hopefully prevent accidentally opening it while playing a game, doing a puzzle storm run, etc.
  • Team forum post will now be slower to auto-archive.
  • Translations via Crowdin.

December 30th, 2020

  • Added a list of upcoming or ongoing tournaments that each user has registered for. It can be reached by going to your profile and clicking on «tournament points,» then «upcoming.»
  • The swiss tournaments featured on https://lichess.org/swiss will now be more recent tournaments and exclude tournaments with manually scheduled rounds.
  • Numerous tweaks and fixes to the puzzle system. (The site has been updated 6 times since the last changelog entry, mostly with small changes to the new puzzle system)
  • It is now against Lichess rules to offer a pdf file or software as the prize in a tournament. Please report this with lichess.org/report if you see it happening.
  • Fishnet 2.2.0 is Live!
  • The small orange circle that appeared in the lower right corner of each chessboard has been removed. (It’s still possible to resize the board this way)
  • Fixed a bug where the chat presets weren’t appearing for anonymous games.
  • Fixed a bug where it was sometimes possible to chat in anonymous games that come from the lobby.
  • Fixed a bug where the Racing Kings preview image was flipped for players when they played black.
  • Piece animation durations have been simplified and normalized.
  • New volunteer translations via Crowdin.

February 9th, 2021

  • Added Horsey Piece Set and board.
  • Fixed a bug that was briefly giving the wrong result for games that ended with one player running out of time. .
  • Failed puzzles will now be filtered to the top of the puzzle storm ending page.
  • Fixed a bug that was showing the wrong color for BOT titles on puzzles.
  • Fixed a bug with selecting the time control in anonymous games.
  • Fixed a bug with game completion percentage.
  • Only BOT accounts will now be able to use the BOT-related reasons for declining a challenge.
  • The API to start the clocks of games can now only start API created games.
  • It’s now possible to start all the clocks of a bulk API challenge at once.
  • It’s now possible to send a custom private message along with the API call that makes a challenge for a user.
  • Entering an incorrect password to join a tournament will now show a message saying «incorrect password.»
  • Fixed a bug that was causing the ratings tags of imported games to not import.
  • Added official under-1300 Hourly tournaments.
  • Fixed a bug that caused the capture sound to not play for the opponents moves during Puzzle Storm.
  • Forum posts in team forums will now be featured for longer.
  • Fixed a rare bug that could occur when both players offered a draw during a three-fold-repetition.
  • The board resize handle is now hidden after a Puzzle Storm run begins.
  • It’s now possible to cancel a team join request.
  • Fixed a bug with the «playing» filter on broadcasts.
  • Fixed a bug that was causing fishnet nodes to crash.
  • Tweaked server analysis to make it more efficient.
  • BOT accounts now able to play API bulk-challenged games.
  • Bulk paired API games no longer count for sandbagging detection.
  • Character limit for team descriptions raised to 4000 from 2000.
  • New translations via Crowdin.

March 4th, 2021

  • Fix DGT integration connectivity issue when reloading the page
  • Allow importing PGN with non-standard annotations
  • Improve and add new moderation tools
  • Fix link to
  • Improve design of the contact page
  • Add new appeal page
  • Fix enpassant square in from-position rematch
  • Fix translation in user activity feed
  • Add links to chat etiquette and forum etiquette
  • Fix color-scheme on transparent theme
  • Disable on-the-board annotations when computer analysis is disabled
  • Fix FEN validation when creating a game from position
  • Fix victory screen on lichess.org/learn
  • Fix in-browser stockfish analysis of Atomic games
  • Improve memory management of in-browser stockfish
  • Fix disabled rematch button was sometimes still clickable
  • Remove legacy onesignal push notifications
  • Forum database optimizations (removed f_categ.pos index)
  • Upgrade to latest scala 2.13.5
  • Automatic twitch API token renewal (better stream detection)
  • Fix chat timeout message
  • Streamline kicking several members out of a team
  • New translations
  • Analyse more games automatically for cheat detection
  • Optimize homepage seeks
  • Translations via Crowdin.

Lichess

Lichess is a combination of live/light/libre and chess. It is pronounced lee-chess. Hear it pronounced by a specialist.

Live, because games are played and watched in real-time 24/7; light and libre for the fact that Lichess is open-source and unencumbered by proprietary junk that plagues other websites.

Similarly, the source code for Lichess, lila, stands for lila, seeing as the bulk of Lichess is written in Scala, an intuitive programming language.

Lichess is powered by donations from patrons and the efforts of a team of volunteers.

You can find out more about being a patron (including a breakdown of our costs). If you want to help Lichess by volunteering your time and skills, there are many other ways to help.

Yes. Lichess has indeed inspired other open-source sites that use our Source Code, API, or Database.

  • Blitz Tactics
  • Blunder Bomb
  • lidraughts.org

Fair Play

One minute after a player is marked, their 40 latest rated games in the last 3 days are taken. If you are their opponent in those games, you lost rating (because of a loss or a draw), and your rating was not provisional, you get a rating refund. The refund is capped based on your peak rating and your rating progress after the game. (For example, if your rating greatly increased after those games, you might get no refund or only a partial refund.) A refund will never exceed 150 points.

If your opponent frequently aborts/leaves games, they get «play banned», which means they’re temporarily banned from playing games. This is not publically indicated on their profile. If this behaviour continues, the length of the playban increases — and prolonged behaviour of this nature may lead to account closure.

It’s not possible to apply to become a moderator. If we see someone who we think would be good as a moderator, we will contact them directly.

On Lichess, the main difference in rules for correspondence chess is that an opening book is allowed. The use of engines is still prohibited and will result in being flagged for engine assistance. Although ICCF allows engine use in correspondence, Lichess does not.

External services

  • ornicar/lila-ws WebSocket traffic (Scala)
  • ornicar/lila-fishnet Fishnet move requests (Scala)
  • ornicar/lila-search Search engine (Scala)
  • niklasf/lila-openingexplorer Opening explorer (Scala)
  • niklasf/lila-tablebase Tablebase (Rust)
  • niklasf/lila-push Web Push service (Rust)
  • niklasf/fishnet Distributed computer analysis, using official-stockfish/Stockfish and ianfab/Fairy-Stockfish, a Stockfish fork with chess variant support (Rust, C++)
  • niklasf/lila-gif GIF generator for games and positions (Rust)
  • clarkerubber/irwin AI that learns cheating patterns to help mods (Python)
  • niklasf/lila-ip2proxy Query database of known proxy IPs (Rust)
  • cyanfish/bbpPairings Swiss pairings (C++)
  • ornicar/lichess-puzzler Generate, review and classify chess puzzles (Python, TypeScript)
  • michael1241/discotron Discord integration for Patron status (Python)

October 20, 2020

  • It is now possible to start a swiss tournament, arena tournament or simul from any legal chess position by entering a FEN.
  • Added a setting to event pages. (The big buttons on the homepage that usually link to streams or events) It’s now possible to give a countdown for an upcoming event or simply redirect to the intended URL immediately. (Event pages can only be created by admins)
  • New selectable icons added to homepage event buttons. A microphone, A trophy, The Lichess Logo and the Offerspill logo.
  • Added links to Lichess.org/dgt. The Lichess/dgt board integration feature.
  • Added support for playing multiple concurrent games with a dgt board
  • Added a for downloading the results of a swiss tournament.
  • Fixed a bug with the patron lifetime amount display.
  • Minor visual improvements to the Swiss tournament FAQ
  • Improved the «help» link to captchas on new forum posts, new account registrations and other pages.
  • New translations via Crowdin

Docs, utilities, others

  • lichess-org/api HTTP API documentation (read here)
  • ornicar/scalalib Misc Scala utilities
  • ornicar/playframework-lila Trimmed down Play Framework fork
  • ornicar/cash Trimmed down cash.js fork
  • ornicar/lichess-db Generator for database.lichess.org (download all rated games and puzzles)
  • ornicar/lila-db-seed Import dummy data into a local database for lila development
  • niklasf/eco Aggregated data set of chess opening names
  • careless25/lichess-bot Bridge between HTTP API and chess engines
  • clarkerubber/Staunton-Pieces Original 3D rendered pieces, boards and trophies
  • arex1337/lichess-daily-puzzle-slack-app Slack app that posts the daily puzzle to the Slack channel in which it is installed
  • arex1337/lichesspuzzle Zulip bot that posts the daily puzzle to a specific Zulip stream
  • lichess-org/swiss-maker Script to generate swiss tournaments for your team using the Lichess API
  • thoas/picfit HTTP image server (go)

Happy coding!

October 16, 2020

  • Tweaks to markdown text on event and broadcast pages.
  • Lichess.org/support now redirects to lichess.org/contact.
  • Fixed a bug where zen mode would move the board slightly.
  • Tweaks to the ban appeal interface.
  • Banned users with shield trophies will now have them removed automatically for 30 days.
  • While choosing players, the simul user interface now shows the number of players currently selected to play.
  • Users are now allowed to re-try the «request computer analysis» button on a study or broadcast every 5 minutes.
  • Banned users are now greyed out on swiss tournament podiums.
  • New translations added via crowdin.
  • Removed unused css.
  • Added «Dark board» theme.

August 28th, 2021

  • Upgrade to Stockfish 14 with smolnet for local analysis
  • Show current position stats in the
  • Make it easier to fully enable/disable computer analysis
  • Fix trophy display on profile pages
  • Display game result in analysis list of moves
  • Show piece promotion in chess captchas
  • Add forum quoting feature
  • Fix rare double-game issues with mobile app
  • Add a «Board» PGN tag to studies
  • Display the reason why a game was drawn
  • Show material diff in analysis and study pages
  • Prevent device sleep on ongoing game pages
  • Add marathon top 500 trophy
  • Add study deletion confirmation
  • Add study staff picks page
  • Improve accessibility of studies and gameplay
  • Improve accessibility and keyboard control in dialogs
  • Generate 24 tournaments a day for the Lichess Swiss team
  • Improve game and study embeds in the forum
  • Search for players by rank in tournaments
  • Improve team administration UI
  • Add a team forum visibility setting
  • Remove the team location field
  • Limit team messages to 7 per week
  • Make it easier to unsubscribe from team messages
  • Fix chess bot rematch
  • Improve visibility and feedback of the rematch button
  • Rewrite the videos updater
  • Fix multiboard view of broadcasts
  • Fix 3D board arrows
  • Prevent crazy unicode symbols in some user texts
  • Replace finished games with new ones in the games pages
  • Make flags design more consistent
  • Fix continuation bug in Puzzle Streak
  • Lots of new translations
  • Lots of updates on moderation tools
  • Lots of bugfixes and optimizations

API updates:

  • New endpoint:
  • New endpoint:
  • New endpoint:
  • New endpoint:
  • New endpoint:
  • New endpoints: and players
  • Add a keepAliveStream flag to the
  • Allow the to play Blitz games in direct challenges or vs AI
  • Add wdraw, bdraw, wtakeback and btakeback flags to bot/board game states
  • No longer publish the language in the user object

November 9th, 2020

  • Stricter limits on the amount of Fishnet game analysis that users can request. 25 per day/100 per week now allowed per account. (These limits subject to change)
  • Requesting analysis on the games of others now counts twice as much as your own games against the limit.
  • An account is now required to request analysis.
  • Homepage preset seek pairings tweaked to be more efficient.
  • Changing the associated Twitch or YouTube channel for a streamer page now requires mod approval.
  • The new Chess.com API for live games can now be used as a source for broadcast pages.
  • Fixed a small bug with DGT board text-to-speech.
  • Tournament creation limits doubled for tournament managers.
  • Some fields on https://lichess.org/games/search removed.
  • BOT accounts no longer allowed to post links.
  • Fixed a bug with team leaders timing out users in their team chat.
  • The banned IP address is now shown on the page that says a user is IP blacklisted.
  • Small fix to the Tournament form.
  • New Crowdin translations.

March 22nd, 2021

  • The result of finished games is now visible in the game list of a broadcast.
  • Users can now delete their own forum posts.
  • Streamer links for ongoing streams will now lead directly to the Twitch/YouTube stream instead of the Lichess streamer page. This includes: 1. Front page streamer links, 2. Profile Streamer links, 3. Links on lichess.org/streamer.
  • BOT accounts no longer allowed to make broadcasts.
  • Broadcast games will now reload upon a game starting or finishing.
  • In an ongoing broadcast if new moves arrive, they will automatically become the mainline and any other moves the player entered will become a variation.
  • Updating broadcast meta-data will no longer stop the broadcast.
  • Tournament IDs now included in games downloaded via the API.
  • Tweak to the «wrong move» sound in puzzle racer.
  • Tweaks to the Puzzle Storm and Puzzle Racer streak interface
  • The maximum puzzle racer score is now 135.
  • Tweaks to the Alpha piece set.
  • Puzzle racer activity now appears in the user activity feed on profiles.
  • Open challenges created via the API can now be rated.
  • The patron page now mentions that Lichess is registered with Benevity.
  • «Marathon Survivor» trophy removed from profiles.
  • Puzzle Storm and Puzzle Racer now tell you which color pieces you will use for the run at the beginning.
  • New API endpoint for the daily puzzle.
  • Moves that have arrows are now marked as such in the move list of studies/broadcasts.
  • Fixed a typo in .
  • New translations via Crowdin.

Main server

  • ornicar/lila Main backend and frontend (Scala)
  • ornicar/lila modules Backend modules (Scala)
  • ornicar/lila ui Frontend modules (TypeScript, Sass)
  • ornicar/scalachess Rules of chess and its variants (Scala)
  • lichess-org/compression Compression algorithms for chess moves and clocks (Java)
  • ornicar/chessground Frontend chess board (TypeScript)
  • hi-ogawa/Stockfish Stockfish compiled for cutting-edge browsers (C++, WebAssembly, JavaScript)
  • niklasf/stockfish.wasm, niklasf/stockfish.js Slower fallback versions of Stockfish for browsers (C++, WebAssembly, JavaScript)
  • niklasf/chessops Client-side chess and chess variant rules and operations (TypeScript)

Gameplay

Lichess time controls are based on estimated game duration = (clock initial time in seconds) + 40 × (clock increment).For instance, the estimated duration of a 5+3 game is 5 × 60 + 40 × 3 = 420 seconds.

  • ≤ 29s = UltraBullet
  • ≤ 179s = Bullet
  • ≤ 479s = Blitz
  • ≤ 1499s = Rapid
  • ≥ 1500s = Classical

Lichess supports standard chess and 8 chess variants.

The centipawn is the unit of measure used in chess as representation of the advantage. A centipawn is equal to 1/100th of a pawn. Therefore 100 centipawns = 1 pawn. These values play no formal role in the game but are useful to players, and essential in computer chess, for evaluating positions.The top computer move will lose zero centipawns, but lesser moves will result in a deterioration of the position, measured in centipawns.This value can be used as an indicator of the quality of play. The fewer centipawns one loses per move, the stronger the play.The computer analysis on Lichess is powered by Stockfish.

In the event of one player running out of time, that player will usually lose the game. However, the game is drawn if the position is such that the opponent cannot checkmate the player’s king by any possible series of legal moves (FIDE handbook §6.9).In rare cases this can be difficult to decide automatically (forced lines, fortresses). By default we always side with the player who did not run out of time.Note that it can be possible to mate with a single knight or bishop if the opponent has a piece that could block the king.

This is a legal move known as «en passant». The Wikipedia article gives a good introduction.It is described in section 3.7 (d) of the FIDE handbook §3.7:»A pawn occupying a square on the same rank as and on an adjacent file to an opponent’s pawn which has just advanced two squares in one move from its original square may capture this opponent’s pawn as though the latter had been moved only one square. This capture is only legal on the move following this advance and is called an ‘en passant’ capture.»See the on this move for some practice with it.

Watch International Master Eric Rosen checkmate en passant.

If a position occurs three times, players can claim a draw by threefold repetition. Lichess implements the official FIDE rules, as described in Article 9.2 (d) of the FIDE handbook §9.2.

We repeated a position three times. Why was the game not drawn?

Repetition needs to be claimed by one of the players. You can do so by pressing the button that is shown, or by offering a draw before your final repeating move, it won’t matter if your opponent rejects the draw offer, the threefold repetition draw will be claimed anyway. You can also configure Lichess to automatically claim repetitions for you. Additionally, fivefold repetition always immediately ends the game.