Guide

Quick Start › What You Can Do

What You Can Do

  • 185+ curated decks — official decks across 12 languages (A1–C2) with example sentences, grammar notes, and grammar cards. Learn more
  • AI extraction — turn URLs, PDFs, and YouTube videos into vocabulary decks
  • 3 study modes — standard flashcards, reverse (translate to target language), and recall (type the answer from memory)
  • Spaced repetition — FSRS scheduling adapts to how you learn each word
  • 7 quiz games — match, write, multiple choice, race, sentence builder, fill-in-the-blank, and listening
  • Multiple decks — organize by language, topic, or level
  • Works everywhere — install as an app, study on any device
  • Import & export — bring in your existing vocabulary or back up your data

Getting Started

Sign up and you're ready to go in under a minute.

  1. Create a deck — pick a name and choose your languages (e.g., Spanish to English).
  2. Add vocabulary — the fastest way is AI extraction: paste a URL, upload a document, or drop in text and AI creates your flashcards. You can also add words manually or browse public decks.
  3. Study — open the Study page. Spaced repetition shows each word at the right moment for your memory.
  4. Track progress — check your retention rate, daily reviews, and study streaks on the Progress page.

Managing Decks

The Decks page is your home screen. It shows all your decks in a grid layout with word counts, due badges, and action buttons.

ActionDescription
New DeckCreate a deck with a name, description, and source/target language pair (e.g., Spanish → Polish)
Select & StudySets the deck as active and redirects to the Study page. The active deck name appears in the nav bar
ImportOpens the import modal to paste data or upload a file directly into that deck
ShareShare the deck with another user by email. They get read-only access
EditChange the deck name, description, or language settings
DuplicateCreates a copy of the deck with all words. Review progress is reset (all words start as New)
DeletePermanently removes the deck and all its words. This cannot be undone

The nav bar shows a deck selector dropdown — you can switch between decks from any page without going back to the Decks page. All pages (Study, Vocabulary, Progress) are scoped to the active deck.

Due badge: Each deck card shows how many cards are due for review. An orange badge appears when cards are due, helping you prioritize which decks to study.

Official Curated Decks

Words on Repeat provides 185+ official curated decks across 12 languages, covering all CEFR levels from A1 (beginner) to C2 (mastery). Every word in these decks is quality-checked and includes rich study material.

What's included in every curated deck

  • Example sentence — a natural sentence using the word in context
  • Example translation — a translation of the example sentence in your native language
  • Grammar notes — per-word grammar explanations (verb conjugation, gender agreement, usage rules)
  • Grammar cards — dedicated flashcards that teach grammar concepts alongside vocabulary. Shown during study via the Grammar button on each card
  • CEFR tags — every word is tagged with its CEFR level (A1, A2, B1, B2, C1, C2) and topic (greetings, travel, business, etc.)

Languages available

LanguageDecksLevels
Spanish35A1–C2 + thematic
French31A1–C2 + thematic
German31A1–C2 + thematic
Italian27A1–C2 + thematic
English16A1–C2
Polish12A1–B2
Portuguese9A1–B2
Dutch9A1–B2
Japanese5A1–A2
Korean5A1–A2
Chinese5A1–A2
Swiss German3A1–A2

How to use curated decks

  1. Go to Public Decks from the nav menu
  2. Filter by language, level, or search by topic
  3. Click Copy to my decks on any deck — all words, examples, grammar notes, and grammar cards are copied to your account
  4. Start studying immediately — all cards begin as New with full FSRS scheduling

All curated decks are free for all users, on all plans. No limits on how many you can copy.

Adding Words

Navigate to the Vocabulary page to manage your vocabulary. You can add words one at a time or import a file.

Each word can include:

  • Word and Translation (required)
  • Example sentence and its translation (optional but recommended)
  • Tags (comma-separated) for organizing and filtering

Duplicate detection: If you add a word that already exists in the deck (case-insensitive match), you'll see a warning with the option to "Add Anyway" or cancel.

Search and filter: Use the search box to find words by text, the tag dropdown to filter by tag, and the state dropdown to show only New, Learning, Review, or Relearning cards.

Importing: You can import vocabulary from a file or paste data directly. Click the Import button on the Vocabulary page or on any deck card. See the full import guide for details.

AI Content Extraction

Extract vocabulary from any content source using AI. Navigate to the AI Extract page from the nav menu.

  1. Choose a source — paste text, enter a URL, or upload a file (TXT, PDF, DOCX)
  2. AI extracts vocabulary — the AI reads your content and returns words with translations and example sentences
  3. Preview and edit — review the extracted cards in a table, edit or remove any before saving
  4. Save to your deck — confirm and the cards are added to your active deck, ready to study

Free users get 5 extractions per month. See plans for higher limits.

Reviewing Cards

The Study page is the core of the app. Cards appear one at a time: you see the word, reveal the answer, then grade yourself.

  1. A card appears showing the word only.
  2. Press Space or click the card to reveal the answer (translation + example).
  3. Grade yourself using one of four buttons (or keys 1-4).
  4. The app calculates the best time for your next review based on your grade.
  5. The next card loads automatically. When all due cards are done, you'll see "All caught up!"

Grade meanings

GradeKeyMeaningEffect on scheduling
Again1Forgot the wordReset to short interval, increases lapse count
Hard2Recalled with difficultyShorter next interval than normal
Good3Recalled correctlyNormal interval increase
Easy4Recalled effortlesslyLarger interval increase

Tracking Progress

The Stats page shows comprehensive learning analytics for the active deck.

Key Metrics

MetricWhat it tells you
Total WordsTotal vocabulary in the active deck
Due NowCards overdue for review — this is the number you see on each deck's badge
Reviewed TodayHow many cards you've reviewed in today's sessions
Retention (30d)Percentage of reviews where you answered correctly (not "Again") over the last 30 days. This is your memory accuracy
New / Learning / ReviewCard counts by state: New (never reviewed), Learning (in initial reviews), Review (graduated to long intervals)

Advanced & Developer Reference

Study Options

Session size limit

When you have many cards due, you can limit your session to a fixed number of cards. This is shown prominently at the top of the study page.

  • Enter a number (e.g. 20 or 50) in the Session size input to cap how many unique cards you review.
  • Cards you grade as "Again" will loop back within the session — they don't count against your limit twice.
  • When you finish the session, you'll see a "Session complete!" screen with a Continue reviewing button to start another batch.
  • If you rated any cards Again or Hard, a Review weak cards button appears letting you immediately re-review only those cards before moving on.
  • Leave the field empty (or clear filters) to review all due cards with no limit.
  • Your session size is remembered across page reloads (stored in session storage).

Tip: Combine session size with tag or state filters. For example, filter by a tag with 100+ words and set session size to 20 to review in manageable chunks.

Review filters

Below the session size, you can filter by tags, state (New/Learning/Review), or mode (Due only vs. all cards). Filters and session size work together — for example, you can review only "New" cards from a specific tag, limited to 15 per session.

Reverse mode

Check the Reverse toggle in the filter bar to flip the card direction: the translation is shown on the front and you recall the foreign word. This is useful for practicing active recall (L1 → L2). Reverse mode works with all other filters and persists across page reloads via the URL.

Study Time Analytics

The Progress page tracks how much time you spend studying:

  • Today's study time and number of sessions
  • All-time total study time across all sessions
  • Total sessions — each visit to the Study page that includes at least one card review counts as a session
  • Average session length and average cards per session
  • Total reviews — cumulative count of all card reviews ever

Sessions are tracked automatically. The Study page starts a timer when you begin, and saves the session when you finish or leave the page.

Charts

  • Daily Reviews (30 days) — a bar chart showing how many reviews you did each day. Helps you see study consistency
  • Due Forecast (7 days) — a strip showing how many cards will be due each upcoming day. Useful for planning when to study

Interpreting Your Retention Rate

  • 90%+ — excellent. FSRS is scheduling optimally and your memory is strong
  • 80-90% — good. Consider reviewing more frequently or reducing new cards per day
  • Below 80% — you may be adding too many new cards or not reviewing often enough. Focus on clearing your due queue before adding new words

Importing Words

Words on Repeat provides an Import button on both the Vocabulary page and each deck card on the Decks page. Click it to open the import modal.

The import modal has two tabs:

  • Upload File — select a .json file from your computer
  • Paste JSON — paste JSON directly (great for AI-generated output)

Word fields (strict validation)

The import modal performs strict field validation. Only the following field names are accepted — any unknown fields will be rejected with an error showing the allowed fields:

FieldRequiredDescription
wordYesThe vocabulary word (e.g., "hola")
translationYesThe translation (e.g., "czesc")
example_sentenceNoAn example sentence using the word
example_translationNoTranslation of the example sentence
tagsNoComma-separated tags (e.g., "travel,A2")

Example JSON:

[
  {
    "word": "Disparar",
    "translation": "To skyrocket",
    "example_sentence": "Lidl dispara su beneficio en España.",
    "example_translation": "Lidl's profit is skyrocketing in Spain.",
    "tags": "business,B2"
  }
]

Common mistakes: Using definition instead of translation, context instead of example_sentence, or camelCase names like exampleSentence. The validation will catch these and show you the correct field names.

Both tabs accept two JSON formats:

  • Bare array: [{ "word": "...", "translation": "..." }]
  • Wrapped: { "words": [{ "word": "...", "translation": "..." }] }

Tags on import: Enter comma-separated tags in the "Tags to apply" field. These tags are applied to any imported words that don't already have tags set in the JSON. Words that already have tags in the JSON keep their original tags.

Duplicate handling: After importing, you'll see:

  1. How many words were successfully created
  2. A list of any duplicates that were skipped (case-insensitive match on the word text)
  3. An "Import anyway" button to force-add the duplicates as separate entries

Typical use cases:

  • Paste AI-generated vocabulary from Claude or ChatGPT
  • Upload a previously exported JSON backup
  • Transfer words between decks (export from one, import to another)
  • Bulk-add vocabulary from a textbook or word list

Daily Study Goals

You can set a daily study goal for each deck to stay consistent with your reviews.

  • Where to set goals: Go to the Settings page, or click the pencil icon on the Study setup screen to edit your goal inline.
  • Per-deck: Each deck has its own independent goal. Switching decks shows the goal for that deck.
  • What it tracks: Total cards reviewed (all grades count). Re-reviews of cards graded "Again" within the same session don't double-count.
  • Where progress shows: Nav bar indicator, Study setup page, session summary, and the Progress page banner.
  • Soft goal: Goals never block studying — they're purely motivational. You can always review more or fewer cards than your goal.
  • Disable: Set the goal to 0 to turn it off for a deck.

Push Notifications

Words on Repeat can send you a daily push notification when you have cards due for review.

  • What's sent: A single daily reminder like "You have X cards waiting" — only when you have due cards.
  • When: Once per day (server-side, default 9 AM UTC).
  • How to enable: Go to Settings → Notifications → Enable, or click "Enable" on the dashboard prompt.
  • How to disable: Go to Settings → Notifications → Disable, or use your browser's notification settings.
  • Requirements: HTTPS, a browser with Push API support, and an active service worker.
  • Max frequency: At most once per 20 hours, and only if you have due cards.
  • No marketing: We only send study reminders — never promotional or marketing messages.

Install as App (PWA)

Words on Repeat is a Progressive Web App (PWA) that can be installed on your phone or desktop for a native-like experience.

  • Install prompt: An install banner appears automatically when you visit the app in a compatible browser.
  • Manual install: Use your browser menu → "Add to Home Screen" or "Install App".
  • Offline: Static pages (CSS, JS, icons) are cached for fast loading. Study and vocabulary features require an internet connection for data sync.
  • Benefit: Runs in its own window, no browser chrome, quick access from your home screen or taskbar.

Appearance (Light / Dark Mode)

You can toggle between light and dark themes to suit your preference.

  • Toggle: Click the sun/moon icon in the nav bar, or go to Settings → Appearance.
  • Three options: Light, Dark, or System (follows your OS preference).
  • Default: Dark mode.
  • Persistence: Your preference is saved in localStorage and restored on every visit.
  • Cross-tab sync: Changing the theme in one tab syncs across all open tabs.

Understanding FSRS Details

Click the "Details" button on any word in the Vocabulary page to see its FSRS memory metrics. Here's what each metric means:

MetricDescription
StateThe card's current phase: New (never reviewed), Learning (first reviews), Review (graduated, on long intervals), or Relearning (forgotten, being re-learned).
StabilityHow long your memory lasts, measured in days. At exactly stability days after a review, you have a 90% chance of remembering the word. Higher stability = stronger memory.
DifficultyHow hard this card is for you personally, on a 0-10 scale. Higher values mean the card is harder and gets shorter intervals. Unlike SM-2, difficulty uses mean reversion — it naturally decreases after consecutive correct answers.
RetrievabilityThe probability that you can recall this word right now, shown as a percentage. It starts at ~100% right after a review and decays over time following the forgetting curve. FSRS schedules reviews when this drops to ~90%.
ReviewsTotal number of times you've reviewed this card.
LapsesNumber of times you forgot the card (graded "Again" after it had graduated to Review state). More lapses = the card is a "leech" that needs extra attention.
Last reviewedWhen you last reviewed this card.
Next dueWhen FSRS has scheduled the next review.
Scheduled intervalThe gap in days between the last review and the next due date.

The FSRS Algorithm

Why FSRS

Words on Repeat uses FSRS (Free Spaced Repetition Scheduler) — the most accurate open-source spaced repetition algorithm available today. Created by Jarrett Ye and backed by peer-reviewed research published at ACM KDD 2022 and IEEE TKDE 2023, FSRS represents a generational leap over the 37-year-old SM-2 algorithm still used as Anki's default.

The core promise: FSRS achieves 20-30% fewer reviews than SM-2 at the same retention rate, or higher retention with the same number of reviews. This is validated across 727 million reviews from 10,000 users in the largest spaced repetition benchmark ever conducted.

How FSRS Works

FSRS models human memory using three core variables:

VariableSymbolDescription
DifficultyDHow hard is this card to remember? Range: 1-10. Updated after each review.
StabilitySHow well is the memory stored? Measured in days — the time until retrievability drops to 90%.
RetrievabilityRWhat's the probability of recall right now? Decreases over time from 100% toward 0%.

These three variables (the DSR model) work together to determine when to schedule each card. After each review, FSRS recalculates stability based on your grade:

Before review: Stability = 10 days New Stability +-------+ ============= Rating 1: | Again | ------> 2 days (forgot — reset lower) Rating 2: | Hard | ------> 18 days (struggled) Rating 3: | Good | ------> 25 days (correct — normal growth) Rating 4: | Easy | ------> 45 days (effortless — big jump)

The forgetting curve: FSRS models forgetting as a power function — more accurate than the exponential decay used by older algorithms. Your retrievability decreases over time after each review:

Retrievability over time (Stability = 10 days) 100% |* | ** 90% |---**------------ <- Review scheduled here (R = 90%) | *** 80% | *** | **** 70% | ***** | ****** 60% | ******** | ************** 50% | **** +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--> 0 5 10 15 20 25 30 35 40 days

Key insight: The harder the card is for you specifically, the shorter the interval. The easier, the longer. This is personalized per card based on your review history.

FSRS vs SM-2 (Anki)

SM-2 was created in 1987. It's simple but has fundamental limitations by modern standards.

FeatureSM-2 (Anki default)FSRS (Words on Repeat)
Created19872022
Memory modelSingle "ease factor"3-variable DSR model
Forgetting curveNot modeled at allExplicitly modeled (power function)
PersonalizationNone — same formula for everyone21 parameters optimized per user
Trainable parameters021
Desired retentionFixed (~90%, not configurable)Configurable (70%-97%)
After forgettingReset to 1 day, ease drops 20%Calculated post-lapse stability
"Ease hell"Yes — cards get permanently stuckNo — mean reversion prevents it
Interval calculationFixed multiplier: interval * easeDerived from predicted retrievability
Review efficiencyBaseline20-30% fewer reviews at same retention

The "Ease Hell" problem in SM-2: Once a card's ease factor drops to the minimum (130%), it never recovers with normal use. The card appears too frequently, wasting your time forever. FSRS solves this with mean reversion — after consecutive correct answers, difficulty naturally decreases back toward baseline.

Benchmark Results

From the open-spaced-repetition benchmark — the largest SRS evaluation ever conducted (727 million reviews, 10,000 users):

Algorithm Accuracy Ranking (Log Loss — lower is better) ======================================================== RWKV-P (neural net) |############ | 0.277 (requires thousands of parameters) LSTM (neural net) |############## | 0.333 FSRS-7 (21 params) |############## | 0.341 <-- Best practical algorithm FSRS-6 |############### | 0.346 FSRS-5 |################ | 0.356 GRU (neural net) |################## | 0.375 Duolingo HLR |########################| 0.469 Ebisu v2 |#########################| 0.499 0.25 0.35 0.45 0.50 FSRS-6 outperforms SM-2 on 99.6% of all tested user collections.

What this means in practice:

  • FSRS predicts with high accuracy when you'll forget each card
  • It schedules reviews at the mathematically optimal moment
  • You review only when needed — no wasted sessions on cards you already know
  • Difficult cards get more attention; easy cards get longer breaks

Import & Export

Go to Settings to import and export words for the active deck.

Export

Downloads all words from the active deck as a JSON file, including FSRS scheduling state. You can optionally filter by tag using the dropdown before clicking Export.

Import

Select a JSON file to import words. The import flow includes duplicate detection:

  1. Words that already exist in the deck (case-insensitive match) are skipped by default and listed.
  2. If duplicates are found, you'll see an "Import duplicates anyway" button to add them as separate entries.
  3. Words without FSRS data are imported as new cards. Words with FSRS data (from a previous export) retain their scheduling state.

Migrate from Quizlet

You can bring your Quizlet study sets into Words on Repeat using the built-in Quizlet import format.

Method 1: Copy & paste (easiest)

  1. Open your Quizlet study set
  2. Click the three dots (...) → Export
  3. Set separator to Tab between term and definition
  4. Set rows separated by New line
  5. Click Copy text
  6. In Words on Repeat, open a deck and click Import
  7. Select the Quizlet format tab → switch to Paste Text
  8. Paste the copied text and click Import

Your cards are immediately available for study with FSRS scheduling.

Note: Quizlet may require a paid plan to access the Export feature. If the export option isn't available, try Method 2.

Method 2: Use curated decks instead

If you were studying a language on Quizlet with community-made sets, the curated deck library may be a better starting point. Community Quizlet sets often have typos and no example sentences. The official Words on Repeat decks include grammar notes, example sentences with translations, and follow CEFR vocabulary standards.

For a detailed comparison of Quizlet vs Words on Repeat, see the full migration guide on the blog.

Deck Sharing

You can share your decks with other Words on Repeat users. Shared users get read-only access to view the deck and its words.

How to share a deck

  1. Go to the Decks page
  2. Click the Share button on any deck you own
  3. Enter the email address of the user you want to share with
  4. The deck will appear in their deck list marked as a shared deck

What shared users can do

ActionAllowed?
View deck and word listYes
Search and filter wordsYes
Add, edit, or delete wordsNo
Review cardsNo
Import wordsNo
Delete or modify the deckNo

The deck owner can unshare at any time by clicking the share button again and removing the user. Sharing is per-user — each user must be added individually.

Use cases: Teachers sharing vocabulary lists with students, study groups using the same word sets, or creating a "master deck" for new users to reference.

Settings & API Keys

The Settings page provides account management and programmatic access.

API Keys

API keys allow external tools (scripts, AI assistants like Claude or ChatGPT) to read and write words and decks programmatically.

  1. Click "Generate Key" and enter an optional label
  2. The raw key is shown — click Copy to copy it to your clipboard, or Show to reveal it
  3. Use in HTTP requests: Authorization: Bearer sk_your_key_here
  4. Keys can be revoked at any time

Note: Only users with the api_user or admin role can create API keys. If you don't see the API Keys section, ask your admin to grant you the api_user role.

API keys can read/write words and decks but cannot perform destructive operations (deck delete, password change) or access study/progress endpoints — those require browser login.

Appearance

Choose your preferred theme: Light, Dark, or System (follows your OS setting). You can also toggle the theme using the sun/moon icon in the nav bar.

Notifications

Enable or disable daily push notification reminders. When enabled, you'll receive a notification when you have cards due for review. See the Push Notifications section for details.

Daily Study Goal

Set a daily review target for the active deck. See Daily Study Goals for details.

Change Password

Enter your current password and a new password (minimum 8 characters) to update your login credentials.

Import / Export (Settings page)

The Settings page also provides import/export for the active deck, with optional tag filtering on export. This is in addition to the Import modal available on the Vocabulary and Decks pages.

Admin & User Management

Admins can manage user accounts from the Admin page, accessible via Settings > User Management.

ActionDescription
Create userSet display name, email, initial password, and roles
Edit userChange name, email, roles, or status (active/inactive/locked)
Reset passwordSet a new password for any user (minimum 8 characters)
Delete userPermanently remove the user and all their data (decks, words, reviews). Cannot delete yourself
Unlock accountChange a locked user's status back to "active" after failed login lockout

Roles

Each user can have one or more roles. Roles control what features are available:

RoleWhat it grants
userOwn decks, add/study words, view progress, change password
api_userEverything user can do, plus create and use API keys for programmatic access
adminFull access: user management, all features, API keys

Users can have multiple roles at once (e.g., user + api_user).

Account Security

Words on Repeat includes several security measures to protect your account and data:

  • Password hashing — passwords are stored as bcrypt hashes, not plain text
  • Minimum password length — 8 characters enforced on all password operations
  • Account lockout — after 3 consecutive failed login attempts, the account is automatically locked. An admin must unlock it from the Admin panel by setting the status back to "active"
  • JWT security — tokens have 7-day expiry, stored in httpOnly cookies with sameSite strict (prevents CSRF attacks)
  • API key security — keys are stored as SHA256 hashes in the database. The raw key (sk_...) is shown only once at creation time. Use the Copy button to save it
  • Role-based access — destructive operations require JWT login (not API keys). Admin operations require the admin role. API key creation requires api_user or admin
  • Inactive accounts — admins can set a user's status to "inactive" to prevent login without deleting their data

Deck Types

Words on Repeat supports two deck types:

  • Language decks — The default type. Each card has a word and translation with optional example sentences. Requires source and target language (e.g., Spanish → English).
  • Generic decks — For non-language content. Each card has a front and back instead of word/translation. Use for history, science, exam prep, or any topic. Set an optional subject field to describe the topic.

Choose the deck type when creating a new deck. The study experience, FSRS scheduling, and all features work identically for both types — only the labels change.

Card Types

Each word/card can be one of three types:

TypeFormatGrading
Q&A (default)Shows word, tap to reveal translationSelf-grade: Again / Hard / Good / Easy
ClozeSentence with blank: {{c1::answer::hint}}Self-grade after reveal
Multiple ChoiceWord + 2-6 answer optionsAuto-grade: correct = Good, wrong = Again

Cloze format: Store the sentence in the word field as The {{c1::cat::animal}} sat on the mat. During study, it displays as "The [animal] sat on the mat". Tap to reveal the answer.

MC format: Provide 2-6 options when adding the card. The first option is the correct answer (shuffled during study). Selecting the correct answer auto-grades as Good; wrong answers auto-grade as Again.

Study Modes

Words on Repeat offers three ways to study your cards during a review session:

ModeHow it worksBest for
StandardSee the word, reveal the translation. Self-grade with Again/Hard/Good/EasyRecognition — learning to understand words when you see them
ReverseSee the translation, recall the foreign word. Toggle via the Reverse checkbox in the study filter barProduction — practicing active recall from meaning to target language
RecallSee the translation, type the word from memory. Auto-graded based on accuracy. Toggle via the Recall checkbox in the study filter barSpelling and deep recall — forces you to produce the exact word

All three modes use FSRS scheduling and work with tag filters, state filters, and session size limits. Reverse and Recall can be combined with any other filter.

Deck scheduling modes

Each deck also has a scheduling mode that controls whether cards appear in the study queue:

  • Active (default) — Normal FSRS scheduling. Cards appear when due.
  • Paused — Deck is visible but cards never appear in the study queue. Due count shows as 0. Use for decks you want to take a break from.
  • Reference — Cards can be browsed (next/previous) but no FSRS grades are recorded. Use for completed decks you want to look up.

Change the scheduling mode from the deck edit modal. Switching from Paused back to Active makes all overdue cards immediately available.

AI Content Extraction

Extract vocabulary from any content source using AI. Navigate to the AI Extract page from the nav menu.

How it works

  1. Choose a source — Three tabs: paste text, enter a URL, or upload a file (TXT, PDF, DOCX)
  2. AI extracts vocabulary — The AI reads your content and returns vocabulary words with translations, example sentences, and example translations
  3. Preview and edit — Review the extracted cards in a table. Edit, delete, or add cards before saving
  4. Confirm — Save the cards to your active deck. They start as new FSRS cards

Tier limits

LimitFreeProPro Max
Extractions5/month5/day (35/week)20/day (140/week)
Max characters10,000100,000250,000
Max words extracted204050
File formatsTXT, URLTXT, PDF, DOCX, URLTXT, PDF, DOCX, URL
Max upload size2 MB10 MB25 MB
AI modelAmazon Nova 2 Lite (all tiers)

AI Exercises

Generate practice exercises from your existing deck words. The AI creates new study material in three formats:

  • Cloze — AI creates a sentence with the target word blanked out
  • Multiple Choice — AI generates 3 plausible distractors for each word
  • Q&A — AI reformulates the word/translation as a question and answer

Free users get 1 exercise generation per day. Pro gets 10/day. Pro Max gets 30/day. Pro and Pro Max users can save generated exercises as new cards in the deck.

Daily Context Sentences

Each day, the AI generates a natural sentence using 3-5 of your recently studied words. This helps you see vocabulary used in context and reinforces memory through meaningful connections.

The sentence is cached for the day (one per deck). Pro Max users can regenerate with different styles: formal, casual, story, or dialogue. Access daily sentences from the study page at the start of each session.

YouTube Import

Import vocabulary from YouTube video subtitles. Available on Pro (3/day) and Pro Max (5/day).

  1. Navigate to the AI Extract page
  2. Paste a YouTube video URL (standard watch URLs, short links, and embed URLs supported)
  3. The system fetches subtitles (auto-generated or manual captions)
  4. AI extracts vocabulary from the subtitle text using the same extraction pipeline
  5. Preview, edit, and save cards to your deck

Works with any language that has captions available on the video.

Smart Duplicate Detection

When adding words or importing vocabulary, the system checks for duplicates at up to three levels:

LevelMethodAvailable
L1 — ExactCase-insensitive word match within the deckAll plans
L2 — NormalizedStrips diacritics, articles (the/el/le/der), whitespace. Compares normalized formsPro+
L3 — SemanticAI checks for synonyms and near-duplicates among existing deck wordsPro Max

When a duplicate is detected, you see a warning with the match level. You can choose to add the word anyway or skip it.

Quiz Games

Four game modes for testing your vocabulary. Navigate to the Quiz page from the nav menu. All games require at least 4 words in the deck.

  • Match — Tap word-translation pairs to match them. Pairs disappear when correctly matched.
  • Write — See the translation, type the word from memory. Includes a first-letter hint.
  • Multiple Choice — Answer MC questions generated from your deck words. 4 options per question.
  • Race — Timed match game with a countdown. Score based on speed and accuracy.

Quiz games don't call AI — they generate questions from your existing deck data.

Test Export

Export printable vocabulary tests in two formats:

  • HTML (all tiers) — Clean printable page with questions. Open in browser and print.
  • PDF (Pro+) — A4 document with questions and an optional answer key on a separate page.
LimitFreeProPro Max
Max questions103050
HTML exportYesYesYes
PDF exportNoYesYes

Anki Import/Export

Import and export Anki deck packages (.apkg files). Available on Pro and Pro Max.

Import

  1. Click Import Anki on the Decks page
  2. Upload a .apkg file
  3. Preview the extracted notes (front/back fields)
  4. Choose to create a new deck or add to an existing one
  5. Confirm to save all cards

Export

Click Export Anki on the Vocabulary page to download your deck as a .apkg file. Pro Max exports include FSRS scheduling metadata so your review history transfers to Anki.

Free users can still import and export vocabulary via JSON.

Browser Extension

The Words on Repeat Chrome extension lets you save vocabulary from any webpage.

  • Double-click any word on a webpage to see a save tooltip
  • Right-click selected text and choose "Save to Words on Repeat"
  • Auto-translate — click the translate button in the popup to get an AI translation
  • Deck selector — choose which deck to save words to from the popup

The extension works with all plans. Log in with your Words on Repeat account through the extension popup. Recently saved words are tracked in the popup for quick reference.

REST API Reference

Words on Repeat exposes 30+ REST endpoints for programmatic access. You can use these from scripts, AI assistants, or external tools.

Authentication

All endpoints (except login and /api/spec) require authentication. Two methods are supported:

  • JWT cookie — automatic in the browser after login.
  • API key headerAuthorization: Bearer sk_your_key_here. Generate keys in Settings.

Endpoints marked JWT only require browser login — API keys are not accepted for destructive operations (deck delete, password change) or study/progress endpoints.

API Spec (Machine-Readable)

Fetch /api/spec (no auth required) to get a compact JSON description of every endpoint, including auth requirements, request bodies, query parameters, and response shapes. This is designed for LLMs and AI tools to discover the API programmatically.

Endpoints

Auth

MethodEndpointAuthDescription
POST/api/auth/loginNoneLogin with { email, password }
POST/api/auth/logoutNoneClear session cookie
GET/api/auth/meJWT onlyGet current user info. Returns { userId, username, email, roles }
PUT/api/auth/passwordJWT onlyChange password { currentPassword, newPassword } (min 8 chars)

Admin

All admin endpoints require JWT with the admin role.

MethodEndpointAuthDescription
GET/api/admin/usersJWT (admin)List all users
POST/api/admin/usersJWT (admin)Create user { username, email, password, roles? }. Password min 8 chars. Roles is a string array, default ["user"]
PUT/api/admin/users/:idJWT (admin)Update user { roles?, status?, email?, username? }
PUT/api/admin/users/:id/passwordJWT (admin)Reset user password { password } (min 8 chars)
DELETE/api/admin/users/:idJWT (admin)Delete user and all their data. Cannot delete self

Roles: Users can have multiple roles stored as an array: admin, user, api_user. The admin role grants access to user management. The api_user role (or admin) allows creating API keys.

Decks

MethodEndpointAuthDescription
GET/api/decksJWT or KeyList all decks with word_count and due_count
GET/api/decks/:idJWT or KeyGet deck with detailed stats
POST/api/decksJWT or KeyCreate deck { name, description?, source_lang?, target_lang? }
PUT/api/decks/:idJWT or KeyUpdate deck fields
DELETE/api/decks/:idJWT onlyDelete deck and all its words (cascade)
POST/api/decks/:id/duplicateJWT or KeyDuplicate deck with all words (FSRS state reset)

Deck Sharing

MethodEndpointAuthDescription
GET/api/decks/:id/sharesJWT or KeyList users a deck is shared with (owner only)
POST/api/decks/:id/sharesJWT or KeyShare deck with user { email } (owner only). Returns 404 if user not found, 409 if already shared
DELETE/api/decks/:id/shares/:userIdJWT or KeyUnshare deck with user (owner only)

Vocabulary

All list/create operations require deck_id parameter.

MethodEndpointAuthDescription
GET/api/vocabulary?deck_id=NJWT or KeyList words (paginated). Optional: search, tags, state, page, limit
GET/api/vocabulary/:idJWT or KeyGet single word by ID
POST/api/vocabularyJWT or KeyCreate word { deck_id, word, translation, ... }. Returns 409 on duplicate
POST/api/vocabulary/batchJWT or KeyBatch create { deck_id, words: [...] }. Skips duplicates by default
PUT/api/vocabulary/:idJWT or KeyUpdate word fields
DELETE/api/vocabulary/:idJWT or KeyDelete word

Study

MethodEndpointAuthDescription
GET/api/study?deck_id=NJWT onlyGet due cards. Optional: tags, state, mode, limit
GET/api/study/tags?deck_id=NJWT onlyGet all tags used in this deck
POST/api/study/:idJWT onlyGrade a card { rating: 1|2|3|4 }

Progress

MethodEndpointAuthDescription
GET/api/progress?deck_id=NJWT onlyFull statistics for the deck
POST/api/progress/sessionJWT onlySave study session { started_at, ended_at, duration_ms, cards_reviewed?, deck_id? }

Import / Export

MethodEndpointAuthDescription
POST/api/importJWT onlyImport words { words: [...], deck_id }. Skips duplicates by default
GET/api/export?deck_id=NJWT onlyExport words as JSON. Optional tags filter

API Keys

MethodEndpointAuthDescription
GET/api/keysJWT onlyList all API keys
POST/api/keysJWT onlyGenerate new key { label? }. Returns raw key (shown once)
DELETE/api/keys/:idJWT onlyRevoke an API key

Error Responses

All errors return JSON with an error field, e.g. { "error": "deck_id is required" }

StatusMeaning
400Bad request (missing/invalid parameters)
401Unauthorized (missing or invalid credentials)
403Forbidden (insufficient permissions, e.g., non-admin accessing admin routes, or writing to a read-only shared deck)
404Resource not found
409Conflict (duplicate word exists)
500Server error

Vocabulary Generation

The easiest way to generate vocabulary is using the built-in AI Extract feature. Paste text, enter a URL, upload a file, or use a YouTube video — the AI extracts vocabulary automatically and adds it to your deck.

For advanced users, you can also import words via the REST API. See the API Endpoints section for POST /api/vocabulary/batch.

Keyboard Shortcuts

KeyContextAction
Space / EnterReviewReveal the answer
1Review (answer shown)Grade as Again
2Review (answer shown)Grade as Hard
3Review (answer shown)Grade as Good
4Review (answer shown)Grade as Easy