Posted by thomascountz 12/14/2025
The data format of Anki is a bit complicated but at least it's SQLite. I've seen a ton of shared decks and resources on ankiweb, but it's true you can't easily put them on GitHub.
After investigating the way Anki represents its flashcards a bit more, I can really appreciate the way Anki uses notes, models, and templates to essentially create "virtual cards" (my term).
I suspect other people creating their own flashcard apps underestimate the data model Anki uses and have a hard time matching their own data model with Anki's, which may be why decent import options are hard to find. If someone wants to support Anki deck import, they have to essentially use the same data model to represent notes and models (plus cloze deletions). I'm now adopting Anki's model for my flashcard app for better import fidelity.
Regarding the SQLite data format, I was thinking it would be great if there were a text-based format instead for defining the deck and its contents as that would make it much easier to collaborate on shared decks on GitHub, like you suggest. It would be great to have a community work on essential flashcard decks together in an open format that encourages branching and collaboration. I know some groups do this with Anki decks, but I can't imagine the SQLite file format makes it easy to collaborate.
I don't think it would be that hard to come up with a universal text file-based format for a flashcard deck that supports notes, models, templates, and assets. For instance, we could have each note placed in its own text file and have the filename encode the a unique ID of that particular note. Having unique identities for everything would make it easier to re-import updated decks to apply new updates if you had previously imported the deck. The note files could also be organized into sub-folders to make it easier to organize groups of info that should be learned together.
(Anecdotally, Anki has seen a huge quality increase in the past couple of years.)
From an Android (AnkiDroid) perspective, it's allowed us to remove most of our code which was manually ported from the Python backend, with guaranteed 1:1 compatibility with upstream.
We've moved from being years behind upstream to being able to release in tandem with the Desktop app.
We also migrated to common screens written in Svelte, to reduce the maintenance burden of UI changes for screens with high churn (Deck Options being the primary example).
This needs to be contributed by folks coming from Anki. By folks who actually have interest in the feature.
You can customise note types with CSS and Javascript, which means that you can make cards look however you want.
I've thought about posting to HN but I'm a little apprehensive of when and how to post.
Anyone interested in this and/or have some advice for posting my prototype online for feedback?
1. Decide on what's important. Just because you learn something doesn't mean that it should be logged to the system. I used to log a lot of minor details (like niche method signatures or command flags to the system). If you make cards for every detail like this then you will be trapped reviewing 100s of cards daily that you likely never use.
2. For the cards you deem are important, make sure you understand the concept. This often means making 2-5 cards for the concept that test your understanding from different angles (definition, pros, cons, how would I explain this to someone else, etc...). This helps to cement the concept at a foundational level.
3. Try to move from the existing flashcards to 2nd order flashcards or pure application after the first couple reviews. So your foundational cards are now set to review in 6 months or 1 year. At this timescale if you prioritized what was important and made sure that you understood the foundational concepts, then usually simply doing things related to the concepts will be the reviews (and sorry to say but if in 1 year you get a card related to what you are doing, but never used, chances are it probably wasn't that important). In addition to doing, you can also create 2nd order flashcards (which might compare 2 concepts). These types of cards test the foundational knowledge indirectly, and are helpful for higher order thinking.
In conclusion, I think spaced repetition is a very effective tool for efficient learning (especially in the first 60 days or so after learning something). I think the major pitfall is not prioritizing what cards get made and being stuck in review hell.
If the cards are identified in the database as their hashes, wouldn’t editing the content reset all repetition data so far?
Anyone here has been using FSRS long enough to have comments about its effectiveness? I think it’s general consensus that moving from SM-2 to FSRS will show great improvement. I’m using SuperMemo 9 though, so it’s much harder to understand whether there will be an improvement or not.
That is: the historical data in on the same file as the card. This makes cards trivial to sync.
Creating a flash card is as simple as sending a word (or expression) you want to learn. The bot takes care of the rest: generates the translation, pronunciation, and examples.
The bot also uses FSRS for SR.
Couldn't agree more. I think I would take this opinion and go even further -- we shouldn't be making cards fully by hand much, if at all, anymore. AI-assisted card creation is to me clearly the future, and already AIs are good enough for this to work well.
It depends on the nature of what’s being learned. For language learning for example this is very effective as you can create it directly from content so that you have context.
Some examples would be Michael Nielsen, Gwern Branwen, Andy Matuschak and u/SigmaX (reddit - not sure his real name)
* http://augmentingcognition.com/ltm.html * https://gwern.net/spaced-repetition * https://andymatuschak.org/prompts/ * https://imgur.com/a/anki-examples-math-engineering-eACA7QM * https://imgur.com/a/anki-practice-cards-language-music-mathe...
Sure, we all need to study and learn things in life here or there, but the flashcardification of the process makes it boring and painful.
From my own personal experience trying it, I find the process to be too far removed from the practice of accomplishing what you are setting out to learn to do. An analogy might be like memorizing a recipe by using Anki cards and not physically cooking it versus doing cooking it a bunch of times without deliberately trying to memorize the recipe. For me, the latter is far more effective because you have your 6 senses of mnemonics to memorize what you are doing. I may not remember that I need 2 cups of flour, but I remember that I scooped my purple flour scoop twice and that the white contents felt powdery like flour and grainy like sugar. Even if I forgot the recipe my body would have smelled, seen, touched, weighed the material and I have all these physical clues to work with.
Learning by doing, experiencing, immersing is more of a "repetition that you don't even know you're doing" while Anki/SRS has the feeling of a chore and an obligation.
I presume you use FSRS. What do your card prompts look like? And how do you go about performing, evaluating, and scoring your review of each card?