Anki
Powerful spaced-repetition flashcard program
Anki is a free flashcard program that uses spaced repetition to help you memorize information efficiently. It supports rich media cards, add-ons, and synchronization across desktop and mobile.
Key features
- Spaced-repetition algorithm
- Rich media cards
- Large add-on ecosystem
- Cross-platform sync
Pros & cons
Strengths
- Proven spaced repetition
- Rich add-on ecosystem
- Syncs across devices
Trade-offs
- Dated interface
- iOS app paid
Anki replaces
Last reviewed Aug 26, 2026 · 812 words
The only part of Anki you can self-host is the sync server, and because it ships inside the desktop app you can have one running in about 5 minutes. Whether you should comes down to a single fact: AnkiWeb sync is free, generous enough for nearly everyone, and run by the same developer who writes Anki. Self-hosting wins on privacy and on LAN-only setups, and loses on absolutely nothing else, so the decision is a values one rather than a technical one.
What Anki is, and what a server is not
Anki (AGPL-3.0, roughly 30,000 stars, around since 2006, now with a Rust core) is a desktop spaced-repetition program for Windows, macOS, and Linux. Reviews happen in the app, add-ons run in the app, and the collection lives on your disk as a SQLite file plus a media folder. The mobile side is AnkiDroid, a separate free project on Android, and AnkiMobile on iOS, which is a paid app at about $25 one-time and is how the project funds itself. A "server" in Anki's world does nothing but synchronise collections between those clients. There is no web UI to study from, and the add-on ecosystem is desktop-only.
The sync server runs in one command
Since the late-2022 releases the sync server is part of the anki Python package:
python3 -m venv /srv/anki/venv && source /srv/anki/venv/bin/activate
pip install anki
SYNC_USER1=me:a-long-random-passphrase SYNC_BASE=/srv/anki/data \
python -m anki.syncserver
It listens on port 8080. Add SYNC_USER2, SYNC_USER3 and so on for a household. On the desktop, Preferences, Syncing, set the self-hosted server URL to http://your-host:8080/; AnkiDroid has the same field under advanced settings, and AnkiMobile supports it too. Memory use is small, well under the 512 MB the desktop app wants. Two rules keep it painless: put it behind Caddy for TLS if any client will reach it over the internet, and keep the server package within a release or two of your clients, because the protocol does move and a very old server will refuse a new client.
I would not expose it publicly at all. A sync server on port 8080 reachable only over Tailscale covers the phone-on-the-bus case, and there is nothing to secure beyond a password you chose.
The reason to bother, and the reason not to
Self-host if your cards contain things you do not want on someone else's server (medical study decks with patient details, work material, language decks built from private chat logs), or if you simply want the entire learning stack on your own hardware. Do not self-host because you think it will be more reliable; a single sync server on a home box is less available than AnkiWeb, and the failure mode when a client and server fall out of step is a forced one-way "full sync" where you choose which side wins. Pick correctly. Download to the client when in doubt, since the server is the copy you back up.
FSRS is the setting that matters more than any server
The scheduler is what Anki is for, and the default SM-2-derived algorithm has been joined by FSRS, which fits a retention model to your own review history. Turn it on per deck preset under deck options, set a desired retention around 0.85 to 0.90, and let it optimise parameters once you have a few hundred reviews. In my decks it cut daily review counts noticeably at the same retention; your numbers will differ, but it is the single highest-value change in the app and it costs nothing.
Back up the collection, not the server
The server directory holds a copy of every user's collection, so back it up, but the authoritative backups are the ones Anki writes automatically into each profile's backups folder on the desktop, plus a periodic File, Export, "Anki collection package" with media included. That .colpkg file restores onto a fresh install of any client with no server involved. If you rely on the server as your only copy and the disk dies, you are restoring from whichever phone synced most recently, which is fine until it is not.
What I'd do
Most people: keep AnkiWeb, turn on FSRS, export a .colpkg monthly, and spend the saved hour reviewing cards. If privacy is the reason you are here, run the one-command sync server on a box you already have, reach it over Tailscale only, and add the server data directory to your existing backup job. Either way the app is the same, which is the point: Anki was never a service, and the sync server is a convenience, not the product.
Compare Anki
2 head-to-head comparisons.
Similar learning & courses apps
Open edX
Learning & CoursesScalable open-source platform for online courses
Replaces Coursera, Canvas
Moodle
Learning & CoursesWorld's most popular open-source learning platform
Replaces Canvas, Blackboard
Canvas LMS
Learning & CoursesOpen-source learning management system by Instructure
Replaces Blackboard, Moodle
Oppia
Learning & CoursesCreate interactive lessons that teach through exploration
Replaces Khan Academy
Scratch
Learning & CoursesProgramming language to create your own interactive stories, games,
Frappe School
Learning & CoursesSelf-hosted course delivery built on the Frappe framework
Replaces Teachable, Moodle