TSOFA - The Simple, Offline Flashcard App

TSOFA ("tee-sofa") - The Simple, Offline, Flashcard App - is a flashcard app that exists entirely in a single HTML file you can view in the browser. No server, no ads, no registration, no "premium" features to pay for, no build process, no cloud sync: It's just a simple, free flashcard app.

🇺🇸 English, 🇪🇸 Español, 🇫🇷 Français, 🇩🇪 Deutsch, 🇳🇱 Nederlands, 🇮🇹 Italiano, 🇵🇹 Português, 🇵🇱 Polski, 🇷🇺 Русский, 🇳🇴 Norsk, 🇸🇪 Svenska, 🇨🇳 中文, 🇮🇳 हिन्दी, 🇧🇩 বাংলা, 🇯🇵 日本語, 🇰🇷 한국어, 🇹🇭 ไทย, 🇸🇦 العربية, 🇻🇳 Tiếng Việt, 🇹🇷 Türkçe, 🇵🇭 Tagalog, 🇰🇪 Kiswahili, 🇮🇷 فارسی, 🇮🇩 Bahasa Indonesia

Features

  • Single HTML file - Everything in one HTML file, easy to share and view on any device
  • Multilingual Support - Emoji-based design to reduce language dependence, but also 24 languages supported: English, Español, Français, Deutsch, Nederlands, Italiano, Português, Polski, Русский, Norsk, Svenska, 中文, हिन्दी, বাংলা, 日本語, 한국어, ไทย, العربية, Tiếng Việt, Türkçe, Tagalog, Kiswahili, فارسی, Bahasa Indonesia
  • Keyboard controls - Space to flip, arrows to navigate
  • HTML support - Embed images, format text, add links
  • Shuffling - Randomize order for practice
  • Inverting Q/A - Swap questions with answers
  • Removing flashcards - Remove cards as you master them, reload the page to bring them back
  • Left, right, or center alignment - Change alignment to preserve indentation
  • Integrated timer - If you want to time your run through the flashcard deck
  • CSV import - Paste data from spreadsheets
  • Printable - Print a paper copy of the flashcards
  • Zero setup - Works immediately offline, no programming skills needed
  • Privacy-focused - Your flashcards are not uploaded or stored on cloud servers; they only exist in the HTML file on your device
  • Simply Free - No registration, no paywall, no ads, no "premium" features; everything is free

Example Flashcard Sets

(These flashcards are AI-generated and not thoroughly reviewed for correctness.)

Create Your Own TSOFA Flashcard Sets

You can use the editor web page to create new flashcard sets.

Alternatively, you can download the tsofa.html file and open it in any text editor. Find the FLASHCARDS variable (and optionally the TOPIC variable) near the top of the <script> section, and edit the text string values. Set the LANGUAGE variable to set the default language (this can be changed later in the app itself.)

You can put any HTML tags you want and they will be rendered in the flashcard, including images and video.

Array/JSON Format for Flashcards

For the array/JSON format, I recommend using backticks (on the keyboard to the left of the 1 key) for the FLASHCARDS string values so you can include quote characters and span multiple lines. You can optionally add a TOPIC setting as well to display on the page.

const TOPIC = "(Put a topic to display on the page here, or leave this empty.)";

let FLASHCARDS = [
[`What is the capital of France?`, `Paris`],
[`What is 2 + 2?`, `4`],
[`What is the largest planet in our solar system?`, `<b>Jupiter</b><br><i>It has a mass of 1.898 × 10²⁷ kg</i>`],
[`What year did World War II end?`, `1945`],
[`Who wrote 'Romeo and Juliet'?`, `William Shakespeare<br><img src="shakespeare.png">`],
[`What is HTML?`, `<b>HyperText Markup Language</b><br>The standard markup language for creating web pages`],
];

CSV String Format for Flashcards

Alternatively, you can also load flashcards from a single string of CSV (comma-separated values) text. This format is commonly used by spreadsheets or as an export format in other flashcard apps.

const TOPIC = "(Put a topic to display on the page here, or leave this empty.)";

let FLASHCARDS = `"Question 1","Answer 1"
"Question 2","Answer 2"
"Question with, comma","Answer with, comma"`;

Open Source

You can suggest improvements or report bugs on GitHub.