Examplar is an open-source, local-first certification exam simulator. Practice in the browser with original questions, hands-on labs, and detailed review tools. This repository is the final standalone local edition, frozen on 8 September 2026. It remains available to download and fork. No account is required, and your progress stays on your device. Future development and content updates happen in the separately maintained online service; this snapshot receives no further updates.
Download the source ZIP · Separate online service · Read the privacy model
If Examplar helps you study or gives you ideas for your own local-first app, consider starring the repository. It helps other learners and contributors discover the project.
- Start immediately: open a free preview without creating an account
- Practice realistically: timed sessions, multiple question types, and configurable pass scores
- Learn from mistakes: detailed review, weak-area practice, and spaced repetition
- Keep control of your data: progress and imported content remain in browser storage
- Study anywhere: install it as a PWA and continue offline after the app is cached
- Use trustworthy material: original educational questions based on public exam objectives, not dumps
The current library covers Microsoft Azure, Azure AI, Copilot Studio, Microsoft Fabric, AWS, and CompTIA certifications. You can also import or create your own packs.
- Timed exam sessions with configurable pass scores
- Standard, multi-select, sequence, drag-select, and Yes/No matrix questions
- Study Mode with spaced repetition and weak-area practice
- Attempt history, detailed review, and progress export
- JSON and ZIP pack import
- A browser-based question editor
- Local image support
- Light and dark themes
- Installable PWA behavior and offline access after the app is cached
No account is required.
The free packs, editor, personal JSON/ZIP imports, and local progress work without an Examplar account. Local use does not send analytics. Keep the downloaded app and packs to practise independently of the hosted service.
The View complete exam online links lead to the separate paid service at
https://examplar.app/exams/<exam-id>/, where current prices and access conditions
are maintained. New purchases require an account and internet connection. They
do not include an offline download, and the personal online licence does not
decrypt or activate a pack in this repository.
Previous offline purchases still work: use Import previous offline pack in the exam information modal, or the normal file import, and enter the original pack decryption key when prompted. Do not enter a new online licence there.
The hosted service has its own account, licensing, and storage policy. The local storage descriptions below apply to this repository's simulator.
The official examplar.app service is deployed separately. This repository does
not configure that domain or publish to GitHub Pages. Its validation workflow
still builds and tests the standalone static distribution. To prepare your own
static host, run python tools/build_pages_artifact.py --output _site and serve
_site under your own domain; configure that host’s routing and TLS separately.
Questions, selected answers, imported content, images, progress, and editor changes remain in browser storage.
This edition contains no analytics or telemetry client, ingestion configuration, tracking hooks, campaign storage, or ad-click forwarding, on any hostname. Local progress statistics remain available on your device. This applies to the final snapshot; earlier Git history and old downloads retain their original behavior.
The browser still requests app files from your local server. Following external study resources, GitHub, or online-exam links contacts that destination, which has its own privacy policy. Pack images are loaded from local or same-origin files, or from IndexedDB.
See PRIVACY-AND-STORAGE.md for the complete disclosure.
Use Code → Download ZIP (or the ZIP link above), extract it, install Python 3.10 or newer,
and open a terminal in the extracted folder. Run python server.py, then open
http://localhost:8000. Keep that folder: it is the independent local app.
No Node install or build step is required to use it.
git clone https://github.com/rmssantos/examsim.git
cd examsim
python server.pyOpen http://localhost:8000.
The local server enables automatic pack discovery and the editor's local image upload endpoint. It binds to the loopback interface by default.
Opening index.html directly can work for basic use, but browser security rules
limit automatic folder discovery and some image workflows. ZIP import is
intentionally unavailable under file:// because extraction runs in an isolated
Web Worker; run python server.py and open http://localhost:8000 for ZIP packs.
JSON import and basic practice can still work in direct-file mode.
Public packs live under:
user-content/exams/<exam-id>/
Each directory contains the required question-data JSON, pack metadata, an integrity manifest, and optional images. The question and metadata schema defines the exact filenames and structure.
Users can also import:
- a JSON question array;
- a combined JSON object containing
id,metadata, andquestions; - a ZIP containing the required question-data JSON, optional metadata, and optional images.
ZIP import requires a supported local HTTP server or a secure self-hosted origin. It
does not run when index.html is opened directly as a file:// URL.
Imported packs and their progress are stored in that browser profile. They are not uploaded to the public repository or server.
Detailed formats:
Open editor.html to create or edit a pack.
The editor can:
- add and update supported question types;
- edit pack metadata;
- import and export JSON;
- preview questions;
- copy image files into a local pack when running through
server.py.
Browser edits affect only the current browser. Export changes to keep a backup or redistribute your own fork under the existing licence. This frozen snapshot receives no further upstream code or content updates.
.
|-- index.html Homepage and exam library
|-- exam.html Exam and Study Mode runtime
|-- editor.html Question editor
|-- privacy-and-storage.html User-facing privacy page
|-- server.py Optional local HTTP server
|-- assets/ CSS, JavaScript, media, and vendored dependencies
|-- exams/ Generated SEO landing pages
|-- tools/ Generators, validators, and pack utilities
|-- tests/ Python and browser regression tests
|-- docs/ Public technical documentation
`-- user-content/exams/ Intentionally published exam packs
This repository contains original educational practice content. It must not contain:
- copied live exam questions or unauthorized assessment collections;
- proprietary packs without redistribution rights;
- private paid-pack sources or delivery artifacts;
- license keys, buyer data, analytics exports, or internal commercial records;
- personal browser data or local development notes.
Local/private material belongs outside Git history. The repository ignores
.local/ for that purpose.
Examplar is not affiliated with or endorsed by Microsoft, Amazon Web Services, or other certification vendors. Certification names and trademarks belong to their respective owners.
Requirements:
- Python 3.10 or newer
- Node.js 22 or newer
Install browser test dependencies:
npm ciRun validation:
python tools/validate-exam-packs.py --root user-content/exams
python tools/validate-exam-packs.py --root user-content/exams --check-manifest
python -m unittest discover -s tests -p "test_*.py"
node --check service-worker.jsRun the browser smoke test with a local static server:
python -m http.server 4173 --bind 127.0.0.1
npm run test:browserGenerated exam pages must stay synchronized with metadata:
python tools/generate-exam-pages.pySee CONTRIBUTING.md for retained fork-maintenance guidance.
Treat imported JSON, ZIP files, metadata, filenames, URLs, and browser storage as untrusted input. Security issues should be reported without attaching proprietary packs, credentials, or personal data.
Optional self-hosting response-header guidance is documented in docs/SECURITY-HEADERS.md.
The simulator source is available under the MIT License. Authored practice questions, explanations, lab guides, editorial metadata, and original branded media follow the separate Examplar content terms. Third-party assets retain their own terms.