Where Anki falls short

As a language learner, one of my daily tools is Anki flash card software. I primarily use the desktop version for entering data, and I primarily use the free Android app, AnkiDroid to study. Although the two pieces of software work together, they are written by different people, and rightly should be considered two distinct software packages. But for the purpose of this post, I’m talking about them as a system… the “Anki System”, rather than either specific piece of software. Another key part of this system is AnkiWeb, which allows synchronizing flash cards between the desktop and Android apps (and iOS app, if you use that).

Overall, I really like the Anki system. It enables me to easily study language flash cards anywhere I go.

But this post is about things I wish were different.

I’m not writing this post just to complain. I’m actually writing this post primarily as a “to do” list for myself, as I’m working on writing my own flash card program, which eventually I hope will replace Anki for my own personal study. Secondarily, I’m writing this post in the hope of generating some interest in my upcoming project, and getting feedback from other users of Anki or other SRS flashcard systems, about their own complaints or wishlist items about Anki, so that I might eventually include them in my own project. And thirdly, perhaps the authors of Anki and/or AnkiDroid will take some inspiration from this list and improve Anki!

This list will be updated as I think of additional features to add or annoyances to fix. If you have any suggestions, please leave a comment below!

The list, in no particular order:

  • WEBP support.

    WebP is a new image format that provides lossless and lossy compression for images on the web. WebP lossless images are 26% smaller than PNGs and 25-34% smaller than JPEGs of similar quality.

    Smaller images means faster sync and less storage usage, which are both especially important for mobile apps.

  • Better synchronization

    Certain changes to an Anki note definition (e.g. adding or renaming a field) require a full sync of the entire database. This is annoying when syncing later from the Android, because it means a larger download. It’s doubly annoying when I’ve done some studying on my Android and haven’t synced yet–any such study progress is erased.

  • Better scheduling with multiple subjects

    I study multiple languages in Anki. Anki gives me the control I need to weigh certain languages higher than others, but it’s very awkward and cumbersome. If I’m studying vocabulary for French, Spanish, and English, and want to focus on French with 30 cards per day, review my Spanish with 10 cards per day, and just play along with 5 English cards per day, I have to set those values per-language. Later, when I want to reduce my daily study time to a maximum of 20 cards total, I have to adjust each language to, say, 12, 5, and 3 cards respectively. I would much rather set a single daily limit, and then specify a percentage for each language: 65% French, 20% Spanish, 15% English.

  • Better scheduling between related cards

    By default, Anki will “bury” related cards until the next day when you’ve seen one. So if I’ve seen the card asking me to translate Spanish “gato” to the English word “cat”, it will bury the reverse card which asks me to translate “cat” to “gato.” This is good, but it doesn’t go far enough in two key areas:

    1. I may have another card translating “gatito” to “kitten”, and this should be buried as well. As should a card about the sentence “El gato está sobre la mesa.”

    2. Once cards are sufficiently mature (with a delay of months), burying a related card for just a day is not sufficient. If I get a review card about some especially obscure word after a 6 month delay, I don’t want to see the reverse card the next day. These reviews ought to be staggered. Perhaps by as much as 3 months (or half the review time). When you have, as I do, multiple related cards for the same word (as many as 5 in some cases), it doesn’t make sense to wait 6 months for a review, then see all 5 of the cards on consecutive days.

  • Better daily scheduling

    Anki lets you specify a maximum number of new cards and a maximum number of review cards you see per day. This is nice, as far as it goes, but if you’re trying to target your study to, say, 30 minutes per day, there’s a lot of trial and error that goes into getting the right number of daily new/review cards. It gets more complicated when you consider that review cards accumulate, so if you add 20 new cards per day, within a week you may have 200 review cards per day.

    I would like to see the option to schedule for X minutes per day, and let the software calculate my average study time per card, and then project into the future how much time I’ll spend studying on any given day based on today’s number of new cards, then assign me only that number!

  • An algorithm more forgiving of irregular study.

    Anki’s algorithm is borrowed primarily from SuperMemo, so I don’t want anyone to think I’m really “blaming” Anki for this, but I still think there’s a lot of room for improvement.

    If, due to circumstances (such as vacation, or laziness), I fail to study for a few days, I end up with a huge back log of review cards. There may be no way to avoid this entirely, but I think there are better ways to deal with the situation than what Anki does.

    In this situation, Anki just trudges right along, giving you review cards in their configured order. I choose random order–the other option is in the order the cards are defined. But neither of these orders really makes sense, least of all in a backlog situation. The ideal order, in my opinion, would be based on some sort of weighted priority. The priority ought to be based primarily on the interval of the card. In other words, if I’m reviewing 800 backlogged cards, with intervals from 1 day (cards I saw for the first time the day before my vacation) to 18 months (cards I first saw over a year and a half ago), the cards with the lowest intervals ought to be shown first. This way if I only have 30 minutes to study today, I’ll study the highest priority cards, leaving the 18-month old review cards for another day.

    Of course 18-month old review cards can’t remain low-priority forever, so their priority ought to slowly increase, as their due date slips farther into the past. A card with an 18-month interval, but 6 months past its due date may indeed be higher priority than a card with a 1-day interval which is due today. The specifics remain to be worked out. The key is that given two cards, one with an 18-month interval and a 1-day interval with a due date of today, the one with the lower interval ought to take priority.

  • Better template support

    Anki cards support HTML with minimal templates (Mustache, I think). This is a limiting factor for certain things. A richer template engine would be much appreciated.

  • Better JavaScript support

    Because Anki displays cards using a web rendering engine, it also supports JavaScript. But the JavaScript support is not very good (it’s easy to lock up the editor if you make a typo in your JS code!), and it doesn’t support loading external files (which makes including jQuery, for instance, almost impossible). In short: There’s a lot of room for improvement here.

2 Comments

  1. Pingback: CouchDB 2.0 Review: Run away! - Verbally Flimzy

  2. Good post. I use an add-on for descending intervals when reviewing or catching up on cards. It’s much easier to go through cards with high intervals quickly so you can get to the high priority learn cards soon thereafter.

Leave a Reply

Your email address will not be published. Required fields are marked *