Anki
Anki is a free and open-source flashcard program on desktop (Windows, macOS, Linux) and Android platforms, with a paid iOS version, designed to facilitate efficient memorization through active recall testing and spaced repetition algorithms, allowing users to focus more time on challenging material while minimizing reviews of familiar content.[1][2] The software operates on the principle of active recall, where flashcards present a question or prompt on one side and the answer on the other, requiring users to retrieve information from memory rather than passively rereading notes, which research shows strengthens neural pathways and improves retention.[2] It incorporates spaced repetition, a method pioneered by Hermann Ebbinghaus and refined in algorithms like SM-2 (used in Anki) and the optional FSRS, which schedule card reviews at progressively longer intervals based on user performance—such as daily, then weekly or monthly—to combat the forgetting curve and optimize long-term learning.[2] Developed and maintained by Ankitects Pty Ltd as a cross-platform tool available on Windows, macOS, Linux, Android (free and open-source), and iOS (paid app), Anki supports the creation of customizable decks that can include multimedia elements like images, audio clips, videos, and scientific markup (e.g., LaTeX for equations).[1][3][2] Users organize cards into hierarchical decks for targeted study sessions, rate their recall ease after each review (e.g., "Again," "Hard," "Good," or "Easy"), and benefit from add-ons that extend functionality, such as advanced statistics or integration with external tools.[2] Anki's synchronization service, AnkiWeb, enables seamless access to decks across devices, making it popular among students in fields like medicine, where it aids in retaining vast amounts of complex knowledge for exams such as the USMLE.[1][4]Background and Development
History
Anki was first released on October 5, 2006, by Australian developer Damien Elmes as a desktop application for Windows, aimed at facilitating efficient memorization through spaced repetition techniques inspired by earlier software like SuperMemo.[5][6] Early development focused on core spaced repetition functionality, with the project open-sourced under the GNU Affero General Public License (AGPL) in 2008, enabling community contributions that would later be hosted on GitHub.[3] Version 2.0, released in October 2012, marked a significant evolution with major user interface overhauls and the adoption of the Qt framework for cross-platform compatibility.[7] Subsequent updates built on this foundation; version 2.1, launched in August 2018, introduced improvements to mobile syncing and quality-of-life enhancements like built-in MathJax support.[8] In October 2023, version 23.10 integrated the FSRS (Free Spaced Repetition Scheduler) algorithm as an optional alternative to the default SM-2 scheduler, offering more personalized interval calculations based on user performance data.[9] The latest stable release, 25.09.2 on September 17, 2025, includes performance enhancements such as improved async image decoding and UI polish, alongside bug fixes for custom colors and other minor issues.[10]Licensing and Development
Anki has been licensed under the GNU Affero General Public License version 3 (AGPLv3) since 2008, a copyleft license that ensures free redistribution, modification, and access to the source code for any distributed derivatives.[11] The project is primarily developed by Damien Elmes, an Australian programmer, with support from a global volunteer community that contributes code, translations, and testing through the official GitHub repository at ankitects/anki.[3][7] Development proceeds iteratively, with new versions released via AnkiWeb after beta testing to gather user feedback on features and stability, while issues and pull requests are tracked and resolved on GitHub.[12] The project is funded primarily through proceeds from the paid iOS app AnkiMobile, as direct donations are not accepted due to its operation as a business under Ankitects Pty Ltd.[13] Cross-platform support for the desktop version relies on Python as the core language and the Qt framework for the user interface, enabling builds for Windows, macOS, and Linux; mobile implementations, such as AnkiMobile for iOS and the community-driven AnkiDroid for Android, are developed by separate teams to address platform-specific requirements.[14]Core Concepts
Spaced Repetition Algorithm
Anki's spaced repetition algorithm is derived from the SM-2 system originally developed for the SuperMemo software in the 1980s, with modifications to enhance user configurability and scheduling stability.[15][16] Unlike the original SM-2, which uses fixed initial intervals of 1 day and 6 days, Anki allows customizable learning steps for new cards, employs four answer buttons (Again, Hard, Good, Easy) instead of six grades, and includes adjustments for late reviews by boosting subsequent intervals when cards are remembered despite delays.[16] These changes prioritize ease of use while maintaining the core principle of extending review intervals based on successful recall.[2] The algorithm relies on three primary parameters: the ease factor, which begins at 250% (or 2.5 in decimal form) and can be adjusted in deck options with a minimum of 130%; the interval modifier, a multiplier defaulting to 100% that scales all review intervals; and the starting ease, set to 250% for newly graduated cards.[17] The next interval I for a review card is generally computed as: I = I_{\text{previous}} \times \frac{\text{ease}}{100} \times \text{interval modifier} with button-specific adjustments—such as multiplying by 1.2 for Hard or adding an easy bonus for Easy—and ease factor modifications of ±15–20% based on the user's rating.[16] To introduce variability and prevent card synchronization across users, a fuzz factor applies random adjustments of 0–5% to intervals exceeding 21 days for mature cards.[17] Notes and cards serve as the input structures whose review ratings drive these calculations.[2] In Anki version 23.10, released in November 2023, the Free Spaced Repetition Scheduler (FSRS) was integrated as an optional alternative to SM-2, leveraging machine learning to personalize intervals by analyzing a user's full review history. Subsequent updates include FSRS-5 in Anki 24.11 (November 2024), which introduces additional parameters to improve modeling of short-term memory and integration with learning steps, enhancing scheduling accuracy. As of November 2025, FSRS remains optional, with discussions ongoing about making it the default.[18][16][19] FSRS models memory using the three-component framework of retrievability, stability, and difficulty, deriving stability formulas from forgetting curve research to predict optimal review timing.[17] A key parameter is the desired retention rate, defaulting to 90%, which users can adjust to balance review workload and recall probability—higher settings like 95% roughly halve intervals and double reviews.[17][20] Custom scheduling enhances flexibility, allowing manual overrides through filtered decks or custom study sessions, and deck-specific configurations via option presets that tailor parameters like ease and intervals without affecting other decks.[17] This enables users to adapt the algorithm to individual needs while preserving the efficiency of spaced repetition.[16]Notes and Cards
In Anki, notes serve as the fundamental units of information storage, functioning as multi-field containers that organize content for learning. Each note typically includes fields such as "Front" and "Back" for question-and-answer pairs, along with additional customizable fields for supplementary details (e.g., a "source" field for referencing origins), and supports tags as a note property for categorization.[21] These fields support a variety of media types, including plain text, images embedded via file references, audio clips for pronunciation practice, and LaTeX for rendering mathematical equations and formulas.[21] For instance, a note on vocabulary might have a "Front" field with a word in the target language, a "Back" field with its definition and example sentence, an audio field for the pronunciation, and tags like "Spanish::Nouns" to aid organization.[21] Cards are dynamically generated from notes using predefined or custom templates, transforming the structured note data into reviewable flashcards. Common template types include the basic template, which produces simple one-sided or two-sided cards displaying content from specified fields on the front (question) and back (answer); cloze deletion, which hides portions of text marked with {{c1::hidden text}} syntax to create multiple cards testing specific details; and image occlusion, which masks regions of an image (using shapes like rectangles or polygons) to quiz users on labeled parts.[22] Card types vary by template configuration: one-sided cards show only the front for recognition tasks, two-sided cards reveal the back upon flipping, and reversed cards generate bidirectional pairs (e.g., English-to-Spanish and Spanish-to-English) from the same note to reinforce associations in both directions.[22] This generation process allows a single note to produce multiple cards, enabling efficient coverage of related concepts without redundant data entry.[21] Decks provide the organizational framework for notes and their derived cards, employing a hierarchical structure where subdecks are nested under parent decks using double colons (::) in naming conventions, such as "Language::Spanish::Vocabulary" to create a tree-like arrangement.[23] This setup allows users to study at various levels—selecting a parent deck includes all subdeck cards, while subdecks enable focused sessions on subsets of material. Filtered decks extend this flexibility by creating temporary, custom study sessions that pull cards based on criteria like tags, due dates, or ratings, without permanently relocating them from their home decks; for example, a user might generate a filtered deck to cram cards tagged "exam" or those answered incorrectly in the past week.[24] Management tools include suspending cards or notes to exclude them from reviews indefinitely (requiring manual reactivation) and burying them to postpone appearance until the next day, helping users skip duplicates or overwhelming content during sessions.[25] The review process in Anki begins with new cards drawn from the selected deck, progressing through initial learning steps with short intervals—such as 1 minute followed by 10 minutes—based on user responses to gauge initial retention.[25] As cards advance, they gain maturity through repeated successful reviews, transitioning from "Learning" to "Review" status, where spaced repetition algorithms schedule subsequent appearances to optimize long-term recall.[25] This structure ensures that notes and cards are reviewed in a targeted manner, adapting to the user's performance while maintaining the hierarchical organization of decks.[23]Key Features
Synchronization and Multi-Device Support
AnkiWeb serves as the primary free cloud-based service for synchronizing Anki users' decks, media files, and review history across multiple devices, enabling seamless access and updates without data loss.[26] The service automatically merges compatible changes, such as added or reviewed cards, while prompting users to choose upload or download for unmergeable conflicts like simultaneous edits to note fields or templates.[26] This protocol ensures review progress and content modifications propagate reliably between devices, with initial setups requiring users to select whether to upload local data or download from the cloud.[26] Synchronization occurs over encrypted HTTPS connections to protect data in transit, though content stored on AnkiWeb is not encrypted at rest.[27] Anki supports offline usage by maintaining local collections on devices, with manual or automatic sync triggers (defaulting to on app open/close) resuming when connectivity is restored.[26] Integration spans desktop applications, mobile versions like AnkiDroid and AnkiMobile, and the web interface, allowing users to switch devices mid-session with minimal disruption after syncing.[28] Storage limits apply to the collection file (containing decks, notes, and scheduling data) at 100 MB compressed or 250 MB uncompressed, while media files have no total size cap but are restricted to 100 MB per individual file.[29] For privacy, AnkiWeb keeps user data private by default, storing only necessary elements like card content, media, and logs without sharing them publicly or with third parties except in cases of legal requests or support investigations.[30] Users can opt for local-only operation by disabling sync in preferences, avoiding cloud uploads entirely, and export their data via AnkiWeb account settings or app tools in formats like .apkg for backups or transfers.[26] Inactive accounts face data deletion after six months, underscoring the importance of regular exports for long-term retention.[26]Add-ons and Customization
Anki's extensibility is primarily facilitated through its add-on system, which allows users to enhance functionality by integrating community-developed plugins hosted on the AnkiWeb repository. As of mid-2025, the repository features nearly 2,000 add-ons, enabling modifications ranging from interface tweaks to advanced algorithmic adjustments. These add-ons are predominantly written in Python and installed by downloading code files—either as single .py scripts or zipped packages—directly through Anki's built-in add-on manager, which handles integration into the application's codebase.[31][32][14] Among the most widely adopted add-ons are those that address specific user needs for content creation and progress tracking. Image Occlusion Enhanced, for instance, permits users to mask portions of images or diagrams to create interactive cloze-style cards, streamlining the study of visual materials like anatomy illustrations. Review Heatmap visualizes daily review streaks and session intensities on a calendar-style graph, helping users monitor study habits over time. Additionally, FSRS Helper integrates the Free Spaced Repetition Scheduler (FSRS) algorithm, allowing fine-tuning of scheduling parameters to optimize retention rates beyond Anki's default system.[33] Beyond add-ons, Anki supports direct customization of its interface and study parameters without external code. Users can edit themes using CSS in the card styling editor, adjusting colors, fonts, and layouts for better readability or personal aesthetics. Keyboard shortcuts are configurable via built-in preferences or dedicated add-ons, enabling remapping of actions like revealing answers or navigating cards to suit individual workflows. Deck options presets further allow batch application of settings such as interval modifiers or new card limits across multiple decks, with basic card templates providing foundational HTML and CSS customization for front and back sides.[34][17][35] However, the modular nature of add-ons can lead to conflicts, particularly when multiple plugins modify the same UI elements or database queries, resulting in crashes or unexpected behavior during reviews. Troubleshooting often involves the debug console, a built-in REPL accessible via Tools > Debug Console, where users can execute Python commands to inspect variables, reload modules, or disable problematic add-ons for isolation.[36][37] The Anki community maintains guidelines for add-on development to ensure reliability and interoperability, emphasizing adherence to the AGPLv3 license for all contributions that extend the desktop application. Developers are encouraged to include version compatibility metadata in their add-on manifests, specifying supported Anki releases (e.g., 2.1.50+), and to test against upcoming updates using tools like compatibility checkers. This practice helps mitigate breakage from Anki's iterative releases, with the official add-on documentation providing templates for hooks, configuration screens, and error handling.[32][14][38]Language-Specific Tools
Anki includes built-in support for ruby annotations, enabling the display of small superscript text such as Japanese furigana or Chinese pinyin and bopomofo above base characters in flashcards. Users enter annotations manually in note fields using the notationbase text[annotation], for example, 日本語[にほんご] for furigana or 你好[nǐ hǎo] for pinyin with tones. In card templates, the {{furigana:FieldName}} filter processes this input to render the ruby text correctly across platforms, while {{kana:FieldName}} extracts only the annotations and {{kanji:FieldName}} shows only the base text.[39]
For Chinese learners, Anki's Unicode compatibility handles tonal marks natively during text input and display, allowing seamless integration of pinyin or bopomofo with tone diacritics like ā, é, or ㄧ, ㄨ in notes. Users can incorporate stroke order animations or character decomposition (breaking hanzi into radicals and components) by embedding images or structured text in fields, which templates then format for readings and visual aids during reviews. These features integrate directly with note fields, supporting customized card layouts without external dependencies.[39][21]
The desktop version of Anki supports interfaces in multiple languages, configurable via the preferences menu, while the mobile version (AnkiMobile) supports several languages, determined by device settings. Right-to-left scripts, such as Arabic, are handled through built-in field options and CSS styling in templates (e.g., direction: rtl), ensuring proper text flow and bidirectional mixing with left-to-right content like English.[40][41][34]
Despite these capabilities, Anki's language tools have limitations: ruby annotations require manual entry or user-supplied data for accuracy, with no built-in dictionaries for automatic generation of furigana, pinyin, or decompositions. The system provides annotation and display only, without real-time translation or advanced processing like stroke recognition.[39]