Every field lands in its own column
Number, stem, each option, correct answer, explanation and marks go into separate columns, so you can sort, filter and reuse them later.
Upload a Word file. ExamParser takes every question apart — number, stem, options, answer key — and writes it straight into Canvas, Moodle, Quizizz or Blackboard in the exact shape each one expects.
From .docx to a Canvas-ready QTI zip
Download unlocks after a one-time payment — see pricing.
Why it holds up
Most tools flatten a question paper into one block of text and leave the answer key stranded at the end. ExamParser reads each question's number, stem, options and correct answer as one unit, so the answer travels inside the question and every destination gets a file it will actually accept.
Number, stem, each option, correct answer, explanation and marks go into separate columns, so you can sort, filter and reuse them later.
Every question keeps its correct answer in the same row as its options — never as a detached answer key. Asterisk marks or "Answer: C" notes are read and written into that question's own field.
Parse once, then export to any number of destinations. Moving from Canvas to Blackboard next term does not mean re-doing anything.
Canvas
ExamParser exports a QTI 1.2 / 2.1 package that Canvas reads natively. Each question, its options and its correct answer land in your question bank as one unit — no manual fixing, no copy-paste.
.docx, PDF or a scanned past paper. The parser reads the number, stem, options and the correct answer for every question.
Every question becomes a row. Fix anything in place — edits flow into every export.
One file per job, containing the manifest and every question in Canvas-ready XML.
Settings → Import Course Content → choose QTI .zip → pick a question bank or course. Done.
max_score per item<!-- imsmanifest.xml + per-question xml --> <item ident="q1"> <presentation> <material> <mattext>Which organelle carries out photosynthesis?</mattext> </material> <response_lid> <material>A. Chloroplast</material> <material>B. Mitochondrion</material> <material>C. Ribosome</material> <material>D. Nucleus</material> </response_lid> </presentation> <resprocessing> <respcondition> <conditionvar> <varequal>C</varequal> </conditionvar> <setvar action="Set">100</setvar> </respcondition> </resprocessing> </item>
How it works
Drop in a .docx — or a PDF and scanned paper. The parser reads each question's number, stem, options and correct answer as one unit, so nothing gets split apart.
Every question becomes one row: number, stem, options and its answer together. Preview is free; you pay per question only when you download, then export to any format.
Open the Canvas QTI .zip in Settings → Import Course Content. Moodle, Quizizz and a plain spreadsheet export the same way — no reformatting, no copy-paste.
Exports
Import limits differ a lot between platforms. This is what ExamParser writes out for each one.
| Destination | File you download | Structure | Answer key |
|---|---|---|---|
| Canvas | .zip QTI 1.2 / 2.1 |
Item metadata, presentation block, response processing per question | Yes, mapped to correct response |
| Moodle | .txt Aiken, .txt GIFT, .xml |
Aiken with ANSWERS block; GIFT with = correct and ~ distractors |
Yes, all three variants |
| Quizizz | .xlsx bulk upload sheet |
Question, Option 1–4, Correct Answer, Explanation, Time in seconds | Yes, one chosen answer per row |
| Kahoot | .xlsx bulk upload sheet |
Question, Answer 1–4, Correct Answer, Time limit | Yes |
| Blackboard | Tab-delimited upload or QTI | MC rows with answer column and optional feedback field | Yes |
| Respondus | .rtf in Respondus word format |
Title: block, numbered questions, asterisk marks the key |
Yes, asterisk marking |
| Google Forms | Spreadsheet + Apps Script | Script creates the quiz items; Forms has no native import | Yes, answer key set per item |
| Excel / CSV | .xlsx, .csv |
Number, Type, Stem, Option A–E, Answer, Marks, Difficulty | Yes, its own column |
Pricing
No subscription, no login. Upload and preview any paper for free — you only pay when you download, and the rate per question drops as your batch gets bigger.
FAQ
No. ExamParser runs without a login. Drop a file in, pick the destination and download the result. An account is optional and only used to keep past conversions in one place.
Upload the .docx file, choose Canvas as the destination, and ExamParser writes each question into number, stem, options and answer fields, then packages them as a Canvas QTI file. In Canvas go to Settings, Import Course Content, and select the QTI zip file.
Multiple choice, multiple answer, true or false, matching, fill in the blank, short answer and essay. Export support depends on the destination, because each platform accepts only a subset of these types.
Yes. The correct answer is stored in the same row as its question — number, stem, options and answer together — never as a separate answer key at the end. Every destination receives each question with its answer already attached.
Yes. Scanned pages and photographs go through OCR before parsing, so printed past papers can be turned into an editable question bank.
Uploads are used for the single conversion job only. Unpublished exam material is never reused, never resold and never used to train models.
You pay per question extracted, only when you download. The rate depends on your total batch size: up to 100 questions is $0.05 each, 101–1,000 is $0.04, 1,001–10,000 is $0.03, and 10,000 and above is $0.02. Larger batches cost less per question, and every download includes all nine export formats.
No subscription. Pay only for the questions you download. Exports ready for every major LMS.
Upload received. We parse about 100 questions per minute — actual speed depends on current load.
| id | stem | A | B | C | D | E | answer | solution |
|---|