Click any stem or option to edit · Images stay unchanged · Export when ready
Tip: If your document mixes questions and answers in the same file, the QTI zip may fail to import into SLS or produce unexpected items. For best results, upload the question paper only and supply a separate mark scheme .docx as the second file.
"Read the QTI ZIP in this folder, generate a concise model answer for each essay question stem,
and save an updated ZIP with the answers injected into the <correctResponse> fields."
Ready-to-import QTI packages. Upload directly to SLS.
Singapore Physics prelim papers:
Singapore Biology prelim papers (with AI-generated model answers):
Singapore Chinese (华文) MCQ worksheets — contributed by Alena:
Singapore Chinese (华文) Primary 6 prelim paper — contributed by Francesca:
Simple test samples (demonstrating different DOCX formats):
Every year, Singapore teachers invest enormous effort crafting high-quality examination papers in Microsoft Word — carefully worded MCQ stems, detailed mark schemes, physics diagrams painstakingly drawn or embedded. When it comes time to put these questions onto the national Student Learning Space (SLS) platform, teachers face a second, entirely manual job: re-typing every question, re-uploading every image, and re-entering every correct answer — one by one — into the SLS authoring interface.
For a 30-question Paper 1 alone, this can take two to three hours. Multiply that across a department sharing five or six papers per year, and a meaningful slice of teacher time disappears into administrative reformatting rather than pedagogy.
SLS supports the international QTI 2.1 (Question & Test Interoperability) standard for bulk question import. A QTI package is simply a ZIP file containing structured XML — a machine-readable description of every question, its options, its correct answer, and its associated images. If we could automatically translate a Word document into a valid QTI package, teachers could go from a finished exam paper to a fully loaded SLS quiz in minutes.
Low Jun Hua built the first Python prototype as a Flask web app. The approach: unzip the .docx file (Word documents are ZIP archives internally), parse the XML, detect question numbers, classify MCQ versus structured responses, extract embedded images, and write out conformant QTI XML. The converter was then extended, hardened, and re-implemented as a fully in-browser tool — no server, no sign-in, no file upload to a third party. Everything runs locally in the teacher's own browser using JavaScript and the JSZip library.
.docx and correct answers are injected into every QTI item's correctResponse field.<simpleChoice> elements.assessment_test.xml.The EdTech Masterplan 2030 sets out a vision of "Technology-transformed learning, to prepare students for a technology-transformed world." It organises its outcomes around four pillars — Students, Teachers, Schools, and System — and calls for teachers to become "technologically-adept, collaborative learning designers" who are pedagogically proficient, data-literate, and continuously experimenting with technology. Its first strategic thrust is to "empower students' learning through greater customisation and personalisation with EdTech." This converter directly supports those goals:
correctResponse, item identifiers, scoring), building the data literacy the masterplan identifies as essential for the modern teacher.
moe.edu.sg domain, making it accessible from Whole-of-Government (WOG) school devices without installation or special permissions — supporting the masterplan's goal of digitally-equipped learning environments.
Word documents are far messier than they appear. The same visual layout — a question number followed by four labelled options — can be represented in dozens of different XML structures depending on the Word version, the template used, and the author's habits. Some papers put every question in a table; others mix paragraphs and tables; some use A. B. C. D. as paragraph text, others embed them in nested table cells, others use a transposed grid where A/B/C/D are column headers and the options are images in the rows below.
The most important engineering decision was to never throw away ambiguous content. Instead of silently dropping unknown structures, the converter surfaces them in the Review & Edit panel so the teacher can make the final call. A question that cannot be auto-classified as MCQ shows up as Essay — one click on the badge toggles it to MCQ and reveals the option fields.
Running entirely in the browser was a deliberate choice for privacy and accessibility. Teachers' exam papers — often confidential before sitting — never leave their device. There is no account, no quota, no subscription. The tool works offline once the page is loaded.
The current tool handles Physics prelim papers well. Future directions include better support for mathematical notation (MathML inside QTI), multi-part structured questions with sub-question scoring, and a question-bank view that lets teachers search and reuse individual items across papers. Contributions and feedback from the Singapore teacher community are very welcome via the GitHub repository.
This tool is free and open-source. It was built by Singapore physics educators, for Singapore educators. If it saves your department even one afternoon a year, it has done its job.
Common questions from teachers using this converter with SLS.
This is a fundamental limitation of the QTI 2.1 standard, not specific to this converter. QTI does not have a native multipart question format. Every item in a QTI package must be a self-contained, standalone question.
As a result, each part of a multipart question is exported as its own separate QTI item. To keep things coherent, the shared stimulus (the common passage or scenario) and the part label (e.g. "Part (a)") are repeated in each item's prompt — the same approach used by other QTI converters such as GetMarked.
What this means in SLS:
QTI 2.1 constraint Workaround: reorganise in SLS after import
For MCQ questions, correct answers are included in the QTI package
as <correctResponse> elements and are successfully ingested by SLS
during import — no additional setup is needed for MCQ.
For essay / structured questions, SLS currently does not ingest answer data from QTI files during import, even when that data is present in the package. This is a platform-side limitation of SLS, not a problem with the converter. The same behaviour has been confirmed by other QTI converters (including GetMarked).
What this means in practice:
The converter embeds suggested answer text in the QTI XML for completeness, but SLS will not display it until MOE adds support for ingesting essay answer data from QTI.
SLS platform limitation Workaround: add answers manually in SLS