Comprehensive R toolkit for reading, analyzing, and visualizing Anki flashcard collection databases. 135 functions for collection analysis. For FSRS algorithm implementation, see r-fsrs.
# 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
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()
| Function | Description |
|---|---|
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.
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
# Fit your personal forgetting curve and compare to FSRS defaults
curve <- anki_fit_forgetting_curve()
anki_plot_forgetting_curve(curve)
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
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
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
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)
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
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
# 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")
# 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)
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

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

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
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
anki_compare_periods() # This month vs last month
anki_compare_decks() # Side-by-side deck stats
anki_benchmark() # Compare to FSRS averages
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")
anki_dashboard() # Launches Shiny app
| Category | Count | Key Functions |
|---|---|---|
| Core | 8 |
anki_cards, anki_notes, anki_decks, anki_revlog
|
| Analytics | 12 |
anki_report, anki_stats_deck, anki_stats_daily
|
| Efficiency | 3 |
anki_learning_efficiency, anki_retention_by_type, anki_roi_analysis
|
| Forgetting | 2 |
anki_fit_forgetting_curve, anki_plot_forgetting_curve
|
| Optimal Times | 3 |
anki_best_review_times, anki_session_analysis, anki_simulate_session
|
| Sibling/Interference | 3 |
anki_sibling_analysis, anki_interference_analysis, anki_weak_areas
|
| Recommendations | 4 |
anki_card_recommendations, anki_health_check, anki_summary, anki_today
|
| Academic/Exam | 4 |
anki_exam_readiness, anki_coverage_analysis, anki_study_priorities, anki_study_plan
|
| Plotting | 8 |
anki_plot_heatmap, anki_plot_retention, anki_plot_forecast
|
| Time Series | 14 |
anki_ts_intervals, anki_ts_decompose, anki_forecast_enhanced
|
| Forecasting | 3 |
anki_forecast_monte_carlo, anki_plot_monte_carlo, anki_compare_forecasts
|
| Burnout/Quality | 2 |
anki_burnout_detection, anki_review_quality
|
| Cohort/Velocity | 3 |
anki_cohort_analysis, anki_learning_velocity, anki_backlog_calculator
|
| Gamification | 1 |
anki_gamification (XP, levels, achievements) |
| Streak Analytics | 1 | anki_streak_analytics |
| Content Analysis | 1 | anki_card_content |
| A/B Comparison | 2 |
anki_ab_comparison, anki_compare_groups
|
| Compare | 5 |
anki_compare_decks, anki_compare_periods, anki_benchmark
|
| Search | 9 |
anki_search, anki_search_enhanced, anki_find_similar
|
| Quality | 6 |
anki_quality_report, anki_similar_cards, anki_tag_analysis
|
| FSRS | 11 |
fsrs_get_parameters, fsrs_compare_parameters, fsrs_memory_states
|
| Media | 5 |
anki_media_list, anki_media_unused, anki_media_missing
|
| Export | 12 |
anki_to_csv, anki_to_obsidian_sr, anki_to_mochi, anki_to_json
|
| Utilities | 4 |
anki_schema_version, anki_quick_summary, anki_today
|
| Dashboard | 1 | anki_dashboard |
| Addon Import | 2 |
import_addon_export, analyze_addon_import
|
| Total | 137 |
MIT