IMS Global QTI 3 Beginner's Guide

IMS Global QTI 3 Beginner's Guide

IMS Candidate Final Public
Version 3.0
IMS Candidate Final Public
Date Issued: 20 July 2020
Status: This document is for review and adoption by the IMS membership.
This version:

IPR and Distribution Notice

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.

IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on IMS's procedures with respect to rights in IMS specifications can be found at the IMS Intellectual Property Rights web page:

The following participating organizations have made explicit license commitments to this specification:

Org name Date election made Necessary claims Type
HMH September 16, 2019 No RF RAND (Required & Optional Elements)

Use of this specification to develop products or services is governed by the license with IMS found on the IMS website:

Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.

The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.


Public contributions, comments and questions can be posted here:

© 2020 IMS Global Learning Consortium, Inc. All Rights Reserved.

Trademark information:


IMS Question and Test Interoperability® QTI® is a technical standard for digital interchange of assessment content (items and tests), assessment usage data and results reporting. QTI 3 also describes digital delivery options for a range of common accessibility needs. This beginner's guide provides a basic introduction to the standard and how best to begin using it.

1. Introduction

The Question and Test Interoperability standard was started in 1999 to help organizations exchange assessment content, in particular for digital assessments. While HTML forms can handle some response information, they are limited in the amount of data that can be stored and exchanged, and don't include the more sophisticated kinds of data needed for more advanced assessments.

QTI is now in its third major version, and includes many sophisticated features that can feel overwhelming to people just beginning to use the QTI standard. This guide gives an overview of the important basics of QTI, which are used to exchange QTI content. For detailed information on all the QTI features, see the QTI 3 Best Practices and Implementation Guide [QTI-IMPL-30] and the Information Model documentation [QTI-INFO-30].

While this guide will try to define terms specific to their use in QTI, you might find it handy to refer to the QTI 3 Terms & Definitions document [QTI-TERM-30].

1.1 Conformance Statements

This document is an informative resource in the Document Set of the QTI v3.0 specification [QTI-30]. As such, it does not include any normative requirements. Occurrences in this document of terms such as MAY, MUST, MUST NOT, SHOULD or RECOMMENDED have no impact on the conformance criteria for implementors of this specification.

2. The Structure of QTI 3 Content

Tests are made up of items (questions with response interactions). In QTI, a test must include at least one test "Part," which has at least one test "Section," which has at least one item. A test can have multiple parts, and the test parts can have multiple sections. Sections can have sections inside them, as long as those sections include one or more items. Below are some possible combinations of test structures.

A very simple test:

Figure 1 Illustration of a simple test structure.
A simple test: a Test contains one Part, which contains one Section, that contains 3 Items.
Figure 2 Illustration of a test structure organized with multiple sections.
Test with multiple sections: a Test contains one Part, which contains 2 Sections. The first section has 3 items, the second section has 2 items.

A test with 2 parts, each part has 2 sections, and one of the sections has 2 "nested" sections:

Figure 3 Illustration of a complex test structure.
A complex test: Test with 2 Parts. The first Part has 2 sections with items. The second Part has 2 sections where the second section has within it 2 subsections which have items.

Items are typically made up of a stimulus (or stimuli), questions (prompts) and a response area (interactions). While a simple question might include a short prompt and a single interaction, questions can also include long text passages as the stimulus, and may have several interactions as part of the same question, or include follow-up questions. A more detailed explanation of the structure of a QTI item can be found in Section 3 of this guide.

In order for the assessment content to be useful to test administrators, it needs to contain the correct answers, and how to score all the parts and questions. QTI has a standardized way of including the response and scoring information inside the content files. No other data files are needed to be referenced to administer the test content.

Once test content has been transferred, either from different organizations or different systems within an organization, it will ultimately need to be presented to candidates during an assessment session. The most common method for delivery today is using a web browser, using HTML and accompanying web standards (CSS, Javascript, etc.) as the delivery markup. Some transformation between the QTI XML file and the delivery markup is required, and indeed is necessary to remove the answers from the delivery file.

The past two versions of QTI have added accessibility supports that increase the ability of QTI content to be presented and responded to by a greater number of candidates. Where possible, the W3C methods for adding accessibility information (or content structure) are used. When specific assessment accessibility requirements are needed (often referred to as "accommodations"), QTI has standardized ways of including modifications to the content for those needs. In general, the W3C accessibility needs are used in even the basic exchange of QTI content, and the QTI-specific accessibility supports are used in the more complicated assessment programs.

The primary W3C accessibility methods used for assessment content include:

  • HTML elements to provide clear hierarchy of content structure
  • Keyboard accessibility (navigation and input) for the presentation interface
  • A declaration of the principal language used for the content within the file
  • Alternative ("alt") text for images
  • Captions for videos
  • Labels for buttons in the presentation interface
  • A subset of WAI-ARIA 1.0 (aria-describedby, aria-hidden, aria-label, aria-labelledby, aria-live, role)
  • Inline SSML to provide pronunciation and timing for screen readers

Note that the above list is not exhaustive, and the WAI-ARIA and SSML markup is generally used in more complicated assessment programs.

3. QTI Items

3.1 What's in an item?

QTI items are stored in a standardized XML file. That file includes all the required QTI elements, and any optional elements. You don't need to worry about where that item fits within the test structure from within the item file itself.

At its most basic, an item includes a question (a prompt) and a way to respond to the question (an interaction). Often the item will include introductory text, graphics, tables, or other information that the question is based on. This is commonly referred to as the stimulus, though no specific stimulus node exists in a QTI item.

In QTI, the stimulus, the prompt, and the interaction are all included in the qti-item-body. There are several other pieces of information that are also included in a QTI item, always listed in the same sequence within the file. The basic item pieces are shown in the illustration below:

Figure 4 An illustration of the assessment item structure.
Assessment Item Document Information, Answers (responseDeclaration), Scoring (outcomeDeclaration), Item Body (stimulus, prompt, interaction), Response Processing.

Below is an example of XML markup in a QTI 3.0 file. It includes all the basic parts shown above, in the same sequence.

<?xml version="1.0" encoding="UTF-8"?>

<qti-response-declaration base-type="identifier" cardinality="single" identifier="RESPONSE">

<qti-outcome-declaration base-type="float" cardinality="single" identifier="SCORE">


<p>Of the following hormones, which is produced by the adrenal glands?</p>
  <qti-choice-interaction max-choices="1" min-choices="1" 
    <qti-simple-choice identifier="A">Epinephrine</qti-simple-choice>
    <qti-simple-choice identifier="B">Glucagon</qti-simple-choice>
    <qti-simple-choice identifier="C">Insulin</qti-simple-choice>
    <qti-simple-choice identifier="D">Oxytocin</qti-simple-choice>




Later we'll go through more detail of each of the XML nodes in the above example, but for now, here is the basic breakdown of the markup:

Line 1 let's everyone know this file is an XML file. You have to include this.

Line 2 has the required qti-assessment-item element. All the item content is contained within this node (it closes on line 39). Within that element, Lines 3–6 include the namespace information, which you must put in to declare that the item content intends to follow the QTI 3 standard. Line 7 has the required identifier attribute, and Line 8 includes the required time-dependent attribute, followed by the optional (but highly recommended) lang attribute to declare the principal language of the item content.

Line 11 starts the qti-response-declaration node, which is used to provide the correct answer[s] for the question.

Line 18 includes the qti-outcome-declaration, which lets us know how to give a score based on the response. This example shows a simple single point awarded for answering the question correctly, but for more complex interaction types, it could have different points for partial credit, or negative points for incorrect responses.

On line 23, the qti-item-body node contains the item content that will be presented to the candidate. Here you'll see familiar HTML elements combined with QTI-specific elements (using the qti- prefix).

The interaction within the qti-item-body starts on line 25, using a qti-choice-interaction element – a specific interaction type that expects the candidate to choose the answer[s] from a set of choices. Each of the choices is made within a qti-simple-choice element.

The qti-response-processing element (line 36) shows you how to score the response made by the candidate. In this example, the markup points you to a pre-made scoring template that handles choice interactions.

Below are the more detailed descriptions of each of the QTI nodes.

3.2 Time Dependency

The time-dependent attribute in the qti-assessment-item node denotes whether the item must be answered within some defined time limit. The attribute must be included. It is a boolean value, and only indicates whether it is time dependent, and does not indicate the amount of time.

Time limits are set for a whole test, a portion of a test, or an individual item. The time is specified in the structure (Test, Part, or Section) that references the object (Part, Section, or Item) that has the time limit.

Use of time limits is optional, and not required for Entry Level conformance. For more information on setting time limits, see the QTI 3 Best Practices and Implementation Guide [QTI-IMPL-30].

3.3 Data Model

The QTI data model has enough complexity to handle simple, single-choice interactions and complex interactions with a set or sets of responses.

After a candidate completes an item, we need to determine if the candidate responded to the interaction correctly. The stored responses from the candidate are "data." In the case of a choice interaction, a single-answer question returns the identifier of the chosen response. A numeric slider interaction returns a number.

Many other interaction types return more complex data for the response. A choice interaction that allows for multiple responses returns a "set" of identifiers (e.g., "identiferA,identifierB,identifierD").

An Order interaction returns an ordered set of identifiers (e.g., "identiferC,identifierA,identifierB"). Some interactions return responses as sets of pairs, an associate interaction, where a response might look like (A, F),(B, D),(E, C).

Use the <qti-response-declaration> element to declare the kind of response the interaction is meant to use. Use the base-type attribute to declare the appropriate data type. Use the cardinality attribute to indicate how many base-type elements to expect and whether the set is ordered.

For a choice interaction, use "identifier" as the base-type, and choose between "single" (one response allowed) and "multiple" (more than one response allowed/required) for the cardinality.

Figure 5 The code from the initial example has a response declaration that looks like this:
<qti-response-declaration base-type="identifier" cardinality="single" identifier="RESPONSE">

From the above code, we can tell we are looking for a single identifier in the response. The nodes inside the response declaration tell us that the correct answer is "A".

For a simple text entry interaction, use "string" as the base-type , and choose "single" for the cardinality for a one word response (see Section 3 of the BPIG for the more complex "record" base-type).

The full list of possible base-type attribute values:

  • boolean
  • directedPair
  • duration
  • file
  • float
  • identifier
  • integer
  • pair
  • point
  • string
  • uri

The cardinality attribute gives the number of base-type elements and if the set is ordered. The possible cardinality values include:

  • multiple
  • ordered
  • record
  • single

3.4 Response Declarations

As mentioned previously, the response declaration holds the answer[s] for an interaction in the item. The identifier attribute in the qti-response-declaration element contains the name that binds (connects) the response declaration to an interaction. This is important because there can be multiple interactions in an item (QTI calls these "composite items"), and you want to make sure the proper answers are connected to the right question.

The qti-correct-response node contains, you guessed it, the correct (or optimal) response for the interaction. The response declaration can contain more nuanced answers, mapping responses to partial credit.

3.5 Response Processing

Response Processing in QTI defines what a system is supposed to do after a candidate has responded to the question (specifically, the interaction(s) in the item).

For the QTI beginner, use the proper predefined response-processing template in your items. This will link the assessment delivery system to standard response processing code used for common interactions. Note you can only use these predefined scoring templates if the item has a single interaction, the response declaration uses "RESPONSE", and the outcome declaration uses the SCORE variable name with a base-type of "float".

The most common templates used are the match_correct and the map_response templates.

The match_correct will check the candidate's response against the correct response, and set the built-in SCORE outcome variable to 1 if correct or 0 if answered incorrectly.

The map_response template will check the candidate's response(s) against the set of mapped responses (as made in the response declaration) to fully correct, partially correct, and fully incorrect responses.

See the specific interaction types later in this guide for which templates to use for response processing.

QTI does allow for more detailed processing of responses (using a response processing scripting language) and complex system behaviors (like feedback for the candidate). See Section 3 of the QTI 3 BPIG [QTI-IMPL-30] for more information about QTI response processing.

3.6 Outcome Declarations

The outcome declaration tells us how to score the response(s) for an interaction. Here you define an internal variable for the tabulation of the outcome of the item. Items that use a numeric value should use the reserved variable name ‘SCORE', which needs to be a  base-type of "float".

Items that have a maximum score (like in a choice interaction that allows for multiple responses), should declare the maximum score by using the "MAXSCORE" variable (base-type of "float"). Note: response processing templates only affect the built-in score– there is no impact on the MAXSCORE.

3.7 Item Body

For non-interaction content within the ItemBody (element qti-item-body) QTI 3 uses a subset of HTML5 tags, the list of which is found in the QTI Information and Binding documentation. The stimulus specific to the item, the prompt (question), and interactions are contained within the item body. This is generally all the content that is presented to the candidate for a test question.

3.7.1 Prompts

There is a QTI specific element called "qti-prompt" that can be used outside or inside an interaction. It is a way of declaring that portion of the content that is a request for a response from the candidate. No interactions are contained within the qti-prompt node. You are not required to use this element in a QTI item. Content within the qti-prompt element is the same subset of HTML5 elements as allowed in QTI content.

3.7.2 Interactions

Interactions use QTI-specific elements to represent the parts of content that candidates are meant to provide a response. The candidates "interact" with the content, and a response is recorded and sent out for response processing.

Below we discuss three of the most common interactions used in QTI: choice, extended text, and text entry interactions. For a complete listing and explanation of all the QTI interactions and QTI Shared Vocabulary (a list of common assessment related classes and custom attributes that promote cross-vendor presentation interoperability), see Section 3 of the QTI 3 Best Practices and Implementation Guide [QTI-IMPL-30]. Choice Interaction

By far the most common type of interaction for tests are choice interactions. In a choice interaction, the candidate is presented with a number of choices and prompted to choose 1 or more of the choices.

The qti-choice-interaction has an optional attribute called "max-choices". The default value for this attribute is "1". If you don't include this attribute, the candidate would only be allowed to select one of the choices. If you want the candidate to be able to select more than one choice, you must include the max-choices attribute and indicate the number of choices the candidate is allowed. Note that "0" actually indicates an unlimited number of choices, not zero choices.

To connect the interaction to the ResponseDeclaration (element qti-response-declaration), use the "response-identifier" attribute, and use the same value as stated in the associated "identifier" within the response declaration. If you're using a response processing template, the identifier will always be "RESPONSE".

The response processing template you should use for choice is the match correct template ( for right or wrong, or the map responses template ( for correct, partial credit, and wrong responses.

The choices within the interaction are listed as separated "simple choices", using the qti-simple-choice element. Each simple choice must have a unique identifier that distinguishes it from the other choices. That identifier will be used as the response, and therefore used in response processing. For the correct response(s), the identifier(s) will need to match the value(s) used in the correct response(s) in the response declaration.

Inside the qti-simple-choice node, you can author any content using the QTI subset of HTML5 content, including any media references.

Here is an example of a choice interaction that allows the candidate to pick one choice (sometimes called single selection choice).

<?xml version="1.0" encoding="UTF-8"?>

<qti-response-declaration base-type="identifier" cardinality="single" identifier="RESPONSE">

<qti-outcome-declaration base-type="float" cardinality="single" identifier="SCORE">

   <p>This is a True/False question?</p>
    <qti-choice-interaction max-choices="1" response-identifier="RESPONSE">
      <qti-simple-choice identifier="true">True</qti-simple-choice>
      <qti-simple-choice identifier="false">False</qti-simple-choice>



And here is an example of a choice interaction that asks the candidate to select multiple simple choices (with a limit of 4 maximum choices). Notice that the response declaration has a cardinality of "multiple" and the correct response requires 3 of the choices to be selected by the candidate.

<?xml version="1.0" encoding="UTF-8"?>
<qti-response-declaration base-type="identifier" cardinality="multiple" 

 <qti-outcome-declaration base-type="float" cardinality="single" identifier="SCORE">

    <p>QTI 3 is a new version released in 2019.</p> 
    <qti-choice-interaction max-choices="3" response-identifier="RESPONSE">
    <qti-prompt><p>Which of the following features are <strong>new</strong> to QTI 
    3?</p> <p>Pick 3 choices.</p></qti-prompt>
      <qti-simple-choice identifier="A">Shared Vocabulary</qti-simple-choice>
      <qti-simple-choice identifier="B">Pineapple Flavored</qti-simple-choice>
      <qti-simple-choice identifier="C">Catalogs for candidate-specific 
      <qti-simple-choice identifier="D">Conformance features 
      <qti-simple-choice identifier="E">A subset of HTML5 


</qti-assessment-item> Extended Text

The extended text interaction allows a candidate to supply a text string for a response. A basic example of the markup is shown below.

<?xml version="1.0" encoding="UTF-8"?>

<qti-response-declaration identifier="RESPONSE" base-type="string" cardinality="single" />

<qti-outcome-declaration base-type="float" cardinality="single" identifier="SCORE" />

  <p>Read this postcard from your English pen-friend, Sam.</p> 
    <blockquote class="postcard">
    <p>Here is a postcard of my town. Please send me<br/>
    A postcard from your town. What size is your<br/>
    Town? What is the nicest part of your town?<br/>
    Where do you go in the evenings?</p>
  <qti-extended-text-interaction response-identifier="RESPONSE">
  <qti-prompt>Write Sam a postcard. Answer the questions. Write 23–30 

Figure 6 A sample item as it might be presented during an assessment.
Writing a Postcard Illustration

The cardinality of "single" in the qti-response-processing element means that a single string of text is used in the response, though it may include multiple words or paragraphs within that string.

The example does not include a response processing node, as automated scoring of extended text responses is beyond the scope of the QTI specification.

There are a number of optional attributes that can be used in the extended text interaction which can help describe delivery expectations. Text Entry

Another interaction that allows shorter test responses is the TextEntryInteraction, which requires the candidate to construct their own response, typically by typing it in.

<?xml version="1.0" encoding="UTF-8"?>

<qti-response-declaration identifier="RESPONSE" base-type="string" cardinality="single">
<qti-mapping default-value="0">
<qti-map-entry map-key="York" mapped-value="1" />
<qti-map-entry map-key="york" mapped-value="0.5" />
<qti-outcome-declaration base-type="float" cardinality="single" identifier="SCORE" />

  <p>Identify the missing word in this famous quote from Shakespeare's Richard 
    <p>Now is the winter of our discontent<br/>
    Made glorious summer by this sun of<qti-text-entry-interaction response-identifier="RESPONSE" />;<br/>
    And all the clouds that lour'd upon our house<br/>
    In the deep bosom of the ocean buried.</p>
template="" />

Which might look something like this when presented to candidates:

Figure 7 A sample text entry item as it might be presented during an assessment.
Richard III Take 3

The scoring for this item could have just matched the correct response (in the response declaration) but actually uses a mapping to enable partial credit for york (spelled without a capital letter). When mapping strings the mapping always takes place case sensitively. This example also illustrates the use of the mapping when the response only has single cardinality.

3.8 Accessibility in Items

You should include at least basic accessibility supports in your QTI content. The item example below shows providing alternate text for an image and supplying captions for the video used as stimulus for this question.

<?xml version="1.0" encoding="UTF-8"?>

<qti-response-declaration identifier="RESPONSE" base-type="string" cardinality="single">

<qti-outcome-declaration base-type="float" cardinality="single" identifier="SCORE" />

  <img src="resources/badger.jpg" alt="Picture of a crows roosting in a tree"
 height="46" width="100"/>

  <p>Crows play an important part of the ecosystem in Corvusville, Pennsylvania.</p>
  <p>Play this short video where a Park Ranger discusses some of the important 
  contributions that crows make to the local ecosystem.</p>

  <video width="320" height="240" controls="controls">
    <source src="resources/crow_movie.mp4" type="video/mp4">
    <source src="resources/crow_movie.ogg" type="video/ogg">
    <track src="resources/subtitles_en.vtt" kind="subtitles" srclang="en">
  Your browser does not support the video tag.
  <p>Based on what you learned from the Ranger in the video, how do you think some kind of 
  wild animal plays an important part of your local environment? Use examples to 
  support your ideas. Write at least 50 words about your animal.</p>

<qti-extended-text-interaction response-identifier="RESPONSE" />

The file itself states the language used for the content of the file in the xml:lang attribute in the opening qti-assessment-item element. Providing this language-of-the-page tag can assist screen readers to properly read the content to candidates that use screen readers.

The image uses the alt attribute to give a short description of the picture. All images should have a description provided unless the graphic is purely decorative. If it is decorative, you should still include the alt attribute but leave the value as empty ( alt="" ) – this will indicate to screen readers they should skip the graphic altogether. If you don't include the empty alt tag, a screen reader will indicate that there is an image present, and the candidate may think they are missing important information but a description was not provided.

The video includes a "track" for captions for the video. Modern web browsers automatically provide a method to access the track information when displaying videos. If you're using a more proprietary method of displaying video content, you may need to do some extra programming to make this track information available for candidates.

4. Tests

4.1 A Test File

An AssessmentTest XML file contains the XML markup that describes specific test structures. A QTI AssessmentTest must always contain at least one TestPart. Each TestPart must contain at least one AssessmentSection. AssessmentSection(s) contain the references to the assessment item(s) that make up the questions of the test.

Below is a very simple test, containing a single part, with a single section, and 4 items.

<?xml version="1.0" encoding="UTF-8"?>
title="T1 - test entry"
xml:lang="en-US" >
    <qti-test-part identifier="testPart-1" navigation-mode="nonlinear" 
        <qti-assessment-section identifier="assessmentSection-1" title="Section 1"
            <qti-assessment-item-ref identifier="t1-test-entry-item1"
            <qti-assessment-item-ref identifier="t1-test-entry-item2"
            <qti-assessment-item-ref identifier="t1-test-entry-item3"
            <qti-assessment-item-ref identifier="t1-test-entry-item4"

4.1.1 Attributes for the qti-assessment-test Element

There are some required attributes for the qti-assessment-test element. You always include the namespace information within the qti-assessment-test element, which is always the same for QTI 3 Test content (see lines 3, 4, 7, and 8).

The identifier attribute should identify this particular test using a unique name.

The title attribute can be any text that helps describe this particular test. This text is often displayed to the candidate, though displaying the text isn't necessarily a delivery requirement.

This example also includes the language of the test (line 0009), which is not required, but is a recommended practice as it is very useful for accessibility purposes.

Remember, an AssessmentTest must contain at least one TestPart. The example above shows a qti-test-part beginning on line 0010 and ending on line 0023.

4.1.2 Test Parts and Test Part attributes

At QTI Test MUST contain at least one part (class TestPart). TestParts contain AssessmentSections as well as other optional part information that regulate that particular part. A test can contain as many parts as you need. You generally use additional test parts if there are differences about how the parts are regulated, but many implementers use them as convenient groupings of items and sections.

There are 3 required attributes for the qti-test-part element, including identifier, navigation-mode, and submission-mode.

The " identifier" attribute should identify a particular test part using a unique name.

The attribute " navigation-mode" allows for 2 values: linear, and nonlinear. The "linear" term means that the items within this test part must be responded to in the order listed, and the candidate cannot jump around between items during the assessment session. The "nonlinear" term allows the candidate to respond to the items in any sequence they choose.Items are still presented to the candidate in the sequence listed but the candidate can skip or jump around the items within the test part. This is important if you have multiple sections within a test part, where candidates would be allowed to move between sections of the test. To restrict moving between sections, either use multiple test parts, or use the "linear" navigation-mode.

The attribute " submission-mode" describes how the items within the test part should be submitted for response processing. The 2 possible values are "individual" and "simultaneous", where "individual" indicates the response can be sent as each item is completed, and "simultaneous" means the responses for all the items are sent when the whole part is completed.

4.1.3 Sections

Sections are listed within test parts. You must put at least one section within a test part, and you can put as many sections within a test part as you need.

The qti-assessment-section element has 3 required attributes, including: identifier, title, and visible.

The identifier attribute should identify this particular section using a unique name.

The title attribute can be any text that helps describe this particular section. This text is often displayed to the candidate, though presenting it to the candidate isn't necessarily a delivery requirement.

The visible attribute must be set to true for the section to be presented to the candidate without conditions. For a deeper understanding of section visibility to candidates, see the QTI Information Model [QTI-INFO-30].

Sections list the items using item references via the qti-assessment-item-ref element. The qti-assessment-item-ref element has 2 required attributes, which are "identifier" and "href". The "identifier" references the identifier within the item file, and the "href" attribute is a URI of the location of the item XML file relative to the test file that is referencing the item.

5. Content Packaging

QTI is primarily a transfer protocol, created to move assessment content from one place to another. The assessment content is put together in a Content Package, which includes a manifest that lists all the resources inside a package. The assets (resources) of the package, and the manifest are collected together in a .zip file.

A package can include all the parts of a whole test, multiple tests, or any of the pieces of assessment content. Sometimes just items are put into exchangeable packages, which is also known as an "item bank."

5.1 Making a Manifest

A content package must always include a manifest, which lists all the assets contained within the package. The name of the manifest MUST be " imsmanifest.xml".

Below is a basic manifest that includes 3 items, an image, and the test these items go with (in total 5 resources).

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns="" 
   <schema>QTI Package</schema> 
  <resource identifier="t1-test-entry-item1" type="imsqti_item_xmlv3p0" 
        <file href="items/choice-single-cardinality.xml"/>
    <dependency identifierref="image_resource_1"/>
  <resource type="webcontent" identifier="image_resource_1" 
      <file href="items/images/badger.svg">
  <resource identifier="t1-test-entry-item2" type="imsqti_item_xmlv3p0" 
        <file href="items/choice-multiple-cardinality.xml"/>
  <resource identifier="t1-test-entry-item3" type="imsqti_item_xmlv3p0" 
        <file href="items/text-entry.xml"/>
  <resource identifier="t1-test-entry-item4" type="imsqti_item_xmlv3p0" 
        <file href="items/extended-text.xml"/>
  <resource identifier="t1-test-entry" type="imsqti_test_xmlv3p0" href="assessment.xml"> 
     <file href="assessment.xml"/>

You must include at least some basic metadata about the manifest, which tells the receiving party that this is a QTI Package, using version 3.0.0 of the specification (lines 7 & 8).

All the locations of the resources are listed relative to the imsmanifest.xml file, which is at the top level of the package (not in a subdirectory).

The resource "t1-test-entry-item1" has an image, which is listed as a "dependency" within the item's resource node. That image is then listed as its own resource. They are connected together by the name of the identifier of the image.

The "type" attribute in the resource element uses one of the enumerated acceptable values, which can be found in the QTI 3 profile of the Content Package v1.1 standard. For quick reference, here is a short list of the most common types:

QTI object <resource> type value
Test imsqti_test_xmlv3p0
Section imsqti_section_xmlv3p0
Item imsqti-item_xmlv3p0
Images and media webcontent
Shared Stimulus imsqti_stimulus_xmlv3p0
CSS 3 stylesheet css3

The above package example includes a combination of tests, items, and images and is therefore listed as a "QTI Package" in the <schema> node. If you were to create special packages of just items or images or tests, you should state what kind of package it is in the manifest's <schema> node. Below is the list of acceptable kinds of packages for QTI 3:

  • "QTI Package"
  • "QTI Test Bank"
  • "QTI Item Bank"
  • "QTI Object Bank"
  • "QTI Test"
  • "QTI Section"
  • "QTI Item"

A "Bank" indicates it is a collection of just those structures, without the other QTI structures that could be associated with them. For example, an "Item Bank" would include only a collection of items (and their dependent resources) without describing how they fit into a test.

6. Other QTI Documentation

This QTI 3 Beginner's Guide covers only the basic, required features of QTI 3. The following documentation will help you work with the more advanced features that QTI 3 allows.

The QTI 3 Best Practices and Implementation Guide [QTI-IMPL-30] covers the full QTI specification, and includes recommended and best practice guidance on implementing QTI with the greatest prospect of interoperability. It includes implementation and guidance in the following areas:

  • Conventions and Standards within QTI 3
  • Full descriptions of QTI interactions, including Portable Custom Interactions (PCI)
  • Customized Response Processing
  • Adaptive Items
  • Feedback
  • Item Templates
  • Rubric Blocks (also used for candidate instructions)
  • Shared Stimulus
  • Companion Materials
  • Assessment Session Control
  • Catalogs for including dormant candidate profile content
  • Personal Needs and Preferences (PNP) for candidate accessibility and accommodation profiles
  • Test Structures
  • Packaging & Metadata

The QTI 3 Terms & Definitions [QTI-TERM-30] document provides an easy method for looking up the terms used across the QTI 3 documents suite.

The QTI 3 Information Model and Binding [QTI-INFO-30] document goes into the deep technical details around the QTI 3 specification. It includes the information model for items, stimulus, sections, parts and whole tests used in assessment. Formally these are known as the Assessment, Section and Item (ASI) features.

The  QTI 3 Overview [QTI-OVIEW-30] document provides some background on the purpose of QTI 3, including use cases.

The APIP to QTI 3 Migration Guide [QTI-MIGR-30] describes how to transform the Accessible Portable Item Protocol (APIP) content into QTI 3 content. Knowledge of APIP is required to effectively use this resource.

A. Revision History

This section is non-normative.

A.1 Version History

Version No. Release Date Comments
IMS Public Candidate Final 3.0 20 July 2020 The first release of this document as part of the QTI v3 specification set.

B. References

B.1 Normative references

QTI Best Practice and Implementation Guide v3. IMS Global Learning Consortium. April 2020. IMS Final Release. URL:
QTI Assessment Test, Section and Item Information Model v3. IMS Global Learning Consortium. April 2020. IMS Final Release. URL:
QTI Migration Guide v3. IMS Global Learning Consortium. April 2020. IMS Final Release. URL:
QTI Overview v3. IMS Global Learning Consortium. April 2020. IMS Final Release. URL:
QTI Terms and Definitions v3. IMS Global Learning Consortium. April 2020. IMS Final Release. URL:
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL:

C. List of Contributors

The following individuals contributed to the development of this document:

Name Organization Role
Arjan AarninkCito
Vijay AmbatiACT, Inc.
Jérôme BogaertsOpen Assessment Technologies
Shiva BojjawarMcGraw-Hill Education
Catriona BuhayarNWEA
Jason CarlsonACT, Inc.
Gary DriscollETS
Michael FingerMeasured Progress
Paul GrudnitskiPearson
Mark HakkinenETS
Thomas HoffmannETSEditor
Rob HowardNWEA
Stephen KacsmarkInstructure
Justin MarksNWEA
Amy MarrichOpen Assessment Technologies
Mark McKellIMS Global
Mark MolenaarOpen Assessment Technologies
Brian MottersheadRiverscape Software
Nate OberQuestar
Padraig O'hiceadhaHoughton Mifflin Harcourt
Madeline RothbergWGBH
Colin SmytheIMS Global
Tjeerd Hans TerpstraCito
Travis ThompsonData Recognition Corporation
Jason WhiteETS

IMS Global Learning Consortium, Inc. ("IMS Global") is publishing the information contained in this document ("Specification") for purposes of scientific, experimental, and scholarly collaboration only.

IMS Global makes no warranty or representation regarding the accuracy or completeness of the Specification.

This material is provided on an "As Is" and "As Available" basis.

The Specification is at all times subject to change and revision without notice.

It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.

IMS Global would appreciate receiving your comments and suggestions.

Please contact IMS Global through our website at

Please refer to Document Name: IMS Global QTI 3 Beginner's Guide 3.0

Date: 20 July 2020