Why Canvas can’t read your CSV directly
Canvas has no quiz importer for .csv files. Its “Import Course Content” flow only understands structured interchange formats — most commonly QTI 1.2, delivered as a .zip (or .imscc) archive of XML. A CSV is just rows of text; it tells Canvas nothing about which column is the answer key, which are the options, or how many points a question is worth.
So the job is to translate your CSV into QTI’s question model. The reliable way is a two-stage conversion: first turn your CSV into a standard, QTI-adapted CSV with a fixed column layout, then compile that into a Canvas-ready QTI 1.2 package. The first stage is where most of the real work — and most of the bugs — live.
The workflow at a glance
- Source CSV → standardized CSVMap whatever layout you have onto one canonical column order the QTI builder can trust — standardizing types, points, 1-based answer keys, and escaping.
- Standardized CSV → QTI 1.2 packageCompile the rows into the XML bundle Canvas expects, packaged as an importable
.zip. - QTI → CanvasUpload the package via Settings › Import Course Content and the quizzes appear in your course.
Step 1 — What the QTI-adapted standard CSV looks like
The standardized CSV is the contract between your source data and the QTI builder. Each row is one question, with a fixed column order. Here are two real rows — one single-answer, one multi-answer:
MC,,5,Q20,5,a,b,c,d,e
MR,,5,Q21,"2,4",a,b,c,d,e
Both rows describe a 5-point question with five options (a through e). The first is a single correct answer (E); the second has two correct answers (B and D). Here is what every field means:
| Position | Field | Meaning | Example |
|---|---|---|---|
| 1 | Type | Question type. MC = Multiple Choice (exactly one correct answer). MR = Multiple Response (more than one correct answer). | MC, MR |
| 2 | Group / reserved | Optional. Usually left blank. Can carry a question-bank group or section tag when you want questions organized on import. | (empty) |
| 3 | Points | The score assigned to the question in Canvas. | 5 |
| 4 | Title | The question reference/name shown in Canvas (handy for tracking). | Q20, Q21 |
| 5 | Answer key | 1-based index of the correct option(s). For MC, a single number. For MR, a quoted comma-separated list of indices. Quoting is required because the list itself contains commas. | 5 → option E; "2,4" → options B & D |
| 6…N | Options | The answer choices, in order. a=1, b=2, … The answer key points at these positions. | a,b,c,d,e |
MC,,5,Q20,5,a,b,c,d,e, the 5 in the answer field means the 5th option — e — is correct. In MR,,5,Q21,"2,4",a,b,c,d,e, "2,4" means the 2nd and 4th options — b and d.Why standardizing the CSV matters
Real-world question CSVs rarely arrive in this exact shape. You might have a different column order, type codes like SINGLE/MULTI instead of MC/MR, answer keys written 0-based or as option letters, or multi-answer cells with unescaped commas. If the QTI builder consumes those raw, it produces wrong answer keys or splits rows — silently.
The standardize step is what makes the export safe: it aligns every row to the canonical order, translates type labels, reconciles answer indexing to 1-based over the option columns, and forces multi-answer lists to be quoted. After that, the CSV is deterministic and the QTI builder can trust it.
How do you actually run this conversion?
Re-shaping hundreds of rows by hand in a spreadsheet is tedious and error-prone. The practical move is a tool that does both stages: read your source CSV, normalize it to the standard layout, and export QTI. ExamParser is built for exactly this — paste or upload a CSV at csv2canvas and it returns the standardized CSV you can audit and the QTI 1.2 .zip for Canvas.
Step 2 — Convert the standardized CSV into a Canvas-ready QTI 1.2 package
The cleanest way to run this stage is a single tool: ExamParser. It takes your CSV — however it started — maps it onto the QTI-adapted standard CSV, and then compiles that into the QTI 1.2 package in the same pass. You get both outputs: the standardized CSV to review questions and answer keys, and the final .zip to import. Grab the CSV to spot-check, or go straight to the package.
Step 3 — Import the QTI package into Canvas
- In your course, open Settings › Import Course Content.
- Choose QTI .zip file as the content type.
- Select the
.zipfrom Step 2 and click Import. - Wait for the job to finish, then find the quizzes under Quizzes (Classic Quizzes).
If your institution uses New Quizzes, import into Classic Quizzes first, then use Canvas’s built-in migration to convert the item bank or quiz to New Quizzes.
One tool for the whole pipeline: ExamParser (csv2canvas)
ExamParser is built for this exact job — CSV to Canvas. The part that makes it different is the middle step: it doesn’t just dump your CSV into QTI. It first converts your file into a more QTI-adapted standard CSV — normalizing columns, type codes, points, 1-based answer keys, and escaping — and only then compiles that standardized CSV into the QTI 1.2 package. You can review the standardized CSV before exporting, so what lands in Canvas is exactly what you approved. No manual re-columns, no copy-paste, no silent mis-indexing.
Turn your CSV into a Canvas QTI package
Paste or upload a CSV and get a QTI-adapted standard CSV plus a QTI 1.2 .zip ready for Canvas.
Try ExamParser →Common pitfalls (and how to avoid them)
- Inconsistent delimiters. Some exports use semicolons or tabs instead of commas. Confirm the separator before uploading; a wrong delimiter scrambles every column.
- Unescaped commas inside fields. A stem or option containing a comma must be wrapped in quotes, or the row splits. The standardizer quotes multi-answer lists; check free-text fields too.
- Mis-indexed answers. Remember the answer key is 1-based over the option columns only. Spot-check the first few rows against your source after standardization.
- Mixed type codes.
MC/MRvsSINGLE/MULTIvs numeric flags — let the standardize step translate them; don’t hand-edit each row. - Encoding issues. Accented characters, smart quotes, or non-UTF-8 files can corrupt text. Export UTF-8 from your spreadsheet when possible.
- Unquoted multi-answer lists.
MRanswers with more than one index must be quoted ("2,4"); an unquoted comma splits the row. - Mixed question types in one file. That’s fine — the type column per row drives the builder. Just keep the column order identical for every row.
Can Canvas import a CSV file directly?
No. Canvas does not have a CSV importer for quizzes. It imports assessments through a QTI 1.2 package (an .zip or .imscc archive of structured XML). A CSV first has to be converted into QTI — and ideally normalized into a standard layout the QTI builder can rely on.
What does it mean to convert a CSV into a QTI-adapted standard CSV?
Most question CSVs arrive in inconsistent shapes: different column orders, different type codes (SINGLE/MULTI vs MC/MR), raw 0-based or 1-based answer keys, and unescaped commas. ExamParser reads your source CSV and maps it onto one canonical layout the QTI builder expects — standardizing type codes, points, 1-based answer keys, and escaping multi-answer lists — before compiling it into QTI. You can review that standardized CSV before exporting.
My CSV uses a different column order or type codes. Will it work?
Yes, in most cases. ExamParser normalizes common variations during the standardize step: it aligns columns to the standard order, translates type labels into MC/MR, and reconciles answer-key indexing to 1-based over the option columns. After normalization you get a clean, predictable CSV that feeds the QTI builder deterministically.
How are multiple correct answers represented in the CSV?
Use the MR (Multiple Response) type and put the correct option indices in the answer field as a quoted, comma-separated list, e.g. "2,4" meaning the 2nd and 4th options are correct. Quoting is required because the list itself contains commas; the standardizer enforces this so the QTI export stays valid.
Does the QTI package work with New Quizzes?
The QTI 1.2 export targets Classic Quizzes. After importing, Canvas lets you migrate Classic Quizzes to New Quizzes with its built-in migration tool if your institution uses New Quizzes.
CanvasQTI 1.2CSV to QTICSV standard formatExamParser