The HanziHero spaced repetition system has ten total stages. You can think of them more like buckets which approximate how well you know a card. These stages can be broken down into six different groups. The groups, in order, are:
Novice -> Apprentice -> Journeyman -> Expert -> Master
Each of those groups have stages of their own, besides the last one:
Depending on whether you answer an item correctly or incorrectly in your reviews, we calculate the amount of time until you see the card again, or in other words, the next interval.
The pseudocode for computing the “next interval” is as follows:
if total_incorrect > 0:
next_interval = interval * 0.5
else if interval == 1:
next_interval = 4 + days_overdue * 0.5
else:
next_interval = (interval + days_overdue * 0.5) * 1.8
final_next_interval = max(1, ceil(next_interval + fuzz))
In plain English:
Additionally, we add in some random “fuzz” number to help spread out the days that future reviews are scheduled on. Otherwise one may end up having 400+ reviews on one day, and zero on the next!
The fuzz factor scales with the interval, from ±1 to ±4.
Novice: You need to review this item nearly every day.
Apprentice: You need to review this item at least once a week.
Journeyman: You need to review this item around once a month.
Expert: You need to review this item bimonthly or less frequently.
Master: You have memorized this item.
Here are the timing thresholds for each stage. So, for example, any item that has an interval greater than 1 day but less than 4 days would be considered Novice II.