Learn R Programming

ankiR

Comprehensive R toolkit for reading, analyzing, and visualizing Anki flashcard collection databases. 135 functions for collection analysis. For FSRS algorithm implementation, see r-fsrs.

Installation

# From r-universe (recommended)
install.packages("ankiR", repos = "https://cran.r-universe.dev")

# From GitHub
remotes::install_github("chrislongros/ankiR")

# Arch Linux (AUR)
# yay -S r-ankir

Quick Start

library(ankiR)

# One-liner overview
anki_quick_summary()
#> Anki: 5847 cards (4521 mature, 892 young, 434 new) | Due: 127 | Streak: 47 days | Retention: 91.2%

# Detailed report
anki_report()

# Collection health check (0-100 score)
anki_health_check()

Core Functions (Start Here)

FunctionDescription
anki_quick_summary()One-line collection overview
anki_report()Comprehensive statistics
anki_health_check()Collection health score (0-100)
anki_cards()Read all cards
anki_notes()Read all notes
anki_revlog()Read review history
anki_retention_rate()Calculate retention
anki_streak()Current study streak
anki_plot_heatmap()Review calendar heatmap
anki_plot_retention()Retention over time

Advanced users: See full function list below for forecasting, burnout detection, A/B testing, gamification, and more.

What's New in 0.6.0

Learning Efficiency Analysis

anki_learning_efficiency()    # ROI: retention per time spent
anki_retention_by_type()      # Retention by card type (cloze, basic, media)
anki_roi_analysis()           # Knowledge half-life extension per study minute

Forgetting Curve Fitting

# Fit your personal forgetting curve and compare to FSRS defaults
curve <- anki_fit_forgetting_curve()
anki_plot_forgetting_curve(curve)

Optimal Review Times

anki_best_review_times()      # Find when you learn best
anki_session_analysis()       # Analyze study session patterns
anki_simulate_session(30)     # Simulate a 30-minute session

Sibling & Interference Analysis

anki_sibling_analysis()       # How do sibling cards affect each other?
anki_interference_analysis()  # Find cards you confuse with each other
anki_weak_areas()             # Tags/decks with lowest retention

Actionable Recommendations

anki_card_recommendations()   # Leeches to rewrite, cards to unsuspend
anki_health_check()           # Comprehensive health score (0-100)
anki_summary()                # One-liner stats
anki_today()                  # Today's activity breakdown

Academic/Exam Preparation

anki_exam_readiness("2024-06-15")  # Will you be ready for your exam?
anki_coverage_analysis()           # % complete by topic
anki_study_priorities()            # What to study first
anki_study_plan("2024-06-15", hours_per_day = 2)

Enhanced FSRS Analysis

fsrs_compare_parameters()     # Compare your FSRS params to defaults
fsrs_memory_states()          # Current memory state for all cards
fsrs_decay_distribution()     # FSRS-6 per-card decay analysis

New Export Formats

anki_to_obsidian_sr()         # Obsidian Spaced Repetition plugin
anki_to_mochi()               # Mochi Cards JSON
anki_to_json()                # Full collection as JSON
anki_progress_report("html")  # Shareable progress report

Enhanced Search

# Advanced search operators
anki_search_enhanced("added:7 rated:3:1")      # Added in 7 days, rated Again in 3 days
anki_search_enhanced("prop:lapses>5 is:leech") # High-lapse leeches
anki_search_enhanced("re:^The\\s+")            # Regex search
anki_search_enhanced("deck:German OR deck:Spanish")

# Find similar cards with TF-IDF
anki_find_similar(1234567890, method = "tfidf")

Forecasting

# Monte Carlo forecasting (recommended for irregular study habits)
mc <- anki_forecast_monte_carlo(days_ahead = 30, n_sim = 1000)
mc$summary                           # Daily forecasts with CIs
mc$prob_above(day = 7, threshold = 100)  # P(>100 reviews on day 7)
anki_plot_monte_carlo(mc)            # Visualize with confidence bands

# Statistical forecasting (ARIMA, Holt-Winters, Seasonal)
anki_forecast_enhanced(method = "holt", days_ahead = 30)

# Compare methods
anki_compare_forecasts(days_ahead = 14)

# Scenario-based projections
anki_workload_projection(days = 30)

Visualizations

anki_plot_heatmap()           # Calendar heatmap
anki_plot_retention()         # Retention over time
anki_plot_forecast()          # Upcoming workload
anki_plot_difficulty()        # FSRS difficulty distribution
anki_plot_intervals()         # Interval distribution
anki_plot_hours()             # Reviews by hour
anki_plot_weekdays()          # Reviews by weekday
anki_plot_forgetting_curve()  # Personal forgetting curve

Time Series Analysis

anki_ts_retention(by = "week")
anki_ts_intervals(by = "week")
anki_ts_decompose()           # Trend + seasonal + residual
anki_ts_anomalies()           # Unusual study days
anki_ts_forecast()            # Forecast future reviews

Core Features

Search (Anki-like syntax)

anki_search("deck:Medical tag:cardiology")
anki_search("is:due -is:suspended prop:ivl>30")

anki_leeches()       # Problem cards
anki_mature()        # Cards with ivl >= 21
anki_due()           # Due for review

FSRS Data Reading

ankiR reads FSRS data from your Anki collection but does not implement the FSRS algorithm. For algorithm implementation, see fsrs-r-pure.

anki_cards_fsrs()                    # Get cards with FSRS parameters
fsrs_current_retrievability()        # Current memory state from DB
fsrs_forgetting_index()              # % below target retention
fsrs_get_parameters()                # Read FSRS parameters from collection
fsrs_compare_parameters()            # Compare your params to defaults
fsrs_memory_states()                 # Get memory states for all cards
fsrs_export_reviews()                # Export reviews for external optimizer
fsrs_prepare_for_optimizer()         # Prepare data for fsrs-r-pure

Comparative Analysis

anki_compare_periods()    # This month vs last month
anki_compare_decks()      # Side-by-side deck stats
anki_benchmark()          # Compare to FSRS averages

Export

anki_to_csv("Medical", "medical.csv")
anki_to_org("Medical", "medical.org")
anki_to_markdown("Medical", "medical.md", format = "obsidian")
anki_to_obsidian_sr("Medical", "medical_sr.md")
anki_to_mochi("Medical", "medical.json")
anki_to_json(output = "collection.json")
anki_progress_report(format = "html")

Interactive Dashboard

anki_dashboard()  # Launches Shiny app

Function Reference

CategoryCountKey Functions
Core8anki_cards, anki_notes, anki_decks, anki_revlog
Analytics12anki_report, anki_stats_deck, anki_stats_daily
Efficiency3anki_learning_efficiency, anki_retention_by_type, anki_roi_analysis
Forgetting2anki_fit_forgetting_curve, anki_plot_forgetting_curve
Optimal Times3anki_best_review_times, anki_session_analysis, anki_simulate_session
Sibling/Interference3anki_sibling_analysis, anki_interference_analysis, anki_weak_areas
Recommendations4anki_card_recommendations, anki_health_check, anki_summary, anki_today
Academic/Exam4anki_exam_readiness, anki_coverage_analysis, anki_study_priorities, anki_study_plan
Plotting8anki_plot_heatmap, anki_plot_retention, anki_plot_forecast
Time Series14anki_ts_intervals, anki_ts_decompose, anki_forecast_enhanced
Forecasting3anki_forecast_monte_carlo, anki_plot_monte_carlo, anki_compare_forecasts
Burnout/Quality2anki_burnout_detection, anki_review_quality
Cohort/Velocity3anki_cohort_analysis, anki_learning_velocity, anki_backlog_calculator
Gamification1anki_gamification (XP, levels, achievements)
Streak Analytics1anki_streak_analytics
Content Analysis1anki_card_content
A/B Comparison2anki_ab_comparison, anki_compare_groups
Compare5anki_compare_decks, anki_compare_periods, anki_benchmark
Search9anki_search, anki_search_enhanced, anki_find_similar
Quality6anki_quality_report, anki_similar_cards, anki_tag_analysis
FSRS11fsrs_get_parameters, fsrs_compare_parameters, fsrs_memory_states
Media5anki_media_list, anki_media_unused, anki_media_missing
Export12anki_to_csv, anki_to_obsidian_sr, anki_to_mochi, anki_to_json
Utilities4anki_schema_version, anki_quick_summary, anki_today
Dashboard1anki_dashboard
Addon Import2import_addon_export, analyze_addon_import
Total137

Requirements

  • R >= 4.1
  • Anki 2.1+ (collection.anki2 format)
  • Optional: ggplot2 (plots), shiny (dashboard)

Related Projects

  • r-fsrs - FSRS algorithm implementation (Rust bindings)
  • FSRS4Anki - FSRS for Anki

License

MIT

Copy Link

Version

Install

install.packages('ankiR')

Version

0.6.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Christos Longros

Last Published

February 18th, 2026

Functions in ankiR (0.6.0)

anki_cards_full

Get cards with full joined data
anki_compare_deck_difficulty

Compare performance by deck difficulty
anki_compare_by_age

Compare retention by card age
anki_compare_decks

Compare statistics between decks
anki_cards_fsrs

Read cards with FSRS-6 parameters
anki_card_recommendations

Generate card recommendations
anki_cards

Read cards from Anki collection
anki_cohort_analysis

Cohort Analysis (Vintage Analysis)
anki_compare_forecasts

Compare Forecast Methods
anki_collection

Open an Anki collection
anki_due

Get cards due for review
anki_exam_readiness

Track exam readiness
anki_consistency

Analyze study consistency
anki_compare_groups

Compare Two Specific Groups
anki_coverage_analysis

Analyze topic coverage
anki_dashboard

Launch interactive Anki dashboard
anki_empty_cards

Find cards with empty fields
anki_decks

Read decks from Anki collection
anki_compare_periods

Compare two time periods
anki_db_path

Get path to Anki database
anki_export_importable

Export to Anki-importable format
anki_forecast_enhanced

Enhanced Time Series Forecasting
anki_export_revlog

Export review history
anki_forecast

Get forecast of upcoming reviews
anki_find_similar

Search cards by content similarity
anki_field_contents

Parse note fields into columns
anki_forecast_monte_carlo

Monte Carlo Forecasting
anki_gamification

Gamification Stats
anki_health_check

Collection health check
anki_fit_forgetting_curve

Fit forgetting curve from review data
anki_media_missing

Find missing media references
anki_learning_curve

Track card learning progression over time
anki_mature

Get mature cards (interval >= 21 days)
anki_learning_efficiency

Analyze learning efficiency
anki_heatmap_data

Get review data formatted for calendar heatmaps
anki_interference_analysis

Detect card interference
anki_learning_velocity

Learning Velocity Analysis
anki_leeches

Find leech cards (high lapse count)
anki_media_list

List media files in collection
anki_long_cards

Find cards with very long content
anki_monthly_summary

Get monthly summary statistics
anki_plot_forgetting_curve

Plot forgetting curve comparison
anki_media_stats

Get media statistics
anki_media_path

Get media folder path
anki_notes

Read notes from Anki collection
anki_plot_monte_carlo

Plot Monte Carlo Forecast
anki_plot_intervals

Plot interval distribution
anki_plot_hours

Plot reviews by hour of day
anki_plot_forecast

Plot review forecast
anki_plot_retention

Plot retention over time
anki_models

Read note types (models) from Anki collection
anki_plot_difficulty

Plot difficulty distribution
anki_plot_weekdays

Plot reviews by day of week
anki_plot_heatmap

Plot review heatmap calendar
anki_media_unused

Find unused media files
anki_plot_stability

Plot stability distribution
anki_profiles

List Anki profiles
anki_retention_rate

Calculate actual retention rate from review history
anki_retention_by_type

Calculate retention by content type
anki_review_quality

Review Quality Score
anki_response_time

Analyze response time by card properties
anki_response_time_outliers

Analyze response time outliers
anki_quick_summary

Quick Collection Summary
anki_quality_report

Analyze card quality metrics
anki_new

Get new cards (never reviewed)
anki_revlog

Read review log from Anki collection
anki_progress_report

Generate progress report
anki_retention_stability

Retention Stability Analysis
anki_similar_cards

Find similar/duplicate cards
anki_search_enhanced

Enhanced Search for Anki Cards
anki_session_stats

Analyze study sessions
anki_sibling_analysis

Analyze sibling card effects
anki_schema_version

Anki Schema Version Detection
anki_report

Generate collection summary report
anki_search

Search cards like Anki's browser
anki_roi_analysis

Calculate spaced repetition ROI
anki_simulate_session

Simulate a study session
anki_tag_analysis

Analyze tag usage
anki_tags

Extract unique tags with counts
anki_session_analysis

Analyze study sessions
anki_stats_daily

Calculate daily review statistics
anki_time_by_weekday

Analyze reviews by day of week
anki_time_by_hour

Analyze reviews by hour of day
anki_streak

Calculate current review streak
anki_streak_analytics

Advanced Streak Analytics
anki_study_plan

Create study plan
anki_summary

Quick collection summary
anki_stats_deck

Calculate per-deck statistics
anki_study_priorities

Generate study priority list
anki_suspended

Get suspended cards
anki_timestamp_to_date

Convert Anki timestamp to date
anki_to_mochi

Export to Mochi format
anki_to_org

Export deck to Org-mode format
anki_timestamp_to_datetime

Convert Anki timestamp to datetime
anki_ts_plot

Plot time series with trend line
anki_ts_retention

Analyze retention over time
anki_to_supermemo

Export deck to SuperMemo Q&A format
anki_to_markdown

Export deck to Markdown format
anki_ts_forecast

Forecast future reviews using simple methods
anki_ts_intervals

Analyze interval progression over time
anki_to_obsidian_sr

Export to Obsidian Spaced Repetition plugin format
anki_today

Today's activity summary
anki_to_html

Export collection report to HTML
anki_weak_areas

Find weak areas by tag or deck
fsrs_current_retrievability

Calculate current retrievability for all cards
anki_ts_maturation

Analyze card maturation over time
anki_ts_decompose

Decompose time series into trend, seasonal, and residual
fsrs_difficulty_distribution

Analyze FSRS difficulty distribution
anki_ts_learning

Analyze learning rate (new cards learned)
anki_ts_autocorrelation

Calculate autocorrelation of review patterns
anki_to_json

Export collection as JSON
anki_ts_anomalies

Detect anomalies in review patterns
anki_to_csv

Export deck to CSV
fsrs_decay_distribution

Analyze FSRS decay parameter distribution
fsrs_prepare_for_optimizer

Prepare review data for r-fsrs optimizer
fsrs_memory_states

Calculate memory state for cards
anki_ts_stability

Analyze FSRS stability over time
fsrs_export_reviews

Export reviews for external FSRS analysis
fsrs_get_parameters

Get FSRS parameters from Anki deck config
date_to_anki_timestamp

Convert date to Anki timestamp
import_addon_export

Import ankiR Stats Addon Export
fsrs_compare_parameters

Compare FSRS parameters
anki_workload_projection

Workload Projection (Rough Estimate)
print.anki_mc_forecast

Print Monte Carlo Forecast
print.anki_gamification

Print Gamification Stats
plot.anki_decomposition

Plot time series decomposition
anki_ts_workload

Analyze workload trends
fsrs_interval

Calculate next interval for desired retention
fsrs_forgetting_index

Calculate forgetting index
fsrs_from_csv

Import review data from CSV for analysis
fsrs_stability_distribution

Analyze FSRS stability distribution
fsrs_retrievability

Calculate retrievability for FSRS cards
anki_card_complexity

Analyze card complexity
anki_best_review_times

Find optimal review times
anki_buried

Get buried cards
anki_benchmark

Benchmark against FSRS averages
anki_base_path

Get Anki base path
anki_ab_comparison

A/B Comparison
anki_card_content

Card Content Analysis
anki_backlog_calculator

Backlog Calculator
analyze_addon_import

Analyze Imported Addon Data
anki_burnout_detection

Detect Burnout Warning Signs