๐ From an idea to a tool that teachers actually use — the story of our DOCX → QTI Converter!
A few days ago, Low Jun Hua came to me with a simple but powerful question: "Can we make it easier for teachers to upload question papers into SLS?"
That spark turned into something fantastic.
Today, our free browser-based converter at ๐ https://iwant2study.org/lookangejss/QTIlowJunHua/docx_to_qti.html lets any teacher drag in a Word document (.docx) and get back a ready-to-import QTI 2.1 ZIP — no server, no login, no coding needed. Just upload and convert, right in your browser.
๐ Thank you to everyone who made this possible:
✨ Low Jun Hua — the original ideator who asked the question that started it all. This tool carries your name because it began with your vision. https://github.com/junhualow/docx-qti-converter
๐งช Lawrence — creator of this who uploaded real exam papers and helped iron out the inline-numbered MCQ format. https://github.com/lookang/QTIconvertertool
๐ฌ Harley — tested Word auto-list (numPr) formatted papers and helped us handle a tricky DOCX numbering format that many schools use.
๐งฌ AMKSS Biology team Yiru— contributed a real 2025 Prelim Paper 4 Biology paper complete with AI-generated model answers, showing what's not possible now when QTI meets ill formed test papers.
๐ Alena — our most recent contributor, who brought in Chinese-language (ๅๆ) MCQ worksheets and pushed us to support Chinese and Tamil fonts so the tool works for all Singapore students, not just English-medium classes.
๐ ️ What the tool does today:
Converts MCQ, structured and essay questions from DOCX to QTI 2.1
Auto-detects correct answers from a separate mark scheme file
Handles images, tables, superscripts, subscripts
Supports English, Chinese (ๅๆ) and Tamil fonts
Lets teachers review and edit every question before exporting
Runs 100% in the browser — your papers never leave your device
This project is a testament to what happens when educators dare to ask "what if?" and colleagues step up to test, contribute, and improve together.
If you teach in Singapore and want to try it, the link is free and open to all. And if you have a sample paper to contribute — especially in Chinese or Tamil — please reach out! ๐
#SLS #EdTech #Singapore #Teachers #QTI #OpenSource #ๅๆ #Tamil #AIinEducation #LowJunHua
Great new! I wanted to share a complete rework on the DOCX-to-QTI project you initiated, highlight the developments built upon your work, and respond to your question regarding the Render subscription.
In short: yes, you may go ahead and cancel your personal Render subscription, but you need to be comfortable with the differences between your Render hosted Python server version and my HTML version— the HTML latest version no longer requires a server.
Why I Moved Away from the Python/Flask App
Your original Flask app on Render was a strong proof of concept and provided the essential parsing logic. That said, a server-based approach presents several challenges in a school context:
- Maintaining a live server involves ongoing costs, updates, and monitoring
- The MOE WOG network may restrict access to unfamiliar external domains
To address these, I rebuilt the converter entirely in vanilla HTML and JavaScript. It now runs fully in the browser using the JSZip library, handling all file processing client-side. There’s no server, no uploads, and no accounts — documents remain on the teacher’s device, safe and secure.
What Has Been Built
Building on your parsing logic and QTI structure, the browser-based version now supports:
- Full in-browser DOCX parsing — reads Word XML directly, detects question numbers, MCQ options, tables, and embedded images
- Mark scheme integration — uploading a matching MS .docx auto-populates correct answers into each QTI item
- Review & edit panel (new idea) — teachers can edit questions, adjust formats (MCQ/Essay), modify answers, and preview images before export
- Force MCQ mode(new idea) — ensures correct classification for fully MCQ papers (e.g., Paper 1)
- Accurate question ordering — questions are deduplicated and sorted (Q001–Q030) to match SLS formatting
- Option-level image support — detects and embeds images within answer choices (useful for diagram-based questions)
- VML image compatibility (new idea) — supports older Word image formats alongside modern ones
Where to Access the Tool
The tool is currently hosted on moe.edu.sg domain.
- https://iwant2study.moe.edu.
sg/lookangejss/QTIlowJunHua/ docx_to_qti.html (recommended for MOE/WOG access, note the domain name is moe.edu.sg)
Your original Flask demo remains referenced on the page for credit, but it is no longer required for use, if you can accept the difference.
Source Code
- Browser-based version (active): https://github.com/lookang/
QTIconvertertool - Original Python prototype: https://github.com/junhualow/
docx-qti-converter
Ready-to-Use QTI Packages
I have also prepared pre-converted QTI packages (with mark schemes) for direct SLS import:
- 2022 JC2 H1 Physics Prelim P1 (30 MCQ)
- 2022 JC2 H1 Physics Prelim P2 (Structured)
- 2022 JC2 H2 Physics Prelim P1 (30 MCQ)
- 2022 JC2 H2 Physics Prelim P2 (Structured)
- 2022 JC2 H2 Physics Prelim P3 (Structured)
Next Steps
- Can consider cancelling your Render if you wish to — the browser version is fully self-contained, so there’s no longer any need for a hosted service
- Retain the Python code — it remains useful for local batch or automated server-side processing scenarios
- Contribute if you’d like — improvements and edge-case handling are very welcome via GitHub, just fork it and edit away.
- Acknowledgement — your original work is clearly credited, and this project builds directly on your foundation
Thank you again for your contribution to SLS QTI question importing capability — your prototype laid the groundwork for a solution that is now much more scalable and suitable for teachers in Singapore.
Feel free to reach out if you like a walkthrough or have any questions.
No comments:
Post a Comment