KB1023 - Creating Questions in GIFT format

GIFT format allows you to write multiple-choice, true-false, short answer, matching missing word and numerical questions in a simple format that can be imported into Moodle. (The GIFT format is also an export file format available inside the Moodle Question Bank.)

Creating Moodle Quiz Questions in GIFT Format

The following instructions are a compilation from the following sources:

What is the GIFT Quiz Format?

GIFT ("General Import Format Technology") is the most comprehensive import format available for importing quiz questions into Moodle. It is Moodle's proprietary format. (Other quiz formats can be imported into Moodle as well. Read more about compatible quiz formats).

Formatting your questions in the GIFT format (plain text) allows you to rapidly import a large number of questions and answers into a Moodle question bank. This can be much faster than manually creating each quiz question.

GIFT supports Multiple-Choice, Short Answer, True-False, Matching, Numerical questions, and Essay, as well as insertion of a _____ for the Missing Word format.

Various question-types can be mixed in a single text file, and the format also supports line comments, categories, question names, feedback and percentage-weight grades.

The text encoding of your text file must be UTF-8 (unless you only use plain text ASCII characters).

The Basics of GIFT

Each individual question in the GIFT file must not contain any blank lines. Each question is delimited by at least one blank line. If you need to represent a blank line in your question, you can use the entity \n. You can add comments wherever you wish, but they must start with two forward slashes (//) at the start of the line.

Question Types

Multiple Choice

For multiple choice questions, wrong answers are prefixed with a tilde (~) and the correct answer is prefixed with an equal sign (=).

Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}

The Missing Word format automatically inserts a fill-in-the-blank line (like this _____) in the middle of the sentence. To use the Missing Word format, place the answers where you want the line to appear in the sentence.

Grant is {~buried =entombed ~living} in Grant's tomb.

If the answers come before the closing punctuation mark, a fill-in-the-blank line will be inserted for the "missing word" format. All question types can be written in the Missing Word format.

There must be a blank line (double carriage return) separating questions. For clarity, the answers can be written on separate lines and even indented. For example:

The American holiday of Thanksgiving is celebrated on the
Thursday of November.

Japanese characters originally came from what country?

Short Answer

Answers in Short Answer question-type are all prefixed by an equal sign (=), indicating that they are all correct answers. The answers must not contain a tilde.

Who's buried in Grant's tomb?{=no one =nobody}
Two plus two equals {=four =4}.
Canada’s westernmost province is {=British Columbia =BC =B.C.}

As in the last example above, all possible answers need to be entered in order for the grading to be accurate. If there is only one correct Short Answer, it may be written without the equal sign prefix, as long as it cannot be confused as True-False.


In this question-type the answer indicates whether the statement is true or false. The answer should be written as {TRUE} or {FALSE}, or abbreviated to {T} or {F}.

Grant is buried in Grant's tomb.{F}
The sun rises in the east.{T}


Matching pairs begin with an equal sign (=) and are separated by this symbol "->". There must be at least three matching pairs.

Matching Question.
=subquestion1 -> subanswer1
=subquestion2 -> subanswer2
=subquestion3 -> subanswer3
Match the following countries with their corresponding capitals.
=Canada -> Ottawa
=Italy -> Rome
=Japan -> Tokyo
=India -> New Delhi

Matching questions do not support feedback or percentage answer weights (see below).


The answer section for Numerical questions must start with a number sign (#). Numerical answers can include an error margin, which is written following the correct answer, separated by a colon. So for example, if the correct answer is anything between 1.5 and 2.5, then it would be written as follows {#2:0.5}. This indicates that 2 with an error margin of 0.5 is correct (i.e., the span from 1.5 to 2.5). If no error margin is specified, it will be assumed to be zero.

When was Ulysses S. Grant born? {#1822}
What is the value of pi (to 3 decimal places)? {#3.1415:0.0005}.

Optionally, numerical answers can be written as a span in the following format:



What is the value of pi (to 3 decimal places)? {#3.141..3.142}.

Moodle's web browser interface does not support multiple numerical answers, but Moodle's code does, as does GIFT. This can be used to specify numerical multiple spans, and can be particularly usefully when combined with percentage weight grades. If multiple answers are used, they must be separated by an equal sign, like short answer questions.

When was Ulysses S. Grant born?

Note that since Moodle's browser GUI doesn't support multiple answers for Numerical questions, there's no way to see them or edit them through Moodle. The only way to change a numerical answer beyond the first, is to delete the question and re-import it (or use something like phpMyAdmin).


An essay question is simply a question with an empty answer field. Nothing is permitted between the curly braces at all.

Write a short biography of Ulysses S. Grant


A description "question" has no answer part at all:

The next set of questions will concern arithmetic.


In addition to these basic question types, there are the following options: Line Comments, Question Name, Feedback and Percentage Answer Weight:

Line Comments

Comments that will not be imported into Moodle can be included in the text file. This can be used to provide the author with headers or more information about questions. All lines that start with a double forward slash (not counting tabs or spaces) will be ignored by the filter.

// Subheading: Numerical questions below
What's 2 plus 2? {#4}

Question Name

A question name can be specified by placing it first and enclosing it within double colons.

::Kanji Origins::Japanese characters originally came from what country?
::Thanksgiving Date::The American holiday of Thanksgiving is 
celebrated on the {~second ~third =fourth} Thursday of November.

If no question name is specified, the entire question will be used as the name by default.


Feedback can be included for each answer by following the answer with a number sign (# also known as a hash mark) and the feedback.

What's the answer to this multiple-choice question?
~wrong answer#feedback comment on the wrong answer
~another wrong answer#feedback comment on this wrong answer
=right answer#Very good!
Who's buried in Grant's tomb?
=no one#excellent answer!
=nobody#excellent answer!
Grant is buried in Grant's tomb.
FALSE#Wrong, no one is buried in Grant's tomb.
#Right, well done.

For Multiple Choice questions, feedback is displayed only for the answer the student selected. For short answer, feedback is shown only when students input the corresponding correct answer. For true-false questions, there can be one or two feedback strings. The first is shown if the student gives the wrong answer. The second if the student gives the right answer.

Percentage Answer Weights

Percentage answer weights are available for both Multiple Choice and Short Answer questions. Percentage answer weights can be included by following the tilde (for Multiple Choice) or equal sign (for Short Answer) with the desired percent enclosed within percent signs (e.g., %50%). This option can be combined with feedback comments.

Difficult question.
{~wrong answer ~%50%half credit answer =full credit answer}
::Jesus' hometown::Jesus Christ was from
~Jerusalem#This was an important city, but the wrong answer.
~%25%Bethlehem#He was born here, but not raised here.
~%50%Galilee#You need to be more specific.
=Nazareth#Yes! That's right!
::Jesus' hometown:: Jesus Christ was from
=Nazareth#Yes! That's right!
=%75%Nazereth#Right, but misspelled.
=%25%Bethlehem#He was born here, but not raised here.

Note that the last two examples are essentially the same question, first as multiple choice and then as short answer.

Note that it is possible to specify percentage answer weights that are NOT available through the browser interface. The Match Grades drop-down on the import page determines how these are handled. You can either request that an error be reported or that the answer weight be adjusted to the nearest valid answer weight.

Specify Text Formatting for the Question

The question text (only) may have an optional text format specified. Currently the available formats are moodle (Moodle Auto-Format), html (HTML format), plain (Plain text format) and markdown (Markdown format). The format is specified in square brackets immediately before the question text.(Read more about text formats in Moodle)

[markdown]The *American holiday of Thanksgiving* is celebrated on the
} Thursday of November.

Multiple Answers

The Multiple Answers option is used for multiple choice questions when two or more answers must be selected in order to obtain full credit. The multiple answers option is enabled by assigning partial answer weight to multiple answers, while allowing no single answer to receive full credit.

What two people are entombed in Grant's tomb?
~No one
~%50%Grant's wife
~Grant's father

Note that there is no equal sign (=) in any answer and the answers should total no more than 100%, otherwise Moodle will return an error.

To avoid the problem of students automatically getting 100% by simply checking all of the answers, it is best to include negative answer weights for wrong answers.

What two people are entombed in Grant's tomb?
~%-50%No one
~%50%Grant's wife
~%-50%Grant's father

Special Characters ~ = # { }

The symbols ~ = # { } : control the operation of this filter and cannot be used as normal text within questions. Since these symbols have a special role in determining the operation of this filter, they are called "control characters."

But sometimes you may want to use one of these characters, for example to show a mathematical formula in a question. The way to get around this problem is "escaping" the control characters. This means simply putting a backslash (\) before a control character so that the filter will know that you want to use it as a literal character instead of as a control character.

For example:

Which answer equals 5?
~ \= 2 + 2
= \= 2 + 3
~ \= 2 + 4
Which HTML code bolds text?
~ \</b>
= \<b>
~ \<bt>
~ \<btext>
::GIFT Control Characters::
Which of the following is NOT a control character for the GIFT 
import format?
~ \~ # \~ is a control character.
~ \= # \= is a control character.
~ \# # \# is a control character.
~ \{ # \{ is a control character.
~ \} # \} is a control character.
= \ # Correct! \ (backslash) is not a control character. BUT,
it is used to escape the control characters.

When the question is processed, the backslash is removed and is not saved in Moodle.

Specifying Categories

It is possible to change the category into which the questions are added within the GIFT file. You can change the category as many times as you wish within the file. All questions after the modifier up to the next modifier or the end of the file will be added to the specified category. Up to the first category modifier the category specified on the import screen will be used. Note that for this to work the from file: box must be ticked on the import screen.

To include a category modifier include a line like this (with a blank line before and after):

$CATEGORY: tom/dick/harry

or simply

$CATEGORY: mycategory

...the first example specifies a path of nested categories. In this case the questions will go into harry. The categories are created if they do not exist.

Other Options

Short Answer questions can be made case sensitive by changing "0" to "1" in the following line:

$question->usecase = 0; // Ignore case

Writing Text

Writing text in Moodle works pretty much the way you would expect, but you also have the ability to include "smilies", "URL addresses" and some HTML tags in your text.

Smilies (Emoticons)

Emoticons can be added by typing the associated code. These codes themselves are like little pictures if you turn your head to the left when looking at them.

Some common codes are:

:-) smile sad :-(
:-D big grin 8-. shy
;-) wink :-I blush
:-/ mixed :-X kisses
V-. thoughtful :o) clown
:-P tongue out P-| black eye
B-) cool 8-[ angry
^-) approve xx-P dead
8-) wide eyes |-. sleepy
8-o surprise }-] evil


Any "word" starting with www. or http:// will automatically be turned into a clickable link.


You can use a limited subset of HTML tags to add emphasis to your texts.

HTML tag Produces
<b> bold </b> bold text
<i> italic </i> italic text
<u> underline </u> underlined text
<font color="green"> example </font> example
<ul> <li>one</li> <li>two</li> </ul>

• one

• two

<hr /> ________________

Questions for a Sample Quiz

The following is a sample quiz for a Word course.
You'll notice that this course contains three categories and feedback.

$CATEGORY: formatting
A section break is the same as a page break.
~True#False. A section break can be inserted for the next page, 
for a continuous break on the same page, or break the page for 
an odd or even page.
Which command or key sequence can you use to 
insert a section break for the next page?
=Select Insert, Break, Next Page
~Select Insert, Next Page Break
When you use the Insert, Page Numbers 
command, the page numbers are automatically inserted in a 
header or footer, based on what you specify.
~False#True. When the command is activated, you will be given 
the choice to insert the page number in the header (top of page) 
or footer (bottom of page).
The only number format for page numbering 
is integer numbers (e.g., 1, 2, 3).
~True#False. You can select upper or lowercase roman numerals or 
alpha characters in addition to integer numbers.
=False#That’s correct. You can select upper or lowercase 
roman numerals or alpha characters in addition to integer numbers.
Headers appear across the top of every page, 
whereas Footers appear across the bottom of every page, unless 
otherwise specified.
$CATEGORY: styles
Which of the following statements about styles are true?
~Paragraph styles can include both paragraph-level formatting and 
character-level formatting.
~Applying a paragraph style to a paragraph can change the appearance 
of text that has a character style applied to it.
~Character style can include only character-level formatting.
=All of the above.
Which command would you use to modify a style?
~Select Format, Styles and Formatting

~Click on the down arrow for the style in the Styles and Formatting 
task pane
~Click on the down arrow for the style in the Styles field on the 
Formatting toolbar
=Only a or b
Which command would you use to apply a style?
~Select Format, Styles and Formatting
~Click on the style name in the Styles and Formatting task pane
~Click on the down arrow for the Styles 
field on the Formatting toolbar and then click on the style name
=All of the above
$CATEGORY: columns
How do you insert a column break?
~Select Format, Styles and Formatting
#You must either click on the style name in the Styles and 
Formatting task pane or click on the down arrow for the Styles 
field on the Formatting toolbar and then click on the style name
~Click on the style name in the Styles and Formatting task pane
~Click on the down arrow for the Styles field on the Formatting 
toolbar and then click on the style name
=Either b or c
To insert a vertical line between columns, you must use the 
Format, Columns command.
Write a short essay on the advantages of a word processing 
application such as Microsoft Word
{ }


Print Article


Article ID: 119
Thu 12/5/19 10:51 AM
Fri 3/17/23 12:01 PM