Home › Convert CSV to QTI for Canvas

Convert CSV to QTI for Canvas: The Format Bridge, Explained

Updated October 10, 2026 · 7 min read

You already have a .csv — exported from a gradebook, a survey tool, an older LMS, or a colleague's template. Canvas will not read it. What it wants is QTI 1.2, a packaged XML quiz format. "Convert CSV to QTI" sounds like a one-click rename, but it is really a translation: your flat rows carry none of the structure QTI requires. This article explains what actually has to happen, shows the question-type mapping, and lists the pitfalls that quietly break imports.

Mental model: a CSV is a list. QTI is a structured quiz. The converter's job is to read meaning (what is the stem, which option is correct, how many points) out of your columns and re-emit it as Canvas-readable XML. If the meaning is ambiguous in the CSV, it will be wrong in the QTI.

What QTI 1.2 actually is

QTI (Question and Test Interoperability) 1.2 packages a quiz as a .zip containing an imsmanifest.xml plus one XML item per question. Each item encodes the stem, the options, the answer key, feedback, and points. Canvas's importer walks that manifest and rebuilds the quiz in its own database. A raw CSV has none of that — just text in columns — which is why the bridge is necessary.

Why a CSV alone is not enough

The conversion pipeline

1

Validate the CSV

Confirm UTF-8 encoding, one question per row, and that every row has a type and a well-formed answer key. Catch BOM and comma-in-cell issues here.

2

Map columns to meaning

Stem → question text, option columns → choices, answer column → key, a points column → scoring. Column order is irrelevant; only the meaning matters.

3

Assign type codes

Free-text labels ("multiple choice") become compact codes the exporter understands, so each item becomes the right QTI interaction.

4

Build the answer keys

Resolve the correct option to a 1-based index over the option cells; group multiple correct answers for "select all" items.

5

Emit the QTI package

Write imsmanifest.xml + item XML into a .zip Canvas can import.

Question-type mapping table

This is the part most people get wrong. Here is how common types map from a CSV row to QTI 1.2:

Question typeHow it looks in your CSVWhat QTI 1.2 needs
Multiple choiceOne correct option among A–DMC type, single 1-based answer index
Multiple answer (select all)Two or more correct optionsMR type, grouped answer indices
True / FalseTwo options, one correctTF type, index to True/False
Short answerA text field, optional accepted answersSA type, no fixed options
EssayOpen prompt, manual gradingES type, zero auto-key
MatchingPrompt–answer pairsMA type, paired items

Pitfalls that break the import

Validate before you import

A 30-second pre-flight saves a re-import cycle: confirm the row count matches your question count, spot-check three answer keys, and open the QTI in a validator if your converter provides one. Then import via Quizzes → More options → Import in Canvas.

How ExamParser handles CSV → QTI

ExamParser reads your CSV (or Excel) in whatever layout you already use, normalizes the columns into a standard structure, assigns the correct type codes, builds the answer keys, and exports a Canvas-ready QTI 1.2 package — and it can also flatten QTI back to CSV for round-trip editing. The same converter covers other LMS targets, so one source file can feed several platforms.

More format guides live at examparser.com/blog/en.

Frequently asked questions

What QTI version does Canvas import?

Canvas's quiz import accepts QTI 1.2 (and, in practice, IMS QTI packages produced by common converters). QTI 2.x is not the format Canvas's importer expects, so target 1.2 unless your institution documents otherwise.

Can I convert a QTI package back to CSV?

Yes, the mapping is reversible in principle: each QTI item's stem, options, and answer key can be flattened back into rows. A good converter supports both directions so you can edit in a spreadsheet and re-export.

My CSV has images embedded in cells. Will they survive?

Not if they are pasted inside a cell. QTI references images as separate files inside the package. Convert images to file references (for example a token like @image.png@ alongside an images folder) before export so the converter can bundle them.

Will formulas or formatting in my CSV break the conversion?

Export the sheet as plain CSV first so formulas become their computed values. A CSV has no styling, so bold/color is lost — that is expected. The converter only reads text values, types, and the answer key.

Convert your CSV now

Upload the CSV you already have and get a Canvas-importable QTI 1.2 package — no manual XML, no rigid template.

Try ExamParser →