Top
Best
New

Posted by thomascountz 12/14/2025

Hashcards: A plain-text spaced repetition system(borretti.me)
401 points | 195 commentspage 3
yellow_lead 12/14/2025|
I'm happy to see others in the space, but I wish Anki competitors would implement a decent 'import from Anki' feature. Otherwise, I think most existing users of SRS are unlikely to switch (because we use Anki and have thousands of cards there already).

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.

allenu 12/14/2025||
I wrote my own flashcard app and had a very basic import from Anki feature and I have to admit that I underestimated how Anki handles it. My first attempt at import was very naive and sort "flattened" the imported data into simple front/back content. It lost a lot of fidelity from the original Anki data.

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.

tvshtr 12/14/2025|||
I think that many devs missed the fact that Anki went through major rewrite and all of its business logic/its brain/api are now contained in few rust crates. They're a pleasure to work with and it's very easy to write alternative frontends (just finished one). You don't have to import anything because you can just use the same db, and cards as Anki.
CGamesPlay 12/15/2025|||
Wow, I haven't used Anki since... before they switched to date-based releases, but the new version is a big step improvement from versions I have used previously. When I updated, opening the app for the first time opened the terminal for a text-based installer, which didn't inspire confidence, but it's well improved. (This isn't really related to the backend changes you're mentioning, but this comment inspired me to take another look at Anki.)
tvshtr 12/15/2025||
The PyQt GUI is still meh but overall it's much better (and nowadays much much faster). I think it's still unnecessary crufty and unfriendly in places. That being said I wrote both web and TUI front-ends and it can definitely be streamlined and cleaned up. Interestingly, stripped of the GUI, running core (with old db and profile) uses just ~15MB.
pityJuke 12/15/2025|||
This feels as if it deserves a write up, did not know that they migrated from Python to a primarily Rust backend. Would love to know the why/what from the team.

(Anecdotally, Anki has seen a huge quality increase in the past couple of years.)

david_allison 12/17/2025|||
The Rust backend code is shared between all platforms (Desktop, Android, iOS and Web). This wasn't feasible with the Python code.

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).

pityJuke 12/18/2025||
Thanks for the insight, and a general thanks for AnkiDroid as well!
tvshtr 12/15/2025|||
Most def. It's ALL Rust underneath, the PyQT gui (on desktop) is basically a legacy compat layer, mostly because they need to support vast amount of add-ons, and the editor is quite complicated piece of UI.
WhyNotHugo 12/15/2025|||
I’ve been writing my own flashcards (purely text-based, no SQLite like in this case) primarily because Anki never worked out for me (too hard to use, too hard to sync, everything too complicated). I have zero time or motivation to research how to import data from it.

This needs to be contributed by folks coming from Anki. By folks who actually have interest in the feature.

rikafurude21 12/14/2025||
Isnt a sqldump just a text file? That should be easily shareable on Github
yellow_lead 12/14/2025||
Yes, but for Hashcards they're using markdown, so it's much easier to collaborate on
jbstack 12/14/2025||
> First, [Anki] is ugly to look at, particularly the review screen.

You can customise note types with CSS and Javascript, which means that you can make cards look however you want.

johanyc 12/14/2025|
"Anki" is ugly. not anki note
jbstack 12/14/2025||
Yes but the article said "particularly the review screen". 95% of the review screen is made up of your card, which you can customise.
GaggiX 12/14/2025||
Also Anki is not ugly at all in general, the interface of Hashcards looks much uglier to me.
brianjlogan 12/14/2025||
This was a super interesting article for me as I'm working on a prototype software aiming to promote spaced repetition and some newer wave learning science as a common approach to "leveling up" in an age where AI is pushing the competitiveness of human labor.

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?

gala8y 12/14/2025||
You might want to read https://news.ycombinator.com/showhn.html.
brianjlogan 12/15/2025||
Thank you!
willmorrison 12/15/2025||
Very interested, I’ve been working on SRS software and care about this problem too. My email is in my profile.
_JoRo 12/14/2025||
As someone who has used spaced repetition extensively I will just provide a few insights that might be helpful:

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.

jwrallie 12/15/2025||
I think the overall idea is good.

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.

WhyNotHugo 12/15/2025|
I’ve been storing cards as markdown with a horizontal ruler separating the prompt from the response and another ruler separating historical data.

That is: the historical data in on the same file as the card. This makes cards trivial to sync.

mxgrn 12/20/2025||
I also wanted a frictionless card creation experience, and I didn't want another (mobile) app for that. I'm only using SR for new vocabulary in a foreign language, so I created a multilingual AI-powered Telegram bot [1] that does just that.

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.

[1] https://lexicorn.ai

rsanek 10/8/2025||
>I have learned that the biggest bottleneck ... is just entering cards into the system.

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.

jiehong 12/14/2025|
But making the card actually help in forging a memory of it.
jwrallie 12/15/2025||
I think it’s a matter of scale, you can create hundreds of cards in a few minutes with LLMs, and then delete a third later during learning.

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.

analogpixel 12/14/2025||
Does anyone outside of people in school or language learners use these type of tools in any interesting ways?
MichaelNolan 12/14/2025||
Know personally in real life? No. But there are plenty of examples of people using Anki/SRS tools for interesting things outside of school or 2nd language. I’m firmly in the camp that SRS is widely underrated and underused for working adults.

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...

dangus 12/15/2025||
They'll always be "underrated" and underused because they're so damn unenjoyable.

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.

runarberg 12/14/2025|||
I tried to use Anki learn chess openings. I think it is a decent usecase, however I quickly gave up because I had to get better at visualizing the moves from algebraic notation (a skill worthy of learning anyway if you want to become good at chess). However I never continued my chess improvement goals to the extent where I picked up Anki again for this purpose.
lugu 12/14/2025|||
For maths, but not only: https://cognitivemedium.com/srs-mathematics
ouked 12/14/2025||
Ive used Anki to learn musical intervals
kuil009 12/15/2025||
Rather than treating SRS as a learning tool for facts, I find it far more valuable as a system for recording and periodically revisiting past judgments, especially to reflect on whether a decision made in context was actually a good one.
treetalker 12/20/2025||
I too would appreciate learning more about your implementation. This seems akin to Andy Matuschak's concept of "spaced everything".

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?

nomadygnt 12/15/2025||
This seems really interesting to me as I don’t often work in domains that require me to know a lot of facts, but I still feel like SRS could be useful. I just don’t quite know how to use it. Could you give me an example of what you mean here? What kind of decisions do you find meaningful to periodically reflect on?
adangit 12/14/2025|
Working on a Rails FSRS app, similar focus on healthy defaults, trying to find the 80/20 of what Anki does today: https://cadence.cards, free side project.
More comments...