Home › Import Multiple Choice Questions into Google Forms

Import Multiple Choice Questions Into Google Forms — Answers and Marks Intact

Updated November 12, 2026 · ~10 min read

"Multiple choice questions to Google Forms" is a more specific problem than a general import: each question carries a stem, a fixed set of choices, one (or several) correct answers, and usually a marks value. Losing any of those turns a self-grading quiz into a survey. This guide shows the text patterns that parse reliably, runnable code that turns MCQs into fixed columns, how quiz mode and the answer key fit together, and the eight failures that scramble option order or drop the marks.

What must survive the import: Question text → choices in the original A–E order → the correct answer attached to a choice (not a note) → points → question type (single vs multiple answer). Google Forms has no MCQ import button, so a converter or a script has to carry all five.

Why copying MCQs by hand breaks the answer key

Google Forms lets you add a multiple-choice item and tick the correct answer, but one at a time. With 40 MCQs that means 40 chances to mis-tick the key, swap two options, or forget the points. And "how to make multiple choice questions in google forms" tutorials describe manual creation — not importing a bank you already have.

The other trap is that a correct answer in Forms is a property of a choice, not a separate text field. A spreadsheet with an "Answer: B" column is not a form; something must map that letter onto the corresponding choice when creating the item.

MCQ text patterns: what parses cleanly and what does not

PatternExampleReliable?
Numbered stem + lettered options1. Which planet is closest to the Sun?
A) Mercury B) Venus ...
Yes
Answer on its own lineAnswer: A or Key: A [1 pt]Yes
Options on one line separated by spacesA Mercury B Venus C EarthRisky — split points are ambiguous
Correct option marked inline with an asterisk*A) MercuryYes, if the marker is consistent
Answer key in a separate block at the end1:A 2:C 3:B ...Workable, but must be joined back by number
Two-column layout / tables / imagesPDF exam paperNeeds OCR + a structured parse, not a plain text read

Runnable parser: MCQ text → fixed columns

This Python script reads a plain-text MCQ bank and writes the fixed-column CSV that an importer (or the Apps Script in the bulk guide) expects. It handles both inline Answer: X and a trailing key block.

import re, csv

src = open("mcq.txt", encoding="utf-8-sig").read()
lines = [l.rstrip() for l in src.splitlines()]

# trailing key block, e.g. "1:A  2:C  3:B"
key_block = {}
for l in lines:
    if re.fullmatch(r"[\d\s:\-,.A-E]+", l) and ":" in l:
        for num, ans in re.findall(r"(\d+)\s*:\s*([A-E])", l):
            key_block[int(num)] = ans

questions, cur = [], None
opt_re = re.compile(r"^\s*[\(\[]?([A-E])[\)\].:]\s+(.+)$")
q_re   = re.compile(r"^\s*(\d+)[\).:\-]\s+(.+)$")

for l in lines:
    m = q_re.match(l)
    if m and not opt_re.match(l):
        if cur: questions.append(cur)
        cur = {"Number": int(m.group(1)), "Stem": m.group(2).strip(),
                "options": {}, "Answer": "", "Marks": 1}
        continue
    if cur is None: continue
    o = opt_re.match(l)
    if o:
        cur["options"][o.group(1)] = o.group(2).strip()
        continue
    a = re.match(r"^\s*(?:Answer|Key|Ans)\s*[:\-]\s*([A-E])\b", l, re.I)
    if a:
        cur["Answer"] = a.group(1).upper()
        p = re.search(r"(\d+)\s*pt", l, re.I)
        if p: cur["Marks"] = int(p.group(1))

if cur: questions.append(cur)
for q in questions:
    if not q["Answer"]:
        q["Answer"] = key_block.get(q["Number"], "")

with open("mcq_rows.csv", "w", encoding="utf-8", newline="") as f:
    w = csv.writer(f)
    w.writerow(["Number","Type","Stem","A","B","C","D","E",
               "Answer","Marks"])
    for q in questions:
        if not q["Stem"] or not q["Answer"]: continue
        opts = [q["options"].get(k, "") for k in "ABCDE"]
        w.writerow([q["Number"], "mcq", q["Stem"], *opts,
                    q["Answer"], q["Marks"]])
print("wrote", len(questions), "questions")

Use utf-8-sig so a BOM does not corrupt the first line. The script skips a question with no answer rather than silently importing an ungraded item — better to review 3 skipped rows than discover them after students submit. For multiple-answer questions, store the key as A,C and map it to a checkbox item.

Enabling quiz mode and the answer key

Creating the items is only half the job. In the destination form: Settings → Quizzes → Make this a quiz, then choose when grades are released. The correct answer must be attached to the choice itself (in the Forms API, form.newChoice(value, isCorrect)). If you only write "Answer: A" into the question text, Forms has no idea it is a key and auto-grading will not happen.

This is also why the one-click importer matters: it writes number, stem, options, answer and marks into the same structured row and carries the key onto the choice, so a 40-MCQ quiz arrives already gradable. See Multiple Choice Test Generator for the broader MCQ-to-platform view, and Quiz to Google Form for moving an existing quiz.

Import multiple choice questions into Google Forms in 5 steps

Troubleshooting

1

Collect the MCQs

Numbered stem, A–E options, answer and marks — in a file you already have.

2

Normalise the pattern

One option per line; answer on its own line or a trailing key block.

3

Parse into fixed columns

Run the Python script, or upload to a converter that does it for you.

4

Import and enable quiz mode

Create items, attach the correct flag to the choice, set points.

5

Verify before sharing

Check a sample question's order, key and marks in the live form.

Frequently asked questions

Can I import multiple choice questions into Google Forms?

Not directly — Forms has no MCQ import button. You either script the Forms API to create items and attach the correct-answer flags, or use a converter that parses your MCQ file (Word, PDF, spreadsheet, plain text) into fixed columns and writes the whole quiz as a Google Form you own.

How do I keep the answer key when importing multiple choice questions?

Store the correct option as its own column (Answer = A/B/C/D/E) and map it onto the choice object when the item is created. Then enable Settings > Quizzes > Make this a quiz. If the key is only text inside the question, Forms cannot auto-grade.

What MCQ text format imports most reliably?

A numbered stem followed by one option per line (A) ... B) ...), with 'Answer: A' on its own line and an optional '[2 pt]' mark. A trailing key block like '1:A 2:C' also works if numbering matches. Options crammed onto one line are the main source of parsing errors.

Can multiple-answer questions be imported?

Yes — map them to a checkbox item with a comma-separated key (e.g. 'A,C'). Do not use a multiple-choice item, which allows only one correct option.

Why are my marks all 1 after import?

Points must be a numeric column in the source, and the importer/script must call setPoints(). Text values such as '2 points' silently fall back to 1 in most scripts.

Question importers

ExamParser has a dedicated importer for each source format. Pick the one your questions currently live in — PDF, Word, Excel, Google Sheets or a quiz file — and the questions, options and answer key are carried into a Google Form you own.

Related guides

Import MCQs with the key already attached

Stop ticking correct answers one question at a time. Import the whole MCQ bank with options, answer key and points carried over exactly as written, then switch on quiz mode and share. Deterministic, no AI rewriting.

Import my questions into Google Forms →