nazdridoy1k downloadsA robust, offline-first CBT exam simulator using FlashQuiz format.
An Obsidian plugin for creating interactive, timed exams from your notes. It uses a human-readable syntax to render professional computer-based testing (CBT) environments directly within your vault.
{exam-title}-history.md file, letting you monitor progress over time.https://github.com/user-attachments/assets/2d5d9b62-81f9-4f12-8fb1-b48a6bb41c1b
Configure quiz settings at the beginning of the file using YAML frontmatter.
| Option | Type | Description | Example |
|---|---|---|---|
quiz-title |
String | The title of the quiz | quiz-title: "My Quiz" |
time-limit |
Number | Time limit for the quiz in minutes | time-limit: 30 |
pass-score |
Number | Minimum percentage required to pass | pass-score: 70 |
shuffle |
Boolean | Whether to shuffle the question order | shuffle: true |
show-answer |
Boolean | Whether to show answers during the quiz (flashcard mode) | show-answer: true |
exam-range |
String | Filter questions by sequence number (e.g., "1-20, 50-") |
exam-range: "-" |
[!NOTE] Exam Ranges (
exam-range): You can filter the exam to include specific questions by their sequence number. The format supports multiple segments separated by commas. Examples:
exam-range: "1-20": Questions 1 through 20.exam-range: "-10, 20-30, 50-": Start to 10, 20 to 30, and 50 to end.exam-range: "5, 10, 15": Only questions 5, 10, and 15.exam-range: "-": Full exam (default).Note: If any part of the range is invalid, you will be prompted to launch the full exam instead.
Example:
---
quiz-title: "Science Quiz"
time-limit: 15
pass-score: 80
shuffle: true
show-answer: true
exam-range: "-"
---
Questions are defined using specific markers followed by the question text and answer details.
| Marker | Type | Answer Format |
|---|---|---|
@mc |
Multiple Choice | = b |
@sata |
Select All That Apply | = a, c, e |
@tf |
True/False | = true / = false |
@fib |
Fill in the Blank | = answer1, answer2 |
@match |
Matching | Left | Right pairs |
@sa |
Short Answer | = text |
@la |
Long Answer | = text |
@type (e.g., @mc).1) or 2.). Questions are automatically sorted by this number.a), b), c)... for choices (lowercase letters followed by a parenthesis).= prefix followed by a space (e.g., = a).= a, c).https://github.com/nazdridoy/obsidian-cbt-exammain.js, manifest.json, and styles.css from the latest release.cbt-exam folder in your vault's .obsidian/plugins/ directory.Add quiz metadata to your note's frontmatter and write questions using the markers above.
quiz.md)---
quiz-title: "Sample Quiz"
time-limit: 30
pass-score: 70
shuffle: true
exam-range: "-"
---
# Physics Quiz (@mc)
@mc 1) Calculate the force if $m=5kg$ and $a=2m/s^2$.
a) $10N$
b) $7N$
c) $3N$
d) $2.5N$
= a
# Chemistry (@sata)
@sata 2) Which of these are **Nobel Gases**?
a) Helium
b) Oxygen
c) Argon
d) Neon
= a, c, d
[!TIP] See FLASHQUIZ_SPEC.md for full syntax documentation and ExampleQuiz.md for a comprehensive example file.
Ctrl/Cmd + P).Focus on your weak points with a targeted study session.
The results dashboard provides a breakdown of your performance: accuracy, points, and time.
This project is licensed under the MIT License. See LICENSE for details.