Troubleshooting and help
Diagnose sign-in, API, import, media, review, and template problems before contacting support.
Start by recording the page, approximate time, browser, operating system, and the smallest sequence that reproduces the problem. Do not include access tokens, private card content, or full study files in a public report.
Signed-in web users can open Help and recovery to search these symptoms, check API and offline-storage availability, see locally saved review counts, and copy a privacy-safe diagnostic report.
Start with a data-safe recovery ladder
Use these steps in order. Stop as soon as the problem is fixed.
- Preserve the exact visible warning and the smallest steps that reproduce it.
- Confirm whether the browser is online, then use Help and recovery → Run checks again to check the Repeto API separately.
- Retry the existing operation. For imports, resume the recorded job instead of starting a duplicate upload.
- Reload the affected page once. Repeto’s route and application error boundaries do not clear the review outbox or collection data.
- Reproduce the issue in an up-to-date browser window with extensions disabled. This isolates content blockers and injected styles without changing your collection.
- Copy the privacy-safe diagnostics and contact support with what you selected, expected, and observed.
Do not clear site data as a routine early step. Browser storage can contain cached study data and reviews that have been saved locally but not confirmed by the server. Confirm sync or create a verified backup first.
Platform and offline matrix
| Platform | How to use Repeto | Offline boundary |
|---|---|---|
| Web browser | Open app.repeto.ai in a current browser and sign in. | The app shell and previously cached reads can open after a successful online visit. Reviews can be stored in the durable local outbox. Sign-in, generation, imports, uploads, and uncached reads require the API. |
| Installed web app (PWA) | Use the browser’s Install or Add to Home Screen action. It is the same web account in a standalone window. | The web boundary is unchanged. Background delivery is not guaranteed, so reopen Repeto online and keep it open until locally saved reviews sync. |
| iPhone and iPad | Use the current App Store client or add the web app to the Home Screen. The Repeto 2.2 App Store update is still in preparation. | The published native client and web app have different release states. Link a device-only account to an email before changing or losing the device. |
| Android | Use Repeto in a current browser or install its PWA. A native Repeto Android app has not been released. | Android battery and storage policies can stop background work. Verify sync while the PWA is open. |
Private browsing, browser storage policies, and aggressive cleanup extensions can prevent or evict offline data. The browser saying “online” also does not prove that api.repeto.ai is reachable.
I cannot sign in
Refresh the sign-in page once and confirm the browser allows first-party cookies for app.repeto.ai. If an OAuth window was blocked, start the provider flow again from the visible sign-in button rather than reusing an old callback URL.
If Repeto reports that it cannot connect to the API, the application shell loaded but api.repeto.ai did not answer. Check your connection and retry. A service outage cannot be fixed by creating another account.
Local development previews are different: the web app and API must both be running, and the preview must target the local API origin. Open local preview cannot work when only the Vite frontend is running.
A review did not appear to save
Keep the tab open and use Help and recovery to check its pending and blocked review counts. The ordinary offline indicator reports browser connectivity, not whether every outbox item has drained. The web reviewer writes ratings to a local IndexedDB outbox before advancing and retries idempotently when the connection returns. The server serializes review writes and revalidates scheduler state, queue and step, counters, interval and FSRS result, due class, deck configuration, staleness, and idempotency. A conflicting offline item is blocked rather than allowed to corrupt the schedule.
If the card returns immediately, it may be a learning step rather than a failed sync. Inspect the interval preview and the deck’s learning steps. If several tabs review the same collection, close the older tabs and reload the newest one.
Counts do not match the session total
The deck list can show all due, learning, and new cards in a subtree. The session then applies new/review daily limits, queue eligibility, suspension, and the selected scope. Parent totals already include descendants, so adding visible parent and child rows double-counts the same cards.
If a session stops at a suspicious round number, check Deck settings → Maximum reviews per day. The web, iOS, and Android clients request up to 9,999 session cards, but a deck’s new/review limits can still produce a smaller session.
An import is stuck
Return to Import. Repeto stores the active import job and should reopen its processing or preview page. Do not begin a duplicate upload while the first job is active.
If the job fails repeatedly:
- export a fresh
.apkgfrom the source; - confirm the file opens there;
- retry with the new package;
- preserve the failed filename and warning text for support.
An imported card looks wrong
Try the Use Repeto styling choice during import, or toggle preservation of imported template colors in Appearance. Open the note type preview and inspect the front/back templates for unsupported filters, fixed dimensions, scripts, or selectors that assume Anki Desktop.
Large images should scale responsively inside the review card. If one stays tiny, inspect whether the template itself assigns a small width. Media embedded as a fixed-size HTML element can override the application’s default image rules.
An image or audio file is missing
Confirm the import preview reported media. A package can reference a filename that is not present in its media manifest. Re-exporting from the source with media included is safer than manually changing internal archive filenames.
For newly attached media, wait for the upload to finish before closing the editor. A browser offline cache is not a substitute for a completed server upload.
Open Settings → Media health and run a read-only scan. It lists missing, unused, malformed or external references, filename collisions, and recoverable trash without following remote URLs. Preview only the repairs you intend: remove safe static broken references, tag affected notes, move safe unused objects to trash, or restore trash. The preview rejects stale data and a successful repair offers conflict-safe Undo.
Do not assume every reported “unused” object is safe to remove. Dynamic or malformed references and filename collisions are deliberately excluded from automatic repair, and Repeto never downloads a replacement from an external URL or permanently purges object bytes from this screen.
Recover or replace a collection
Open Settings → Data & recovery to download the current native backup, validate an uploaded archive, restore into an empty collection, or explicitly replace the current live collection. Replacement creates a pre-restore recovery point first. The newest five recovery points can be downloaded or restored; there is no merge restore or timed automatic-backup schedule.
Search or filters miss a card
Open Card browser, clear the query, and search for text from a known field. Switch between Cards and Notes mode if sibling cardinality is confusing. The collection browser filters and sorts on the server; its loaded count may be smaller than the reported total until you choose Load more.
If a structured query is invalid, read the highlighted diagnostic instead of deleting operators at random. Repeto supports word-boundary search with w:, but still rejects accent-insensitive, rendered-cloze, regular-expression, preset, introduced-card, and custom-data operators. Deck-level state/tag/image filters are a separate, narrower view and may refine only loaded deck pages.
Contact support
Use Repeto support for account, privacy, billing, and product issues. Include:
- the affected page and deck name (not private card text);
- browser/app version and operating system;
- whether the problem reproduces online and offline;
- exact warning or error text;
- a short screen recording when visual behavior matters.
Never send a manual API token, OAuth code, password, or complete private collection by email. Support can ask for a narrowly scoped diagnostic if one is required.
The in-app diagnostic report includes only the Repeto web version, a route pattern with IDs removed, coarse browser/platform versions, display mode, connectivity/capability states, and review-outbox counts. It deliberately excludes names, email addresses, account/deck/card IDs, deck names, card text, media, search terms, complete URLs, cookies, and credentials. Read the report before sending it; it is plain text and remains under your control.