Hacker News new | past | comments | ask | show | jobs | submit login
FSRS: A modern, efficient spaced repetition algorithm (github.com/open-spaced-repetition)
376 points by rickcarlino 4 months ago | hide | past | favorite | 126 comments



One massively overlooked way to improve spaced repetition is to make easier cards. It's surprising just how easy an effective card can be.

I started out using Anki to learn French vocabulary. I'd make pairs of cards, with English on one side and French on the other. This started out easy, but became utterly brutal and depressing with several hundred cards in my deck. Too many near synonyms.

I eventually took a hint from Katzumoto's Japanese advice, and started making cloze cards. I'd copy and paste an entire paragraph from an ebook or a web page, and hide just one word. These cards were easy, but also effective.

Then I got lazier.

I'd only hide half a word. Or I'd just boldface a word, and mark the card as a "pass" if I could sort of remember that word in context.

And somehow, these cards actually worked better.

Then I got lazier still. If seeing a card made me grown "Oh, not that card", I'd just delete it. If I missed a card 3 times, I configured Anki to permanently suspend it. If I actually needed to know a word, no worries, I'd see it again soon in a more helpful context. And my French vocabulary continued to grow by leaps and bounds.

I don't think that biggest improvements will come from better spaced repetition algorithms. I suspect the biggest wins will come from improved card formats. And it's surprisingly hard to make a card too easy to be useful.

(Source: 35,000+ Anki reps across three languages.)


You're doing SRS right!

Geeks like us love to get into SRS algorithms and chase after the 1% improvements with a cleverer repetition algorithm or a better input method. The real failure mode is much more mundane: People give up.

I see it all the time. People cram thousands of cards into Anki in their first month learning something. After a month or two they are so overwhelmed with reviews and the reviews become such a chore that they just give up. (Of course, there are people who manage to add thousands of cards every month for years and years. These are the people who would probably do nearly as well with just a pen and paper. )

Two pieces of advice that make all the difference: Make your cards a little bit 'too' easy and be rather selective with your cards.

When you first make a card you're probably actively studying the subject of the card. You're very familiar with it and it's all in your head right now. The temptation is to make a card that is fun and challenging for you right now. Resist! Instead, make a card that feels slightly too easy, so that in a week or two it will be enough to tickle your memory rather than confuse you.

Also, people dump entire books worth of sentences into Anki. I like to use the metaphor of walking through an orchard: take your time, look around and grab one or two of the nicest apples you find. If you try to grab everything you're only going to slow yourself down. Also, if you pick up a rotten apple (uninteresting/too difficult card) it pollutes your entire deck. You start to resist review your flashcards.


> The real failure mode is much more mundane: People give up.

The other major failure mode is similarly boring: sometimes it's just not useful to blindly memorize things. The exact problem that spaced repetition solves is pretty niche, and while it can be "close enough" to be beneficial in adjacent endeavors, it's also extremely subject to Goodharting. The more hardcore you go into optimizing your SRS procedure, the likelier it gets that the metrics you're optimizing for depart from your actual goal.


> sometimes it's just not useful to blindly memorize things

Specially for language: https://thehardway.guide/srs (own content)


I’ve been looking for this specific website for almost 2+ months after vaguely remembering it. I figured I’d just hope to run across it while sifting through hackernews. Thanks so much lol


Is there really any solid research determining the "best" algorithm, or even ranking them? As best I can tell, any process to repeat wrong answers more often and the correct answers less often, and does so with some amount of increasing time delta, will work. But I have yet to see any proof that one algorithm is better than another.


I don’t know if there is, but the forgetting process follows the https://en.wikipedia.org/wiki/Forgetting_curve

Ali Abdaal claimed in one video that memories are strengthened more when something is only just remembered than when it is easily remembered, so as late card prompt as you can get, before actually forgetting. I don’t remember his source for that.

And there’s simply limited time, a thing which repeats wrong answers more but not as much as you need is wasting your time and a thing which doesn’t reduce correct answers as quickly as possible is having you waste time reciting things you know.

So there seems to be room for ways to rank different algorithms.


We can compare algorithms by their accuracy. Here is a benchmark: https://github.com/open-spaced-repetition/fsrs-benchmark


Yeah that's fine, but I meant peer-reviewed neuroscience.


I found some analysis of the confidence intervals on this data that showed the results are not meaningful for ranking as they have shown


It would be nice if you could report this on Github. You can do it here: https://github.com/open-spaced-repetition/fsrs4anki/issues/n...


I've shared it here in the original ticket that added the benchmark confidence intervals https://github.com/open-spaced-repetition/fsrs-benchmark/iss...


I mean this any process that you suggest is a set of algorithms. It would seem logically strange to suggest that when a method is not within the set of algorithms it will not work, but as soon as any method is used that repeats "wrong answers more often and the correct answers less often, and does so with some amount of increasing time delta" it will work equally well with other methods.

I would suspect if this does appear to be the case that there probably is an optimal algorithm to start with but that all methods chosen here decrease in utility if you stay with the same variables (repetition frequency of wrong answers, repetition frequency of correct answers, time delta) for too long, the same way there are beneficial exercise methods for getting specific results when starting out that need to be varied if you want to keep getting results in that area without a decrease in the quality of the results.


Are there any guides or content or examples that yourself (or anyone else here), who's used Anki not for language learning?

For example, learning from books or mathematics?

What even is a good progression for creating cards? Only add them slowly and optimise for having a few cards in your review queue and only add after several days or weeks of no cards? Find a good text and just add them?

Sorry, it appears that the people in this thread are clearly deriving value from SRS and speaking as someone who's tried SRS and Anki on multiple occasions and failed to keep it up, it would be helpful to get insights =)...


I used it to self-study some maths a few years ago. As I was reading a textbook, I'd add cards, usually things like definitions, examples and counterexamples, a few simple proofs.

At some point I even added some more advanced proofs, which actually go the opposite route of what's recommended here - they were cards which weren't immediately answerable, but required some thought. I experimented with some different ways of doing this - I created my own "Math Proof" notes, which allowed you to write a bunch of steps, and you'd then get one prompt to remember a "proof statement" (what you're trying to prove), one prompt for the proof overview/steps, and then one card for each specific step.

At some point life overwhelmed me, and I couldn't continue with Anki (work + kids). But I've actually been getting back into it in the last month, and having all those cards has been an incredibly great way to relearn a bunch of math I'd semi-forgotten, fairly easily.

I also use Anki for:

- Memorizing Geography stuff (all the countries and capitals).

- Memorizing songs.

- Memorizing random misc facts that I run across (usually things like history, politics, etc).


Huh, memorising songs is interesting, how do you do this? Split it into a set of cards per verse where each card in the set is of a different line hidden?

Useful approach of going through a textbook as well thanks! I'll try it.

After writing out the original message I thought about using ChatGPT to suggest solutions, the execution leaves something to be desired, but the kinds of solutions it's suggesting are interesting.

For example giving it a block of text and asking it to generate questions, use that to find questions I find interesting and then answer them and turn that question / answer pair into a card.

It does seem that figuring how to not fall off the bandwagon is the biggest thing to work out first.


> Huh, memorising songs is interesting, how do you do this? Split it into a set of cards per verse where each card in the set is of a different line hidden?

I'm trying to find the best way to do this in 2024. What I used to do is use a plugin called "Cloze Overlapper", which helps generate these automatically - you give it all the lines, and it creates cards where you get one line before, and need to guess the next line. Unfortunately this plugin is behind a paywall or something, unclear if it still works.

There are alternatives today, a popular one is something like Lyrics Cloze Generator, which does something similar but ends up working a bit worse IMO.

Btw, I use this both to memorize songs I randomly feel like learning, but also to memorize songs in another language, as a way of learning more vocab in a fun way. Not sure if it's optimal but I figure I might as well, if it's a song I want to learn anyway.


This is a great idea, I'm beginning to realise that there's a lot wider space for using Anki than I originally expected, people are also using it to sight read music for example.

I think I should have another crack at it starting small with some of these and see where it takes me =)...


For what it's worth I've gone the opposite direction (one language, 70k Anki reps). For me, carefully adding context has largely felt like time wasted at card creation time (which can a surprisingly large proportion of study time per card, given how brisk reviewing usually is) and I've been bothering with it less and less. The default simple cards my dictionary plugin creates are usually good enough for me. I go out of my way to add context on the front of the card now mostly when it's a specialized word almost always seen within that context (so there's zero added value in learning it independently).

I do agree with the general idea that laziness and going easy on yourself is good though. I give myself quite a lot of slack when grading my answers, applying a "my understanding of this word is close enough to avoid confusion in practice" threshold rather than some impractical ideal of native-level mastery.


> For me, carefully adding context has largely felt like time wasted at card creation time

I actually had several custom tools that heavily automated card creation—I could grab a sentence from a web page, or bulk import highlighted phrases from an ebook. Then I had a UI which allowed me to easily highlight an interesting word, and either cloze it, or add a Wiktionary definition on the back. Then I had an Anki plugin to bulk import the cards. This could all obviously be combined into a single tool, and occasionally someone tries.

For my most heavily automated experiment, I used a tool similar to subs2srs to import sound, bilingual subtitles, and tiny screen captures from 4 episodes of Avatar: The Last Airbender. That was a fascinating experience, and I'm still earwormed with the dialogue of those episodes a decade later, after only a couple of months of Anki reviews. (See elsewhere in this thread for a link.)

Unfortunately, I'm not convinced that there's a good startup market for language-learning tools. Language learning is normally aspirational, much like a gym membership. And customers don't have any serious plans on how to reach their stated goals. (Again, like a gym membership.) Duolingo isn't terrible, but I suspect—based on lots of Anki experiments—that it should be possible to build much more effective tools than Duolingo. I'm just not convinced that anyone but serious ESL students would pay for them. Too many genuinely good tools in this space have sunken quietly, despite a user-friendly UI and a good landing page.


I'm working on that, wish me luck :)

I guess I am of the few that would pay for a good tool aimed at serious learners, but as I could not find any (in language space almost everything is a Duolingo clone), I am building myself.

So far I think I have proved my main hypothesis: it works really well for me. It's not magic, but it saves me many hours of learning.

Whether it could work for someone else, is an entirely different story... but on the other hand, I have no big ambitions.


I would be very interested in that thing :-) Do you already have something you can share or a page where we can track your progress?


No, but you can subscribe to https://thehardway.guide and I'll let you know when it comes... in addition, you get a free book :)


Shameless plug for my tool https://github.com/FreeLanguageTools/vocabsieve/

It can do sentence card creation, ereader imports, and vocab tracking, among other things.


> Duolingo isn't terrible

Unfortunately, it seems like Duolingo is terrible.

Spaced repetition cards seem to blow it away.


Duolingo and spaced repetition flashcards serve different purposes. Flashcards can’t teach you grammar or pronunciation, while Duolingo does a bad job at actually teaching you a large set of vocabulary. Using both of them is probably a good plan, though even better is flashcards + a real class.


Flashcards can teach you grammar.

Explicitly, by writing explanations of various grammatical phenomena on flashcards. Implicitly, with usage examples that demonstrate how the grammar works.

Flashcards can teach you pronunciation.

Explicitly, by writing explanations of how to produce various sounds on flashcards. Implicitly, with recordings that demonstrate how things are pronounced. (Ok, paper flashcards can't do that, but we're not talking about those, right?)


I got an HSK 1 deck on Anki and it has audio and the pinyin has tone marks so I am learning pronunciation. It is also giving me grammar structures in the first week that Duo didn't in months. I truly feel Anki is better and that Duo is the one that only teaches vocab.

If I need an explanation I just paste it into ChatGPT and ask for a breakdown.


Probably not terrible, but serving a different purpose.

I recommend this interview with Duolingo's founder Luis von Ahn: https://www.npr.org/2020/05/22/860884062/recaptcha-and-duoli...


If you have better tooling, you can add cards way faster. My project (https://github.com/FreeLanguageTools/vocabsieve/) is a tool to help you make sentence cards nearly effortlessly, or even converting ereader highlights, which probably averages to maybe a few seconds per card created.


That's pretty cool. Removing UI friction is essential to improving the learning routine.


The original SuperMemo 20 rules for creating SRS cards are a treasure trove:

https://www.supermemo.com/en/blog/twenty-rules-of-formulatin...

It will improve a lot your cards


I'm kind of wondering the same thing learning my guitar: Maybe a good thing is to approach an issue with different ways your head has to think about it.

Like, yes. I can just spaced repetition the heck out of the notes on the fretboard. Just hammer my head into the notes on a string until I pretty much just give up. Always an idea.

But I've found it more effective to mix contexts up. Some weeks, I just drill notes because I'm lazy. But then I also start tinkering around for a week with some weird scale, like hungarian scales and such. Some other week, I'm tinkering around with arpeggio chords, some other week with cord progressions with power chords, some weeks I'm trying to replicate some sound or feeling of a song.

And over time, the brain is putting things together. Suddenly there are realizations: Hey, this is just a G-Minor scale, which makes sense for a somewhat solemn song. Oh, this is just a G-Major scale but we skip those. Wait, I remeber half the notes of the scale, isn't this just that pattern? Also, if the scale is like this, couldn't we try playing that?

It's just a weird feeling, because the amount of things I think I know expands at a much lower rate of the things I realize I don't know - or don't have the technique for, lol.

But I'm kind of considering using a spaced repetition algorithm to just poke for 5 to 10 minute guitar things to do to get both the muscle memory and the neural connections about them going.


I've thought about doing this too - and there are certainly things that are worth rote memorization on guitar. But my experience has been that things stick a million times better when I learn them in context and really focus on using them, so I'm unsure how useful implementing spaced repetition would be vs "just play yer guitar".

That said, the notes on the fretboard is well worth the effort of rote memorization. I found the technique in this video[1] worked absurdly well for me. Years and years of only knowing the notes half-assed and not very well on the middle three strings got absolutely busted after doing this for a few minutes every time I was waiting on a build or something. I can nearly always find a note now, I'm not quite to instant recall but have substantially more ability in this regard now.

A place where spaced repetition might be worth it is in memorizing all the triads or keys, which is good to have instant recall on. I have these decently in my head but usually have to "convert" from a nearby chord in C major for oddball ones, which is fine while practicing but not what you'd want for performance.

[1]: https://youtu.be/PJddQ6Q0UDo?si=4dmR7_tlsWIhgvYg


> I'm unsure how useful implementing spaced repetition would be vs "just play yer guitar"

There's no reason you can't do both: Make flashcards that have a few bars of music on the front (tab or notation, whichever you use), and then actually play the music when the card comes up to figure out how the review should be rated.


Absolutely - that sounds like it would be a good approach. The main point I'm trying to make is that (at least, in my experience) there at least two classes of "guitar-related information," one that's amenable to rote memorization - like the notes on the fretboard, music theory "facts", etc - and another category where the information sticks better and in a much more usable way if it's learned in context. I would think that "ear training" (specifically interval identification) would probably be somewhere in the middle - you could benefit simultaneously from the "rote" memorization and also apply it on the fretboard).

I spent a long time just playing the different 3nps shapes and never had them really soak in until I started picking small chunks of them out as useful during improvisation and really focusing on them while playing over loops or just noodling.

What would be really awesome, especially if you're improvisation focused, would be some cards that have a short backing section attached to them - so that you can hear some musical context and then work on some small chunk of information (like 2 or 3 strings of a scale). Something like that would probably the best of both worlds and I bet you could learn a lot of material really quickly that way.


I’ve been using Anki on and off for years for language learning but have most recently been using it to study for online uni courses.

Something that’s become evident, perhaps due to the varied nature of the content (vs. all language) is how much gravity card formatting has. In decks made by others I find myself frequently re-wording the answer sides of the cards which makes a noticeable difference in retention — answers that are succinct and flow nicely stick better.

So in short, I’d concur. Card format is important. If you find a card that feels awkward somehow don’t hesitate to rework it.


We've got pretty similar ideas on SRS. I'm working on Phrasing.app, we use (a heavily modified version of) FSRS and have implemented a lot of what you're talking about. We just had a company retreat where we talked about new review modalities and several of these ideas came up.

If it looks at all interesting to you [1], I'd love to chat more and hear more about your experience / approach / etc. Feel free to reach out at ben [at] phrasing [dot] app

[1] https://blog.phrasing.app/phrasing-first-look/


Yeah. I'm the author of FSRS and I agree with you. In my opinion, the quality of cards determines the upper limit and the algorithm just helps you achieve the upper limit efficiently.


> One massively overlooked way to improve spaced repetition is to make easier cards.

At least with SuperMemo, this is actually one of their main tips.

See also: https://supermemo.guru/wiki/20_rules_of_knowledge_formulatio...


> I don't think that biggest improvements will come from better spaced repetition algorithms

Exactly that, specially for language learning. The stated goal of hitting a target probability is pointless IMO.

Language acquisition is not about memorizing words, but progressive familiarization (eg via retrieval practice).

You have to expose yourself to massive amounts of language, create your own cards fast, review them faster, move on even if you "fail", don't do too many repetitions (6-8 should be enough for >95% of cards)

The most important aspect of an SRS algorithm is to be practical: sensible choices, equally spaced out among them, that allow you to decrease / maintain / increase intervals without ever punishing you for failing.


What killed Anki for me was having to add cards. It is such a chore adding single word cards. I also ran into the problem of increasingly niche synonyms that I'd learn, but would rarely see in text. For some reason I never really considered cloze cards.

The anki default of 8 relapses before suspending a card is much too high. It took me a while to realize, but dealing with problematic cards takes up -way- more energy than learning new cards... it's not energy/time efficient at all.

Do you have any recommended sources on cloze style cards?

[45k reps here for Korean]


You have absolutely nailed it. Anki should work as a sliding window on material that you wish to learn not as an ever increasing bucket with more and more stuff in it. That way the new material will always be underexposed. It's much better to keep moving. I have the exact same patterns with learning pieces to play on the piano, and within those pieces you see those patterns again (it's almost a fractal).


This is great, going to try this approach with my Japanese Anki reps.

Mind linking out to Katzumoto’s Anki advice? Is this this one? https://tatsumoto-ren.github.io/blog/setting-up-anki.html


This is right. I tried and gave up on spaced repetition a few years ago. When I tried again a year ago and did more research, I realised my problem on the first attempt was that I made too complicated cards.

I went back and dug up some of my more valuable cards from my last attempt, and some of them were so complicated that I had to break them up into 10–15 cards now that I know how to design good cards.

That said, I don't think the point is to make them easy. Since you want to aim for a 90-something percent success rate to get the most benefit out of it, too easy will make the going slower. The point is to make them atomic and that usually feels easy, even if you fail 10 % of recall tests.


Truly sorry to hijack, but if you have any recommendations for shared French vocab cards I'd greatly appreciate you pointing me in the right direction. I have some French from school, but would like to get back into it and it's...daunting.


Sorry to hijack your hijack, but I was/am in a similar position with my French/Italian/Portuguese/Dutch and more. I learned them to a high B low C level, but they've since faded from memory.

Trying to learn from language resources is painfully slow. Trying to watch TV or listens to podcasts is ineffectively difficult.

I'm building Phrasing[1] to tackle just this problem. We've just launched with all of the base functionality[2], including automatic analysis of native material to surface the most important words, phrases, and quotes specific to that material. We then make it dead simple to create flashcards-on-steroids which will automatically be applicable as flip cards, cloze cards, audio cards, and more.

When it comes to SRS, we:

- use our own fork of FSRS coincidentally (that's why I'm here hey )

- do away with scheduled due dates and actually try to keep the user engaged at a specific difficulty (you'll only see hard cards if you're doing well and 'can afford' it, you'll see easier cards if you're not doing well)

- dose out new reviews constantly, as it's better to make forward progress then to bang your head against all those challenging reviews

We just onboarded our second cohort of users, but we're planning to onboard another cohort at the end of this month. If you're interested you can fill out the beta application

[1] https://phrasing.app/

[2] https://blog.phrasing.app/phrasing-first-look


I've found Andy Matuschak's essay, _How to write good prompts_ [1] very helpful in making more impactful cards.

https://andymatuschak.org/prompts/


What were the key insights or surprises you got from that 13,000 word piece?

For background, I contributed to Anki long ago, wrote regularly about SRS in the late 2000s and got deeply into them for language learning for a few years. Later, I mostly stopped using them since I found extensive reading both more interesting and a better return on my time.

I’m interested in the topic but am not new to it.


You've inspired me to rethink my approach to Anki. I've used it on and off for the last few years, but always fall in the trap of creating cards that were too convoluted. Sounds like I could benefit from some deliberate "laziness".

Did you ever feel like you were answering correctly, on close cards specifically, not because of an improved understanding but because you were associating the correct answer with the prompt/excerpt? Would appreciate any advice on how to avoid this!


> Did you ever feel like you were answering correctly, on close cards specifically, not because of an improved understanding but because you were associating the correct answer with the prompt/excerpt?

I actually suspect that associating the word with the context helps, as surprising as that might be.

Let's say I grab a few sentences from an interesting article, and I boldface a word. I'll mark the card as "pass" if I at least sort of understand it in context.

On day 1, I honestly might find the word fairly confusing. I can explain what it means, but maybe the grammar is unfamiliar. Ditto for the first few reviews. But then around day 8 or so, the card disappears until day 20 or 30. And the next time I see that card, suddenly the odd bit of grammar is completely natural and obvious. There's maybe some kind of medium-term memory consolidation mechanism occurring? Something happens when I'm not looking at it.

Seeing the word in context somehow allows my brain to grab on. The human brain contains some incredibly powerful language learning machinery. In adults, that machinery still exists. Even if it's a bit rusty. And that machinery seems to work best on semi-comprehensible speech in a natural context. So think of Anki less as a set of facts you must learn, and more as a tool to distill and concentrate natural language so that you can let your brain work on your weak points. (And as soon as possible, start reading lots of books and watching TV! I learned the hardest 10% of my vocabulary using Anki, and much of the rest from context reading books.)

Also, I find it fascinating that LLMs are trained using a very similar process. Either "predict the next word" or "fill in the blank". Now, they need a lot more input than any human does, but the fact that fill-in-the-blanks works so well in both cases is fascinating.

Here are two of the most interesting experiments I tried with Anki:

http://www.randomhacks.net/substudy/ https://blog.beeminder.com/hieroglyphs/

(The only language I ever bothered to push to a high level was French. Spanish and ancient Egyptian were basically experiments to see how quickly I could pick up the basics, using the tricks I learned while working on French. A language that you can use at a professional level is a bit like a pet; it requires ongoing care.)


That is a legitimate problem of SRS (recognition vs knowing), I use a few ways to avoid it:

-Don't do many repetitions of the same card. Eg. if i want to learn 5 new specific words, maybe I use 6-8 sentences that each use 2 new words, so that each new word shows in 2-3 cards. Then I only review each cards 6-8 times in a 2-month period (normally).

-Use long intervals. I rather forget than learn to recognize the thing. But even if I forget, I almost never click "fail". You learn with retrieval effort, even if you just forgotten the thing (that's science)

-Even so, by the 4-5th rep I start recognizing cards, so I be mindful when reviewing, and force myself to really think the answer (occasionally, writing down the answer, for instance). This clashes with my principle of going fast, so there is deff a balance.

-I don't track "streaks", but if I struggle or I have the feeling that something shows up too much, I archive and create more cards.


Love this idea!

Does Anki or any of its plugins support creating a difficulty progression when creating cards?

ie. half-word cloze, then full-word, then multiple choice, then q&a, etc.

I’m not sure how this would work in practice. Like would the next difficulty card be added to the deck once the easier card has reached a threshold?


In relatively recent versions of Anki, you can create nested Cloze deletions: "{{c3::{{c1::foo}}{{c2::bar}}}}" will show you cards "[...]bar", "foo[...]", and "[...]", in that order, all with answers "foobar".

As for multiple choice and q&a---my practice is to make both Cloze and basic cards for, well, most things---Cloze are good for the early steps and for seeing how different pieces fit together, but basic cards are more demanding, and without them I don't quite feel like I've learned a thing.

(FWIW my primary use is physics & the mathematics behind it, not language learning.)


Someone could make an NLP algorithm to determine whether a given card is well made. Training data could just deleted/non-deleted cards from a power users such as you.


Huh, hiding part of a word is brilliant. I never thought to do that even though I made tons of cloze cards.


I’ve learned tens of thousands of foreign language words using Anki and have always find that having pictures on the cards help me remember the words.

I currently have a (foolish?) project. I’m trying to memorize the 750 cards of a quiz game that we play in the family. All questions are answered by a year. So for example: “What year did Coca Cola Light come out?”.

I have been using Midjourney to generate images for those cards which makes it so much eaaier to recall.

I have a system. I have a person representing each century; Einstein is 1900-2000 and for example Mari-Antoinette is 1700-1800. Then items represent the decade; a sixties car represent the sixties, jacket with shoulder pads the eighties and so on.

I do something similar for the last digit.

Then I have Midjourney generate such pictures, in a comic book style, and I save the most fun or absurd one and use that on the back side of the Anki card.

The image is often easier to recall than the year by itself


Three things:

1. Look up PAO - it's a tangentially related mnemonic system that uses images.

2. Test your recall periodically with/without the images otherwise you may find that the true nature of recall (aka in the wild) without said images is adversely affected.

3. Is it Trivial Pursuit? A friend of mine deliberately memorized all the cards of the original Genus edition.


It’s not TP, it’s a Swedish game called När då då.

The image is on the back of the card, with the answer. So trying to recall the year, I don’t get to see the picture. But, the picture is the first thing that comes to mind when I get the question and the from it I get the year.


> I’m trying to memorize the 750 cards of a quiz game that we play in the family

I'm currently doing the same for geography ... flags, capitals, etc. I reckon it will give me a +5 advantage on most trivia nights


Wow, that system is ingenious. I've always struggled with dates, gonna steal your idea from now on!


The burning question is "does it work"?


I don’t know. I’m through about 100 cards. I’ll let you know in a couple of months:)


Very interesting. According to the benchmarks, with this algorithm, users can review 20-30% fewer cards than with the classic Anki algorithm.

Just a few days ago, I published a Python implementation of the classic SM-2 algorithm that I use for https://python.cards, but I may switch to FSRS. https://github.com/vlopezferrando/simple-spaced-repetition


Your python.cards looks great. I suggest you add a few examples.

Any chance you are open sourcing the web app? I can see it being a popular way for niches to show flashcards eg. for students to learn X


Thanks! I definitely will add more examples to the landing page, currently I'm working hard on the decks: pathlib in depth, a tour of the stdlib and Norvig's tricks (a collection of tricks from the Pytydes of Peter Norvig).

I believe the hardest part of using spaced repetition to learn programming is creating good decks, it's a ton of work.

About open sourcing the web app, I might do it. It's a Django app, and I've published some videos while coding it (https://www.youtube.com/channel/UCyWUj9r0soytotuuh2JnPrw), so it's no secret.


I forgot to mention in my previous comment that I saw no sign up box for the newsletter.

> I believe the hardest part of using spaced repetition to learn programming is creating good decks, it's a ton of work.

Agreed. To have always been disappointed with the programming decks I have created.

> About open sourcing the web app, I might do it. It's a Django app, and I've published some videos while coding it

I saw the videos, thanks. I think a generic platform would have value, even if there was a paid option with more features (payments etc.)


It's weird you didn't find the sign-up box to the waitlist, this is how it should look like: https://imgur.com/a/0ZIbz4p, I actually got some sign-ups from this comment!

Anyway, I can sign you up manually if you wish.


FYI: I had to turn off uBlock Origin to see the waitlist sign-up box, my guess is that's why teruakohatu didn't see it either.

Anyways, thanks for the project, it looks nice - I'll be happy to grab the decks when they're ready :)


Thanks for the tip! I'll try to fix it.


It seems from the description that FSRS still puts an exact review date on each card? This feature was pretty much the reason why I stopped using Anki. I'm not in college and not doing exams, I just want to practice when I feel like it, maybe with large breaks between sessions, and not feel like there's a backlog building up.

I think Anki is a great app, I just wish there was an algorithm that would just randomly sample cards (with probability proportional to how urgently you need to review it) rather than put a review date on them. Something like https://github.com/fasiha/ebisu but available as an Anki plugin (if that supports custom algorithms on mobile yet?) or a similar app with an open format for cards.


But that's not how memory works...you can't put your memory on hold like you're suggesting. There's a reason FSRS follows a personalized memory curve.


You can't, but I wager a student excited to doing a review but with a suboptimal method, will do better than a student who dreads the review with the optimal method.


Current algorithms/UI feel like punishment for over-learning, as if it was a suspicious thing that carried great responsibility to open a book and read a page without fully committing to forever maintaining reviews on everything you happened to come across. There should be no punishment and only reward.


Please don't make assumptions about my goals. I was clear about my requirements and asking for recommendations.


I haven't made any assumptions about your goals. I simply reminded you that memories kind of have "expiry dates", so that review dates are necessary. The backlog you mentioned is the memories you're about to forget if not "refreshed" in time. If you just want to practice whenever you feel like it, there are tons of apps that use a simple Leitner box, but you may soon find that it becomes a burden to review your cards if you add an important amount of them. Anki already has ways to do what you want, while still working according to your memory patterns, such as using filtered decks and lowering desired retention.


I already pointed out twice that Anki doesn't work for me, and your response is basically still 'you're holding it wrong'. I know of all the things you mentioned, and like I said, they didn't work for me, which is why I was looking for recommendations (which other posters have provided).


The point is that you're looking for something that accounts for your memory patterns while reviewing things haphazardly, which goes against the former. It doesn't exist. I wonder why you just don't use traditional study methods at this point. If you dread the backlog (and you shouldn't if you have well formatted cards, which may be why it didn't work for you) you will dread the alternative even more.


> I wonder why you just don't use traditional study methods at this point.

Because I'm not a student. Why is it so hard to accept that I know what I want and am just looking for recommendations that do that? If they don't exist, so be it. The point of my question was to find out what exists, not to get a lecture on what I should want.


>I just want to practice when I feel like it, maybe with large breaks between sessions

That's how SRS already works. But if you clear out the "backlog" you can no longer practice whenever you want and must wait for a period before you will be able to practice again.


I made a half-baked app that did something like that and it worked very poorly. For facts I remembered repeating them was annoying, and many of those I forgot, I forgot them completely. So repeating served little purpose and the progress was very slow. The key is to repeat when one _almost_ forgets and this can't be done without due dates and scheduling.


I'm working on Phrasing.app that does just this. We originally used ebisu, but ended up (heavily) modifying our own fork of FSRS.

We don't use due dates really (except for some analytics by request), but instead try to keep a user at various difficulty levels.

We care more about forward progress then making sure you're always 100% caught up (if a words really that important, you can either favorite it or you'll see it again).

It's not an open flashcard app, we're really also heavily focused on automatic sentence mining for foreign languages, but I'd be happy to answer any questions about my experience adapting FSRS.

You can see more about the product at https://blog.phrasing.app/phrasing-first-look/


Thanks, will check out.


You can use a filtered deck and sort cards by relative overdueness in Anki.


I’ve been using FSRS for 3 months and it’s finally resolved some of my pain points about having to trial-and-error adjust the old SM2 scheduling algorithm, since the content of each deck can greatly affect what the optimal retention is. Now you can just retrain the weights for each deck you have every few months and it will adapt appropriately. The paper[0] is also definitely worth reading if you want to see some rigorous analysis of large-scale real-world spaced repetition science.

Because of the extensive benchmarking most people probably will not benefit from refitting the weights to their collection until they have thousands of reviews (author recommends 1k+).

Note it still works fine even if you do your cards late, since the recall probabilities are based on the stability and when you last reviewed the card, and the stability will update a bit longer if you somehow managed to still recall a card after the due date.

[0] https://dl.acm.org/doi/10.1145/3534678.3539081?cid=996605471...

[1] https://github.com/open-spaced-repetition/fsrs4anki/wiki/The...


I use multiple spaced repetition apps per day just for fun because I like doing flashcards as a hobby. I have tried this out, its good, but still not as good as the newest version of Supermemo. You can tell if you put the same or similar material into two or more apps. FSRS is much better than almost everything else out right now though and I think it will be better than Supermemo very soon. I tried Mochi Cards for about a year and it was just okay, a little better than a default Anki install. Mnemosyne is the same. The Supermemo SaaS app is okay, but I don't like how they structure their language materials.

For language vocab, I use Clozemaster, but then I put the sentence into Supermemo after I get it right because the SM algo is that much better. They also have ChatGPT explanations for each word of the sentence. I also put those into Supermeno.

The hardest part is making good cards for sure. This will help with more ideas: http://arxiv.org/abs/2401.01257 and https://rust-book.cs.brown.edu

Also, I have not found a flashcard program that lets you make cards as fast as Supermemo. With Supermemo, you paste in a chunk of text (ctrl-n), highlight a word you want to make cloze deletion from, and press alt-x. You can do it multiple times on the same piece of text, and every time you do it, you get a new cloze deletion card in your reviews. Almost every other app, you have to make a single card at a time. I think its because most other apps stick too hard to the cards and decks metaphor. Supermemo uses a tree structure to organize everything. It makes a big difference. Technically, you don't really need to organize anything though. People act like the material they learn is going to be categorized into neat decks in their head.


  > With Supermemo, you paste in a chunk of text (ctrl-n), highlight a word you want to make cloze deletion from, and press alt-x. You can do it multiple times on the same piece of text, and every time you do it, you get a new cloze deletion card in your reviews.
In Anki (on Debian at least) it's Ctrl-Alt-C.


> Also, I have not found a flashcard program that lets you make cards as fast as Supermemo. With Supermemo, you paste in a chunk of text (ctrl-n), highlight a word you want to make cloze deletion from, and press alt-x.

In Mochi it's mostly the same. Press n (new card), ctrl-v (paste text), select word, ctrl-l (make cloze), ctrl-[n] (where n is 0-9) to create a cloze group. Each cloze group will have its own "card".


Given the importance of spaced repetition, I've wondered if a modular approach is called for, contra Anki.

Aren't there three separate items?

1) Your cards (or a subset of cards).

2) The history of your interactions with them.

3) An algorithm (potentially just-in-time) taking that history into account to present cards to you, thereby adding to the history.


Anki FSRS moves closer to being a "just-in-time" algorithm based only on user-provided inputs. And although its data structures aren't strictly modular, they come as close as practical to that ideal while still remaining compatible with legacy Anki decks and extensions.

In practice, that's illustrated by the fact that there's now a button to fully recompute all intervals and difficulties based only on your history and the current algorithm tunings. And if you've already been using FSRS and the tunings haven't changed, the recomputation won't have any effect because it's equivalent to the incremental computations after each review.

So in principle it could be thought of as a just-in-time pure function, which involves a cache of generated data only for legacy & performance reasons.


For some related shameless self promotion: I made a free open source tool that let's you create Anki cards from youtube videos [1].

I would love some feedback.

BTW, the code is on github [2].

[1] https://youtube2anki.fly.dev/

[2] https://github.com/vacmar01/youtube2anki


This is cool. Do you mind me asking what videos you use it for?


Sure.

I'm currently learning MRI technology for my radiology board exam with the following youtube playlist: https://www.youtube.com/playlist?list=PLPcImQzEnTpz-5TzxyyoY...

This is what got me the idea.


Thanks Xiaojun for FSRS, I've talked multiple times with him about FSRS and Anki. In traditional spaced repetition systems like Anki+FSRS, learners often review knowledge always in the same context, which can lead to an understanding of knowledge as isolated units rather than part of a larger network. For example, learning words isolated does not fully prepare learners to use the language in real-life situations, where context, collocation, and usage play a significant role. Instead of isolated repetition, a better way to learn languages is to expose learners to words in different contexts and combinations, helping them to understand how words naturally form in chunks and sentences. This varied exposure can help learners build a deep network of neural connections, enhancing their ability to understand, recall, and use language effectively. So for learning languages, instead of Anki cards, we're building something that shows real-life short videos where each of our videos is a mini scenario, showcasing language use in real-life situations. This means students aren't just memorizing words, but seeing how they're used in natural contexts, complete with visual cues and body language. This approach allows students to understand the practical application of words and phrases, making the learning process more engaging and effective. Since the main reason that students fail to learn foreign languages is they don't keep on studying. Another thing that Anki lacks is, real-life scenario-based quizzes instead of "do I recall this?", students need to apply what they've learned in a fun, low-pressure environment.

So, SRS algo is just part of the solution, and definitely not a silver bullet. There are a lot of things about memory, such as how emotions affect encoding - you don't need SRS to remember your first kiss or graduation day. People learn their mother tongue to fluency w/o using any kind of SRS, while most people fail to learn a foreign language to fluency even if they use SRS.


This is a valuable argument (learn in context, vary the context), but the mention of "people learn their MT without Anki / grammar / study" always bugs me.

First and Second Language Acquisition is just apples to bacon. The baby and adult brains are different, and their needs, capabilities, and context are vastly different.


Of course, babies and adults are different but more important is how language is learned or acquired. Most adults do not have mentally stimulating content that is basic enough. There is a dilemma where the content they need is the content they don't want to watch.


Yeah. I prefer to combine SRS and immersion learning, like the Refold method.


Interesting, I've been using Anki for about 10 months to study Japanese vocabulary. I'm going to give this algorithm a shot, thought I'm not quite sure how to determine if will be "better" or not.

I guess this at least allows me to remove my old anti-ease-hell addon.


I'm not at uni anymore, but I let new students use the flashcard decks I made, any thoughts on the strategy I'm planning to recommend? Our university has the first two trimesters dedicated entirely to education with the last dedicated to exams.

> During term time if you set the retention to like 70 % so you don’t spend too much time on it daily and then increase it to ≥ 90 % when the holidays start.


Oxford Flash cards have a good take on spaced repetition.

They provide actual cards, you can use the old way.

Or you can then take a picture of them using their free app Scribzee, and review them digitally too. My son just aced his anatomy exam with them.

https://www.my-oxford.com/int-en/oxford-flash-20-flashcards


I'm working on building my own flashcard based studying application for long- and short-term learning. How would I go about implementing this?


Libraries: https://github.com/open-spaced-repetition/free-spaced-repeti...

All are MIT licensed I believe, Anki is primarily AGPL


there are a bunch of pre-existing ones here: https://github.com/open-spaced-repetition/ > Multiple Language Support: fsrs.js, go-fsrs, rs-fsrs, py-fsrs, cljc-fsrs, swift-fsrs and ex_fsrs


Contribute to Anki?


Is this algorithm also available on mobile?


Stable on AnkiMobile, available in the AnkiDroid 2.17 alpha:

* https://github.com/ankidroid/Anki-Android/releases/ (Parallel.A)

* OR: https://ankidroid.org/#alphaTesting


Only 2.16.5 available in Play Store at the moment.


2.17alpha15 (latest alpha) is available under the 'closed testing' track [0] on the Play Store.

After following the instructions [1] (joining the Play Store testing programme, then the Google Group), the Play Store should distribute + automatically update the alpha.

[0] https://play.google.com/console/about/closed-testing/

[1] https://ankidroid.org/#alphaTesting


I wonder if there is plan for this to land in Mnemosyne[1]. I prefer Mnemosyne over Anki because I can self-host the web-sync server.

1: https://mnemosyne-proj.org/


What's wrong with `anki --syncserver`? (user management is a bit iffy, admittedly)


My understanding is that the anki Sync serveur is only for the sync part, there is no web interface to do the review.

Also, was it always free? When I looked at what was available for Anki, the remote solutions were paid only and not selfhostable.

Maybe I didn't look well enough back then.


Is there anybody here using this now? How does using the FSRS plugin on desktop effect the usage on mobile? I'm curious but don't want to mess up my anki setup.


Either wait some time for 2.17 AnkiDroid release or just use 2.17alphaXX from github. I'd prefer first option to evade any major bugs


Interesting approach for sure. Would be interesting to also see a comparison between to the SM-18 algorithm (which handles item difficulty differently compared to SM-17)


Yeah, here is the comparison between FSRS and SM-17: https://github.com/open-spaced-repetition/fsrs-vs-sm17


Yes I saw that, that’s why I thought it would also be interesting to compare it to the current SuperMemo algorithm (SM-18) and not „only“ the older SM-17.

It would also be interesting to see how SM-18 compares to SM-17 ;)


I also want to compare with SM-18, but I don’t know how to export the predictions of SM-18 from SuperMemo.

By the way ,SuperMemo CEO said that they will release the algorithm API. If it’s not very expensive, I will compare it with FSRS.


I missed comparison to earlier repetition equations like SuperMemo. Is there any hope for comparison and reference, or will precursor be forgotten?


Ah, this is really cool - i've been thinking about implementing a SR algorithm for one of my music related side projects.


Cool, let me know what you cook up if you want, I'm very much interested in that particular crossing of roads.


Is spaced repetition good for learning anything other than vocabulary?


Yes. I started using Anki for learning Chinese twelve years ago but gradually moved to using it for other stuff. About 60 % of my reviews (170k) are not vocabulary.

You can literally ankify (and therefore memorize) anything you want to remember: names of friends' children, algorithms, arguments from papers or articles, code, ...


You can learn programming languages by creating cards in a form of:

Question: short code

Answer: output


These algorithms are still suboptimal because they do not account for the spacing effect at all. But doing something is still better than nothing when it comes to learning.


FSRS has considered the spacing effect in its model: https://github.com/open-spaced-repetition/fsrs4anki/wiki/The...


How does spaced repetition not account for the spacing effect?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: