The SM-2 algorithm in Keeplet: intervals and ratings
Keeplet schedules reviews with a version of the SM-2 algorithm (SuperMemo 2): every time you rate a card with one of the four ratings, Keeplet updates the card's ease factor and calculates how many days to wait before showing it to you again. Great (website) or Perfectly (app) lengthens intervals the most, Somewhat (website) or Fairly well (app) lengthens them less, A little sends the card back to tomorrow, and Not at all restarts it.
The numbers Keeplet remembers for each card
For every card, Keeplet keeps three values:
| Value | Meaning | Starting value |
|---|---|---|
| Ease factor | How fast the interval can grow. The higher it is, the "easier" the card | 2.5 (minimum 1.3) |
| Interval | Days between the last review and the next one | 1 day |
| Successful reviews in a row | How many ratings other than Not at all you have given since the last time you got it wrong | 0 |
The four ratings and their effect
The app and the website show the same four ratings, but the labels of the last two differ: the website uses Not at all / A little / Somewhat / Great, the app uses Not at all / A little / Fairly well / Perfectly. Each rating corresponds to a "quality" from 0 to 5 in the original algorithm:
| Rating (website / app) | Quality | Ease factor | Next review |
|---|---|---|---|
| Not at all | 0 | drops by 0.80 | 1 day; the card is also put back at the end of the queue in the session (in the app) |
| A little | 2 | drops by 0.32 | 1 day |
| Somewhat / Fairly well | 3 | drops by 0.14 | 1st review: 3 days · 2nd: 6 days · then interval × factor |
| Great / Perfectly | 5 | rises by 0.10 | 1st review: 5 days · 2nd: 6 days · then interval × factor |
The ease factor never drops below 1.3. With Not at all the successful-reviews counter goes back to zero; with the other three ratings it goes up by one.
How the next review is calculated
- New ease factor: the change shown in the table is added to the current value (SM-2 formula:
EF' = EF + (0.1 − (5 − q) × (0.08 + (5 − q) × 0.02))). - New interval:
- if the rating is Not at all or A little (quality below 3): 1 day;
- if the counter is at 0 (first review, or the first after a Not at all): as many days as the quality (3 with Somewhat / Fairly well, 5 with Great / Perfectly);
- if the counter is at 1: 6 days;
- if it is 2 or more: previous interval × new ease factor, with decimals discarded. If you reviewed the card late, Keeplet applies the late penalty before these steps.
- Date of the next review: the moment you give the rating plus the interval in days.
Calendar example
This example is calculated by applying the rules above to a new card (factor 2.5) that you always give the same rating.
| Review | Always Somewhat / Fairly well | Always Great / Perfectly |
|---|---|---|
| 1st | after 3 days | after 5 days |
| 2nd | after 6 days | after 6 days |
| 3rd | after 12 days | after 16 days |
| 4th | after 23 days | after 46 days |
| Ease factor after the 4th | 1.94 | 2.90 |
In practice your ratings vary and the intervals adapt. If, after a run of successful reviews, you give Not at all, the card restarts: 1-day interval, counter at zero, and at the next successful review the 3 or 5 days come back.
What happens if I review late?
Lateness counts. This is an addition exclusive to Keeplet that the original SM-2 does not have: in standard SM-2, if you review late and remember, you advance as if you had been on time. Keeplet instead compares the time since the last review with the interval that was planned:
| When you review | What happens if you remember the answer |
|---|---|
| Within 1.5 times the planned interval | You are on time: you advance to the next level, as above |
| Over 1.5 and up to 2 times the interval | You stay at the same level: the counter of successful reviews does not go up and the interval does not grow |
| Over 2 times the interval | You go back one level: the counter drops by one |
In detail:
- When it applies. Only if you answer Somewhat / Fairly well or Great / Perfectly on a card you have already reviewed at least once. With Not at all and A little the interval is 1 day anyway and lateness changes nothing; a new card, or one that just restarted after a Not at all, has no penalty.
- Staying at the same level. In the first two levels the interval is the level's own (3 or 5 days, then 6); from the third level on it stays equal to the previous one.
- Going back one level. The counter never drops below the first level (3 or 5 days). From the fourth level on, the interval becomes that of the previous level, that is the current interval divided by the new ease factor, with a minimum of 6 days.
- The ease factor depends only on the rating: lateness does not change it.
- How it is measured. The time since the last review divided by the planned interval, at the moment you give the rating. A rating given offline counts at the moment you gave it, not when it reaches the server. The calculation is the same with and without an account.
Example: a card with a 10-day interval and 3 successful reviews, with factor 2.5, rated Great / Perfectly. Within 15 days of the last review: it comes back in 26 days. Between 15 and 20 days: it comes back in 10 days. After more than 20 days: it comes back in 6 days.
Where the calculation happens
- With an account, the Keeplet server calculates the due dates, starting from the result (successful or not, and difficulty) that the website or app sends it.
- In the Android and iPhone app, the same calculation is repeated on the phone: it is used to show under the ratings when the card will come back and to make review work without a connection, even without an account. The two versions use the same formulas.
- When you save your progress for the first time, the guest values are reset and the cards start over as new (factor 2.5, interval 1, no reviews): see Save your progress.
How Keeplet differs from the original SM-2
- There are four ratings (quality 0, 2, 3, 5) instead of the six levels of the original algorithm.
- At the first successful review the card comes back after 3 or 5 days, not after 1.
- The ease factor drops even with low ratings.
- Reviewing late has a cost: beyond 1.5 times the planned interval you do not advance, beyond 2 times you go back one level (the original SM-2 advances anyway).
Frequently asked questions
Why does a card rated "A little" come back tomorrow?
With A little the quality is 2, below the threshold of 3: the algorithm treats the card as one to see again soon. The review does not reset anything, though: A little raises the counter of successful reviews in a row by one (only Not at all resets it) and the ease factor drops by 0.32. Because the counter goes up, the next review is treated as the next one in the run: after a first A little, the following rating gives 6 days, and from the third review on the interval is calculated by multiplying the leftover 1-day interval by the factor, so it stays short until better ratings arrive.
What is the ease factor of a new card?
2.5. It is also the value an imported card, or a card saved from guest mode, starts from.
Can I choose a different algorithm?
No. Today Keeplet uses only SM-2. FSRS and other algorithms are not available.
Why do the previews under the ratings change from card to card?
Because they depend on the state of that card: after several successful reviews, the previous interval and the ease factor weigh much more than the starting value. See How to rate a card: the four ratings.
How precise are the days shown?
They are whole days, counted from the moment you give the rating: a card rated at 6:00 pm with a 3-day interval becomes available again in three days at the same time.