e2e8

Licences & credits

To the authors and maintainers whose work appears below,

e2e8 is built on top of things you made and gave away. Chess engines, piece artwork, opening data, typefaces, libraries. We did not have to pay for any of it, and in most cases we did not have to ask. We do not treat that as free money.

So here is our position, plainly. We do not ship anything we do not have the right to ship. Where a licence asks for credit, we give it. Where it asks that the source be reachable, we link it. Where a licence forbids commercial use, we do not use the work at all - not in a reduced form, not behind a free tier, not at all. That has cost us real things: sixteen piece sets we wanted, and a move-analysis component we had already built on and shipped, removed once we read its licence properly rather than argue our way around it.

If you think we have used something of yours incorrectly, or credited you wrongly, or missed you entirely - we want to hear it, and we will fix it. Not negotiate it. Write to kiterick123@gmail.com and a person will answer you.

Erick

Founder, e2e8

Chess engines we send to your browser

The engine runs in your browser, on your own CPU - never on our servers. (Your games themselves are a different question: completed analyses are saved and shareable by link, and positions go into a shared evaluation cache. That is a privacy matter rather than a licensing one, and we would rather say it here than let this sentence imply otherwise.) Because the engine runs on your machine, we distribute these binaries to you and their licences apply in full. Stockfish's own terms put it directly: whenever you distribute Stockfish you must include the licence and the full source code, or a pointer to where the source for the exact binary can be found. Both are below - and the licence texts ship next to the binaries themselves: AGPL-3.0, GPL-3.0, Stockfish AUTHORS.

Stockfish 17.1 (via lila-stockfish-web 0.0.11)by T-bone DuplexusAGPL-3.0-or-later
The WebAssembly build behind our strongest analysis, published for lichess.org's web analysis. Served as /stockfish/sf171-79.js and sf171-79.wasm on our engine pages. The code is unmodified - the only difference from the published files is that our checkout rewrote line endings in the JavaScript wrapper, so it is 82 bytes larger while hashing identically once carriage returns are stripped.
An honest note on the source pointer: this package declares no repository or homepage of its own, so the link above goes to the exact published version we ship rather than to a source tree. The engine it builds is Stockfish, whose full source is linked below. If you maintain this build and would like us to point somewhere better, tell us and we will change it the same day.
Stockfish.js 16by nmrugg / Chess.com, LLCGPL-3.0
The fallback engine on pages that are not cross-origin isolated. Served as stockfish.js, stockfish.wasm, stockfish-nnue-16.js/.wasm and -single.wasm - five filenames, but the single-thread build appears under two of them, renamed rather than rebuilt. Unmodified. Itself based on stockfish.wasm by Niklas Fiekas and Hiroshi Ogawa.
Stockfishby T. Romstad, M. Costalba, J. Kiiski, G. Linscott and contributorsGPL-3.0
The engine everything above is built from. Full source at the link.
nn-1c0000000000.nnue (74.9 MB) and nn-37f18f62d772.nnue (3.5 MB), downloaded at build time from Stockfish's own Fishtest and served unmodified. Distributed as part of Stockfish under GPL-3.0. Stockfish's own README adds that its networks are trained on data provided by the Leela Chess Zero project under the Open Database License - we repeat that here because it is their statement about their data, not a claim of ours.
Maia 2by CSSLab, University of TorontoMIT
The human-like opponent in Play vs Engine. ONE network that takes the rating as an input, trained to predict what a player of that rating actually plays rather than what is best - which is why it hangs pieces the way a human does rather than playing thin, even moves. Because the rating is an argument and not a file, changing opponent is instant: nothing is downloaded a second time. Three things sit outside the network, because they are not human errors: it always takes a mate in one, it will not stalemate you from a winning position, and it will offer to resign when its own reading of the position has been hopeless for eight of its moves. A network with no search misses the first two — we measured it missing two thirds of the forced mates in front of it — and neither is a mistake any player of any rating makes. Everything else in the game is the network's own move; the filters changed about one move in two hundred, always at the very end of a decided game. The resignation is an OFFER and you can decline it; we turned it on only after measuring, over ninety games, that it never once gave up a position the bot went on to hold — a threshold the older network could not reach at any setting. From Maia-2: A Unified Model for Human-AI Alignment in Chess. Served as /maia/maia2-rapid.onnx. Its licence and our conversion notice ship beside it: MIT, what we changed and how.
Our own conversion of the authors' own release — format only, no retraining, from weights whose SHA-256 the authors publish. The notice above records the source, the converter and its version, the date, and both sets of hashes; running scripts/convert-maia2.py reproduces the file byte for byte. "It works" is not provenance: with the previous model we first tried pre-converted copies found online, found they carried a producer stamp from an unreleased build we could not identify, and deleted them.

Maia 1 — nine separate GPL-3.0 networks, one per rating — was the opponent here until 1 August 2026. No screen loads it any more, but its nine files are still served from /maia/ with their own GPL-3.0 licence and modification notice beside them. We switched because we could measure a reason: the two are indistinguishable at picking the single likeliest human reply, but this one puts more probability on the move a human actually played, and it is the only one whose own evaluation is honest enough to resign on. It costs 88.9 MB against 3.3, downloaded once and cached.
Leela Chess Zero (lc0)by The LCZero AuthorsGPL-3.0
Not shipped to you - used once, on our machines, as the tool that converted the Maia 1 weights from their published format into ONNX. Maia 2 needed no such tool: it was exported with PyTorch's own ONNX exporter. Credited because it did the work.
ONNX Runtime Webby Microsoft and contributorsMIT
Runs the Maia networks in your browser. Self-hosted at /ort/ rather than loaded from a CDN, because our engine pages are cross-origin isolated and would refuse it otherwise. The npm package ships no licence file of its own, so we write the MIT notice next to the binary we serve: /ort/LICENSE.txt.

One thing worth saying plainly, because it is your disk and not ours: the first game against the bot downloads its network (88.9 MB) and keeps it in your browser's cache, so the next game starts at once and changing rating downloads nothing. The engine's own networks (74.9 MB and 3.5 MB) are kept the same way. Clearing your browser's site data removes them.

Artwork, type and sound

cburnett chess piecesby Colin M.L. BurnettBSD-3-Clause
Taken from the author's own uploads on Wikimedia Commons, where he offers a choice of licences and states “You may select the license of your choice.” We elect BSD-3-Clause. Our only change is an added viewBox attribute; the artwork is untouched. The licence text is reproduced below, as clause 2 requires.
Copyright (c) Colin M.L. Burnett

Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of
   conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of
   conditions and the following disclaimer in the documentation and/or other materials provided
   with the distribution.
3. The name of the author may not be used to endorse or promote products derived from this
   software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Public domain, so no credit is owed. We give it anyway.
Barlow and Barlow Condensedby Jeremy TribbyOFL-1.1
Both faces are served from our own origin by next/font, not fetched from a font CDN - the engine-heavy routes run under COEP and a cross-origin font would simply fail there.
Board soundsby e2e8ours
The six board sounds (move, capture, castle, check, promote, illegal) are synthesised from scratch by a script in our own repository - damped sines and filtered noise, seeded so the output is reproducible. No third-party recordings or samples. We mention it because “where did the move sound come from” is a fair question to ask any chess site.
Interface click and hover soundsprovenance unrecorded
The two short interface sounds are not from that script - they were supplied by the founder before we started keeping this record, and we cannot point you at their origin. They are almost certainly his own, and we are checking. Saying so is the point of this page: if we cannot show where something came from, the honest move is to write that down rather than let the sentence above quietly cover it.

Chess data

The 3,790 named openings and ECO codes behind opening detection.
Chess Opening Theoryby Wikibooks contributorsCC BY-SA 4.0
The written theory shown in the opening explorer is fetched live and always carries a link back to its source article, as the licence requires.
The Week in Chess (TWIC)by Mark Crowthercredit
A large part of the modern games in our master archive comes from TWIC, which has published every significant over-the-board event since 1994. This credit is owed and we are glad to give it.
PGN Mentorgame scores
Historical master games. The moves of a played game are a record of fact, but published annotations are someone's writing - so our import pipeline strips every comment, variation and glyph and keeps only the moves and the tags.
Accuracy and win-probability formulasby Lichesspublished formulas
The accuracy percentage we show after a game, and the win-probability curve every move label is built on, use the formulas and fitted constants Lichess publishes on that page. We wrote our own implementation and used none of their source - but the numbers are theirs, and it would be poor form to present a headline figure as ours because we retyped the arithmetic.
Move-quality categoriesby Chess.comdocumented taxonomy
Best, Excellent, Good, Inaccuracy, Mistake, Blunder - the vocabulary players already know is theirs, and their support article documents the thresholds we match. Our definitions of Brilliant and Swindle are stricter and are our own work, but the ladder those two sit on top of started as Chess.com's.
Lichess Studiesrights stay with the author
Imported by users through the public Lichess API. Every imported study keeps its original author's name and a link back, and the person importing it confirms they have the right to do so.

Software libraries

e2e8 depends on a few dozen open-source packages. All but two are permissive - MIT, ISC, Apache-2.0 or BSD. The two are the Stockfish builds credited above, AGPL-3.0 and GPL-3.0; the only other copyleft files we serve are the Maia 1 networks, GPL-3.0, credited above with their licence beside them. The packages doing the most visible work: chess.js (BSD-2-Clause), which knows the rules of chess and is what our own analysis is built on; Next.js and React (MIT); Framer Motion, Recharts, Lucide, dnd-kit and ts-fsrs (MIT/ISC); LiveKit and hls.js (Apache-2.0). The complete list with versions is in package.json in our source tree.

Services we call

Lichess - opening explorer, cloud evaluations, endgame tablebases, study import and account linking, all through their public API. Chess.com - their documented public API, for importing your own games and ratings. Wikibooks - opening theory. Vercel hosts the site. Supabase, Stripe, LiveKit, Cloudflare and Resend - our database, payments, live classroom, video and domain, and email.

Lichess deserves a separate line. They publish billions of games under CC0 and tell people to use them for anything, including commercially. A great deal of what makes free chess software possible traces back to that decision.

What we deliberately do not use

A credits page only means something if it can say no. Ours has, three times, and each time it cost us something we wanted.

Sixteen piece sets. Most of the beautiful chess piece artwork in the open-source world is licensed CC BY-NC-SA - NonCommercial. e2e8 charges coaches a subscription, so that licence is a flat no for us. We could not use those sets by crediting harder, or by giving them away free, or by open-sourcing our own code. So we went and found artwork whose authors permit commercial use, and used that instead.

A move-analysis component we had already shipped. Part of how we detect sacrifices had been ported from another open-source project. When we checked its licence properly, it was CC BY-NC-SA as well. It was working, it was live, and our own comments admitted where it came from. We deleted it and wrote our own from the underlying algorithms, which are public knowledge and belong to nobody. That is recorded in our repository, dated, in a file called NOTICE-analysis.md - because the honest version of this page is the one that survives someone checking.

Maia 3. The newest and strongest version of the human-like opponent we do ship. Its code is openly licensed, but the weights themselves state no licence at all - and silence is not permission. The file is sitting there, downloadable, and we are not taking it. If the authors publish terms that allow it, we would like to; until then the human-like bot is Maia 2, credited above. It needs a cross-origin-isolated page, so on pages that embed video or a live class it is the plain engine that plays.

We also do not scrape any service that asks us not to, and we do not build on data whose terms forbid it - even where nothing technical stands in the way.

Something wrong or missing on this page? Write to kiterick123@gmail.com. If we got it wrong we would rather hear it from you than not know.