First Impressions of Mochi

Mochi's main user interface

Mochi is a freemium spaced repetition app. It is available on every platform and the paid version (5USD/month) has cross-device sync. This post is about my first impressions from using the free version, mostly comparing it with Anki.

Interface

The best reason to prefer Mochi over Anki is the user interface. Mochi is beautiful, clean, and elegant. Anki has a very unfortunate UI.

Here’s how a card under review appears in Mochi:

How a card appears in Mochi

Here’s the same experience in Anki:

How a card appears in Anki

My only UI complaints with Mochi are:

  • When doing the cards, I wish the progress bar was a bit more emphasized.
  • If you only have one card left for the day, and you fail it, the card’s answer side is not hidden, rather, it stays open.
  • Nowhere does it say the total number of cards in either a deck or the entire collection.

Statistics

Anki has a fairly detailed stats page (though the stat you care about, the retention rate, is underemphasized). Mochi’s stats page is very anemic by comparison:

Mochi's stats page

It would be good if, in the future, the stats page had a bit more detail. “Total number of cards” would be nice to have.

Templates

Mochi has templates: these allow you to separate a card’s content from its presentation. The main utility of this is presentational: it lets you change the wording and layout of cards that have a common format without having to change each one.

Here’s the template list, and a very simple template for defining terms:

The template list and the definition of a template.

And here’s an example of editing a card with this template:

Example of editing a card with a template.

Along with how the card is rendered:

Example of how a templated card is rendered

Anki has a more general concept called notes. A note is basically a data record from which multiple cards can be derived. For example, you could have a “Chemical Element” note type with fields for the element’s name, symbol, atomic number, etc., and multiple associated card templates asking all possible questions forwards and backwards:

  1. What’s the name of the element with symbol [symbol]?
  2. What’s the chemical symbol of the element [element name]?
  3. What’s the atomic number of [element name]?
  4. What’s the name of the element with Z = [atomic number]?

The main benefit is that if you make a mistake, or have to edit your cards to make them clearer or some such, Anki lets you make the smallest possible edit and updates all the autogenerated cards for you, while in Mochi you have to find all related cards by hand.

Automation

If you don’t mind having to do fixes by hand, then Mochi makes it easy enough to automate card generation externally by letting you import CSVs where each column corresponds to the name of a template field.

It is easy enough to write a Python script that has the structured data you want, and generate a deck as a CSV, like so:

elems = [
  Element(
    name="hydrogen",
    symbol="H",
    z=1,
  ),
  ...
]

for elem in elems:
  gen_card(
    front=f"What element has symbol {elem.symbol}?",
    back=elem.name,
  )
  gen_card(
    front=f"What's the symbol of the element {elem.name}?",
    back=elem.symbol
  )
  ...

Then you import a CSV that looks like this:

Front,Back
What element has symbol H?,hydrogen
What's the symbol of the element hydrogen?,H
...

At import time you can choose which template to import the rows as, and the CSV column names are matched to the template field names (here, “Front” and “Back” are the two fields of the built-in basic flashcard template).

Advice: whenever you’re importing an automatically-generated CSV, make a card template with custom fields, and have each column of the CSV correspond to a template field. Ideally you should import data and not text, and let the template handle how that data is displayed. This makes it easier to fix awkward wording and typos.

Gwern has a few scripts for generating cards (for Mnemosyne, not Mochi) for memorizing poetry and enumerations. Little tools like these are fun to write. I wrote my own Python script to generate a card deck CSV for memorizing numbered lists.

Shortcuts

Both Anki and Mochi have keyboard shortcuts, but Mochi’s are emphasized in the UI (the button text includes the shortcut), so you learn them faster and more effectively than with Anki.

Highlighting the keyboard shortcuts when viewing a card.

Highlighting the keyboard shortcuts when editing a card.

Language Learning

Mochi has a number of features specific to language learning, but I haven’t had cause to use them yet.

Plugins

“Software package management done right” is an open problem in computer science. So most plugin systems are brittle and annoying: you have to deal with updates, data sync issues etc. To minimize headaches I only use four Anki plugins:

The most valuable one of these is image occlusion, because it’s so difficult to do by hand. Mochi, thankfully, has this built in, so you don’t have to deal with plugins: it’s a first-class feature. Same for the retention and progress bar.

For poetry I use a Python script based on Gwern’s ⁠mnemo.hs to generate the cards from a list of lines.

Mochi doesn’t support plugins, and I’m pretty happy with that. Most apps need plugins like I need a callosotomy.

Common Features

Both Anki and Mochi support what you expect: inline and block LaTeX, images, sounds, Cloze deletions. They are essentially at feature parity.

Conclusion

Anki is free and open source. Anki’s note types feature is really powerful: it lets you create a large number of cards from a small amount of structured data, and handles updates and deletions for you. It does sync for free. But the interface is ugly and any usage above “absolute novice” involves using multiple Python plugins.

Mochi is freemium and the paid sync is a reasonable 5USD/month. It is slightly less powerful (in terms of automation from within), but it is more featureful: things that are plugins in Anki are first-class features in Mochi, so you don’t have to deal with plugin hell. It is easy enough to automate card generation using scripts.

Mochi’s main deficiency is a spartan stats page and the lack of note types (which is not a showstopper). It would also be nice to have the ability to export a deck (including image cloze cards) without review history so they can actually be shared. I’d also like the ability to back up my entire collection including metadata to a single file, so I can have a localhost backup if the remote cloud backup fails or is no longer available.

Where Mochi absolutely beats Anki is the user interface. Ultimately, what matters with any SR app is whether you can make the habit stick continually, rather than falling into the failure mode of using it for two weeks every six months. Which is why a good presentation and user interface outweighs a lot of other considerations in my evaluation.

If you’ve never used SR, or never managed to make it stick, give Mochi a try.