Go behind the scenes of Google Search and listen to our SEO podcast, Search Off the Record.

Practice problems

To help students, teachers and parents find your education and learning material online easier, you can use structured data to mark up practice problems. This guide explains how you can implement this schema on your web page. Adding structured data makes your practice problems eligible to appear in a special user experience in Google Search results.

Practice problems rich result in Google Search

How to add structured data

Structured data is a standardized format for providing information about a page and classifying the page content. If you're new to structured data, you can learn more about how structured data works.

Here's an overview of how to build, test, and release structured data. For a step-by-step guide on how to add structured data to a web page, check out the structured data codelab.

  1. Add the required properties. Based on the format you're using, learn where to insert structured data on the page.
  2. Follow the guidelines.
  3. Validate your code using the Rich Results Test.
  4. Deploy a few pages that include your structured data and use the URL Inspection tool to test how Google sees the page. Be sure that your page is accessible to Google and not blocked by a robots.txt file, the noindex tag, or login requirements. If the page looks okay, you can ask Google to recrawl your URLs.
  5. To keep Google informed of future changes, we recommend that you submit a sitemap. You can automate this with the Search Console Sitemap API.

Feature availability

The practice problems feature is available in English in all regions where Google Search is available. The feature is only available for math and science topics, for multiple choice and checkbox question types, and on desktop and mobile.

Examples

Quiz with only one question

Here's an example of a quiz that only has one question associated with it. There is only one correct answer.

<html>
  <head>
    <title>Quiz about fractions</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Quiz",
      "name": "Quiz about fractions",
      "hasPart": {
        "@type": "Question",
        "typicalAgeRange": "7-12",
        "educationalAlignment": [
          {
            "@type": "AlignmentObject",
            "alignmentType": "educationalSubject",
            "targetName": "Mathematics"
          },
          {
            "@type": "AlignmentObject",
            "alignmentType": "educationalSubject",
            "targetName": "Algebra"
          },
          {
            "@type": "AlignmentObject",
            "alignmentType": "educationalLevel",
            "targetName": "Grade 5 » Number and Operations—Fractions » Apply and extend previous understandings of multiplication and division. » 3",
            "educationalFramework": "Common Core",
            "targetUrl": "http://www.corestandards.org/Math/Content/5/NF/B/3/"
          }
        ],
        "about": {
          "@type": "Thing",
          "name": "Fractions"
        },
        "educationalLevel": "intermediate",
        "eduQuestionType": "Multiple choice",
        "learningResourceType": "Practice problem",
        "assesses": "Multiplying fractions by whole numbers",
        "name": "Choose the model",
        "comment": {
          "@type": "Comment",
          "text": "This is a hint about the question."
        },
        "encodingFormat": "text/markdown",
        "text": "Which model represents the product $$2 * \\frac{2}{3}$$?",
        "suggestedAnswer": [
          {
            "@type": "Answer",
            "position": 0,
            "encodingFormat": "text/html",
            "text": "<img src=\"www.test.com/practice-problems-fractions/…image2.png\" alt=\"Answer 2\" />",
            "comment": {
              "@type": "Comment",
              "text": "This is a hint about the answer."
            }
          }
        ],
        "acceptedAnswer": {
          "@type": "Answer",
          "position": 1,
          "encodingFormat": "text/html",
          "text": "<img src=\"www.test.com/practice-problems-fractions/…image1.png\" alt=\"Answer 1\" />",
          "comment": {
            "@type": "Comment",
            "text": "This is a hint about the answer."
          },
          "answerExplanation": {
            "@type": "Comment",
            "text": "This is a full explanation on how this answer was achieved."
          }
        }
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Quiz with only one question and checkbox answers

Here's an example of a quiz that only has one question associated with it. There are multiple correct answers.

<html>
  <head>
    <title>Quiz about laws of Physics</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Quiz",
      "name": "Quiz about laws of physics",
      "about": {
        "@type": "Thing",
        "name": "Laws of Physics And Applications"
      },
      "educationalLevel": "intermediate",
      "assesses": "Laws of physics",
      "hasPart": {
        "@type": "Question",
        "eduQuestionType": "Checkbox",
        "learningResourceType": "Practice problem",
        "name": "Laws of Physics And Applications",
        "typicalAgeRange": "12-15",
        "text": "Identify laws of Physics. (Select all valid answers)",
        "suggestedAnswer": [
          {
            "@type": "Answer",
            "position": 0,
            "text": "Nevada's Law",
            "comment": {
              "@type": "Comment",
              "text": "This is a hint"
            }
          },
          {
            "@type": "Answer",
            "position": 2,
            "text": "EUA law",
            "comment": {
              "@type": "Comment",
              "text": "This is a hint"
            }
          }
        ],
        "acceptedAnswer": [
          {
            "@type": "Answer",
            "position": 1,
            "text": "Newton's law",
            "comment": {
              "@type": "Comment",
              "text": "This is a hint"
            },
            "answerExplanation": {
              "@type": "Comment",
              "text": "This is a full explanation on how this answer was achieved."
            }
          },
          {
            "@type": "Answer",
            "position": 3,
            "text": "Ohm's law",
            "comment": {
              "@type": "Comment",
              "text": "This is a hint"
            },
            "answerExplanation": {
              "@type": "Comment",
              "text": "This is a full explanation on how this answer was achieved."
            }
          }
        ]
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Quiz with multiple questions

Here's an example of a quiz that has multiple question and answer pairs.

<html>
  <head>
    <title>Quiz about displacement, velocity and time</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Quiz",
      "typicalAgeRange": "7-12",
      "educationalLevel": "intermediate",
      "assesses": "Velocity and speed",
      "educationalAlignment": [
        {
          "@type": "AlignmentObject",
          "alignmentType": "educationalSubject",
          "targetName": "Science"
        },
        {
          "@type": "AlignmentObject",
          "alignmentType": "educationalSubject",
          "targetName": "Physics"
        }
      ],
      "name": "Quiz about displacement, velocity and time",
      "about": {
        "@type": "Thing",
        "name": "Displacement, velocity, and time"
      },
      "hasPart": [
        {
          "@type": "Question",
          "eduQuestionType": "Multiple choice",
          "learningResourceType": "Practice problem",
          "name": "Average velocity and average speed from graphs",
          "text": "A bug crawls on a wall. What is the average velocity of the bug between the times $$t = 1s$$ and $$t = 10s$$?",
          "comment": {
            "@type": "Comment",
            "text": "This is a hint about the question."
          },
          "encodingFormat": "text/markdown",
          "suggestedAnswer": [
            {
              "@type": "Answer",
              "position": 0,
              "encodingFormat": "text/markdown",
              "text": "$$0.5 \\frac{m}{s}$$",
              "comment": {
                "@type": "Comment",
                "text": "This is a hint"
              }
            },
            {
              "@type": "Answer",
              "position": 1,
              "encodingFormat": "text/markdown",
              "text": "$$-0.5 \\frac{m}{s}$$",
              "comment": {
                "@type": "Comment",
                "text": "This is a hint"
              }
            },
            {
              "@type": "Answer",
              "position": 3,
              "encodingFormat": "text/markdown",
              "text": "$$1.5 \\frac{m}{s}$$",
              "comment": {
                "@type": "Comment",
                "text": "This is a hint"
              }
            }
          ],
          "acceptedAnswer": {
            "@type": "Answer",
            "position": 2,
            "encodingFormat": "text/markdown",
            "text": "$$0 \\frac{m}{s}$$",
            "comment": {
              "@type": "Comment",
              "text": "This is a hint"
            }
          }
        },
        {
          "@type": "Question",
          "eduQuestionType": "Multiple choice",
          "learningResourceType": "Practice problem",
          "name": "Average velocity and average speed from graphs",
          "text": "A swimmer motion is shown on the following graph of position x vs. time t. What is the average speed?",
          "encodingFormat": "text/markdown",
          "comment": {
            "@type": "Comment",
            "text": "This is a hint about the question."
          },
          "suggestedAnswer": [
            {
              "@type": "Answer",
              "position": 0,
              "text": "1",
              "encodingFormat": "text/html",
              "comment": {
                "@type": "Comment",
                "text": "This is a hint"
              }
            },
            {
              "@type": "Answer",
              "position": 2,
              "text": "3",
              "encodingFormat": "text/html",
              "comment": {
                "@type": "Comment",
                "text": "This is a hint"
              }
            },
            {
              "@type": "Answer",
              "position": 3,
              "text": "4",
              "encodingFormat": "text/html",
              "comment": {
                "@type": "Comment",
                "text": "This is a hint"
              }
            }
          ],
          "acceptedAnswer": {
            "@type": "Answer",
            "position": 1,
            "text": "2",
            "encodingFormat": "text/html",
            "comment": {
              "@type": "Comment",
              "text": "This is a hint"
            },
            "answerExplanation": {
              "@type": "Comment",
              "text": "This is a full explanation on how this answer was achieved."
            }
          }
        }
      ]
    }
    </script>
  </head>
  <body>
  </body>
</html>

Guidelines

You must follow these guidelines to be eligible to appear in the Practice problems experience on Google:

Technical guidelines

  • Put structured data on the most detailed leaf page possible. Don't add structured data to pages without practice problems.
  • Add a Quiz property for each practice problem that you want to be featured. The structured data must appear on the same page as the practice problem a user can interact with on your web page.
  • Your web page includes all required structured data properties.
  • You must mark up a minimum of two practice problems per topic (for example, two practice problems for the concept "quadratic equation"). Focus on marking up the concepts and problems that you want to be eligible to appear in the Practice Problem rich result. They can be on separate pages.
  • The practice problems on your site must be accessible to users, meaning not held only in a data file or PDF.
  • Ensure that your host load settings allow for frequent crawls.
  • If you have several copies of the same practice problem on your site hosted under different URLs, use canonical URLs on each copy of the page.
  • For text-only practice problems:
    • The question must be limited to 320 characters max.
    • Multiple choice answers must be limited to 70 characters max, per answer.
  • For practice problems with text and an image:
    • The question must be limited to 160 characters max.
    • The image max height must be 200px.
  • Accessibility: We don’t allow practice problems that are hidden behind a login or paywall. Once users navigate from the feature on Google to your site, the practice problem content must be accessible to them. Additional content can be behind a login or paywall.
  • Misrepresentation: We don't allow practice problems that are intended to deceive or mislead users. This includes inaccurately marking up topics that are unassociated to the question.

Content guidelines

We created these Practice problems content guidelines to ensure that our users are connected with learning resources that are relevant. If we find content that violates these policies, we'll respond appropriately, which may include taking manual action and removing your pages from appearing in the practice problems experience on Google.

Profanity and vulgar language

We don't allow practice problems that contain obscene, profane, or offensive language.

Advertisements disguised as a practice problem

We don't allow promotional content disguised as a practice problem, such as those posted by a third party (for example, affiliate programs).

If Google receives a complaint that content in a practice problem may violate the law, the content will be handled in accordance with Search policies.

Quality

  • You are responsible for the accuracy and quality of your practice problems through this feature. If a certain amount of your data is found to be inaccurate based on our quality review processes, then either all or a subset of your problems may be removed from the feature until you resolve the issues depending on the severity. This applies to the accuracy of:
    • The concept marked up as it relates to the question being asked
    • Question, answer choice, hint, and answer explanation formatting and accuracy
    • Correct order of answers (for example, don't put "None of the above" as the first option)
    • Image or formula quality and accuracy as it relates to the question
    • Symbolic math rendering and delimiter implementation

Mark up educational standards

Learning standards are the learning goals for what students should know and be able to do at each grade level. Learning standards have multiple uses, such as linking to content or making up a part of a learning progression. Marking up the standards (found under the educationalAlignment and hasPart.educationalAlignment fields) associated with online learning material helps Google organize and surface the information in the most useful way to people who may Search for learning content based on these standards. Here's a high-level overview of the schema:

Here are a few examples of standards:

  • Common Core State Standards
  • Texas Essential Knowledge and Skills (TEKS)
  • Virginia Standards of Learning (SOL)
  • BC Performance Standards
  • Alberta Programs of Studies
  • The Australian Curriculum (ACARA)
  • The Victorian Curriculum (F-10)
  • UK National Curriculum

Structured data type definitions

You must include the required properties for your content to be eligible for display as a rich result. You can also include the recommended properties to add more information to your structured data, which could provide a better user experience.

Quiz

A Quiz is a grouping of practice problems (one or more), which are typically about the same concept or subject.

The full definition of Quiz is provided on schema.org.

Required properties
about Thing

Nested information about the underlying concept behind the Quiz. If there's an hasPart.about property for the question, this property isn't required.

{
  "@type": "Quiz",
  "about": {
    "@type": "Thing"
  }
}
about.name Text

Nested information about the underlying concept behind the Quiz. If there's an hasPart.about.name property for the question, this property isn't required. Multiple entries of this property is allowed.

{
  "@type": "Quiz",
  "about": {
    "@type": "Thing",
    "name": "Fractions"
  }
}
hasPart Question

Nested information about the specific practice problem for the quiz. Use one hasPart property to represent a single practice problem.

To include multiple practice problems for a single quiz, repeat this property.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question"
  }
}
hasPart.acceptedAnswer Answer

The correct answer for the question. If there are multiple correct answers for a single question, repeat this property.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "acceptedAnswer": {
      "@type": "Answer"
    }
  }
}
hasPart.eduQuestionType Text

The type of practice problem. This is critical for Google Search to render and check correct and incorrect answers. For each question, Google will show a minimum of two answers and a maximum of six answers.

Use one of the supported values:

  • Multiple choice: There's only one correct answer. The choices are shown as a collection of radio buttons, and the user can only select one.
  • Checkbox: There's more than one correct answer. The choices are shown as a collection of checkboxes, and the user can check all that apply.
{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "eduQuestionType": "Multiple choice"
  }
}
hasPart.learningResourceType Text

The type of this learning resource. Use this fixed value: Practice problem

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "learningResourceType": "Practice problem"
  }
}
hasPart.suggestedAnswer Answer

All the other correct or incorrect answers for the question. To specify multiple answers, repeat this property, along with its nested properties.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "suggestedAnswer": {
      "@type": "Answer",
    }
  }
}
hasPart.suggestedAnswer.text Text

The content of the answer. You can use Markdown or HTML. Learn how to encode practice problems in HTML or Markdown.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "suggestedAnswer": {
      "@type": "Answer",
      "text": "$$x = 1$$"
    }
  }
}
hasPart.text Text

The content of the question. You can use Markdown or HTML. Learn how to encode practice problems in HTML or Markdown.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "text": "Which diagram represents the product $$3 *\frac{2}{3}$$?"
  }
}
Recommended properties
educationalAlignment AlignmentObject

The quiz's alignment to an established educational framework. This property can be repeated to align the quiz with a field of study or domain, and the target grade or educational standard. You can add educational alignments directly on the Quiz, or more specifically in the Question.

{
  "@type": "Quiz",
  "educationalAlignment": []
}
educationalAlignment.alignmentType Text

A category of alignment between the learning resource and the framework node for the quiz. Google Search uses the LRMI standard.

Repeat the alignmentType to specify both the field of study and the target grade or educational standard.

  • To specify the field of study or domain of the quiz, set the alignmentType to educationalSubject.
  • To specify the target grade or educational standard of the quiz, set the alignmentType to educationalLevel.

Multiple objects can be inserted in case other domains and subdomains exist. To specify concepts, use the about property instead.

Here's how to specify both the educationalSubject and educationalLevel.

{
  "@type": "Quiz",
  "educationalAlignment": [
    {
      "@type": "AlignmentObject",
      "alignmentType": "educationalSubject",
      "targetName": "Mathematics"
    },
    {
      "@type": "AlignmentObject",
      "alignmentType": "educationalLevel",
      "targetName": "Fifth grade"
    }
  ]
}

To refer to standards, such as the "Common core", use the educationalAlignment.educationalFramework and educationalAlignment.targetUrl properties.

{
  "@type": "Quiz",
  "educationalAlignment: [
  {
    "@type": "AlignmentObject",
    "alignmentType": "educationalLevel",
    "educationalFramework": "Common Core",
    "targetName": "Grade 8: Expressions and Equations",
    "targetUrl": "http://www.corestandards.org/Math/Content/8/EE/A/2/"
    }
  ]
}
educationalAlignment.educationalFramework Text

The framework that the quiz is aligned to. For example, "Common Core". For more information about why this property is important, see Mark up educational standards. Multiple entries of this property is allowed.

educationalAlignment.targetName Text

The name of a node of an established educational framework. For example: "Grade 8: Expressions and Equations".

{
  "@type": "Quiz",
  "educationalAlignment: [
  {
    "@type": "AlignmentObject",
    "targetName": "Grade 8: Expressions and Equations"
    }
  ]
}
educationalAlignment.targetUrl URL

The URL of the specific educational framework. For example, the URL for the Common Core standard on 8th grade math.

{
  "@type": "Quiz",
  "educationalAlignment: [
  {
    "@type": "AlignmentObject",
    "targetUrl": "http://www.corestandards.org/Math/Content/8/EE/A/2/"
    }
  ]
}
educationalLevel Text

The level of difficulty of the quiz. Here are a few example values that can be used:

  • beginner
  • intermediate
  • advanced
{
  "@type": "Quiz",
  "educationalLevel": "beginner"
}
hasPart.about Thing

Nested information about the underlying concept behind the question. If the about property isn't specified for the Quiz, then hasPart.about is required. Multiple entries of this property is allowed.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "about": {
      "@type": "Thing"
    }
  }
}
hasPart.about.name Text

The title of the underlying concept behind the question. If the about.name property isn't specified for the Quiz, then hasPart.about.name is required.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "about": {
      "@type": "Thing",
      "name": "Fractions"
    }
  }
}
hasPart.acceptedAnswer.answerExplanation Comment

A full explanation about how to achieve the result depicted in this answer. This is typically only used for correct answers. Use the hasPart.suggestedAnswer.comment.text property inside for the content of the explanation.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "acceptedAnswer": {
      "@type": "Answer",
      "answerExplanation": {
        "@type": "Comment"
       }
    }
  }
}
hasPart.acceptedAnswer.answerExplanation.text Text

The content of explanation for the suggested answer. To change the content format (HTML or Markdown), use encodingFormat. Learn how to encode practice problems in HTML or Markdown.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "suggestedAnswer": {
      "@type": "Answer",
      "answerExplanation": {
        "@type": "Comment",
        "text": "*In order to get to this result..*",
        "encodingFormat": "text/markdown"
       }
    }
  }
}
hasPart.acceptedAnswer.comment Comment

A hint or suggestion about the answer that may be used to understand why it is correct. Use the hasPart.acceptedAnswer.comment.text property inside for the hint content.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "acceptedAnswer": {
      "@type": "Answer",
      "comment": {
        "@type": "Comment"
      }
    }
  }
}
hasPart.acceptedAnswer.comment.text Text

The content of the hint or suggestion for the suggested answer. To change the content format (HTML or Markdown), use encodingFormat. Learn how to encode practice problems in HTML or Markdown.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "acceptedAnswer": {
      "@type": "Answer",
      "comment": {
        "@type": "Comment",
        "text": "<p>This is a hint</p>"
      }
    }
  }
}
hasPart.acceptedAnswer.position Integer

The position of this answer when it's displayed to the user.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "acceptedAnswer": {
      "@type": "Answer",
      "position": "2"
    }
  }
}
hasPart.assesses DefinedTerm or Text

The skill(s) required to solve the problem. Filling this in can enhance discoverability.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "assesses": "Multiplying fractions by whole numbers"
  }
}
hasPart.comment Comment

A hint or suggestion about the question that may be used to solve it. Use the hasPart.comment.text property inside for the hint content.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "comment": {
      "@type": "Comment"
    }
  }
}
hasPart.comment.text Text

The content of the hint or suggestion for the question. To change the content format (HTML or Markdown), use encodingFormat. Learn how to encode practice problems in HTML or Markdown.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "comment": {
      "@type": "Comment",
      "text": "<p>This is a hint</p>"
    }
  }
}
hasPart.educationalAlignment AlignmentObject

The question's alignment to an established educational framework. This property overrides educational alignments that were added on the Quiz object.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "educationalAlignment": []
}
hasPart.educationalAlignment.alignmentType Text

A category of alignment between the learning resource and the framework node for the question. Google Search uses the LRMI standard.

Repeat the alignmentType to specify both the field of study and the target grade or educational standard.

  • To specify the field of study or domain of the question, set the alignmentType to educationalSubject.
  • To specify the target grade or educational standard of the question, set the alignmentType to educationalLevel.

Multiple objects can be inserted in case other domains and subdomains exist. To specify concepts, use the hasPart.about property instead.

Here's how to specify both the educationalSubject and educationalLevel.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "educationalAlignment": [
      {
      "@type": "AlignmentObject",
      "alignmentType": "educationalSubject",
      "targetName": "Mathematics"
      },
      {
      "@type": "AlignmentObject",
      "alignmentType": "educationalLevel",
      "targetName": "Fifth grade"
      }
    ]
  }
}

To refer to standards, such as the "Common core", use the hasPart.educationalAlignment.educationalFramework and hasPart.educationalAlignment.targetUrl properties.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "educationalAlignment: [
      {
      "@type": "AlignmentObject",
      "alignmentType": "educationalLevel",
      "educationalFramework": "Common Core",
      "targetName": "Grade 8: Expressions and Equations",
      "targetUrl": "http://www.corestandards.org/Math/Content/8/EE/A/2/"
      }
    ]
  }
}
hasPart.educationalAlignment.educationalFramework Text

The framework that the question is aligned to. For example, "Common Core". For more information about why this property is important, see Mark up educational standards. Multiple entries of this property is allowed.

hasPart.educationalAlignment.targetName Text

The name of a node of an established educational framework. For example: "Grade 8: Expressions and Equations".

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "educationalAlignment: [
      {
      "@type": "AlignmentObject",
      "alignmentType": "educationalLevel",
      "targetName": "Grade 8: Expressions and Equations"
      }
    ]
  }
}
hasPart.educationalAlignment.targetUrl URL

The URL of the specific educational framework that applies to the question. For example, the URL for the Common Core standard on 8th grade math.

hasPart.educationalLevel Text

The level of difficulty of the question, in text form. Here are a few example values that can be used:

  • beginner
  • intermediate
  • advanced
{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "educationalLevel": "beginner"
  }
}
hasPart.name Text

An overview description of the question. Don't include the full content of the question; use hasPart.text instead.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "name": "Question about fractions"
  }
}
hasPart.suggestedAnswer.comment Comment

A hint or suggestion about the answer that may be used to understand why it is correct or incorrect. Use the hasPart.suggestedAnswer.comment.text property inside for the hint content.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "suggestedAnswer": {
      "@type": "Answer",
      "comment": {
        "@type": "Comment"
      }
    }
  }
}
hasPart.suggestedAnswer.comment.text Text

The content of the hint or suggestion for the suggested answer. To change the content format (HTML or Markdown), use encodingFormat. Learn how to encode practice problems in HTML or Markdown.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "suggestedAnswer": {
      "@type": "Answer",
      "comment": {
        "@type": "Comment",
        "text": "<p>This is a hint</p>"
      }
    }
  }
}
hasPart.suggestedAnswer.encodingFormat Text

The MIME format used to encode the text property. If no encodingFormat is specified, the default value is text/html. Use one of the following values:

  • text/markdown
  • text/html
{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "suggestedAnswer": {
      "@type": "Answer",
      "encodingFormat": "text/html"
    }
  }
}

Learn how to encode practice problems in HTML or Markdown.

hasPart.suggestedAnswer.position Integer

The position of this answer when it is displayed to the user.

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "suggestedAnswer": {
      "@type": "Answer",
      "position": "0"
    }
  }
}
hasPart.typicalAgeRange Text

The typical range of ages that the question is intended for. For example: 7-12 or 18-

{
  "@type": "Quiz",
  "hasPart": {
    "@type": "Question",
    "typicalAgeRange": "7-12"
  }
}
name Text

The title of the quiz.

{
  "@type": "Quiz",
  "name": "Negative exponents review"
}
typicalAgeRange Text

The typical range of ages the quiz is intended for. For example: 7-12 or 18-

{
  "@type": "Quiz",
  "typicalAgeRange": "7-12"
}

Encoding practice problems in HTML or Markdown

Google Search supports Markdown (CommonMark flavor) and HTML when encoding Question, Answer, and Comment. We restrict the set of constructs to:

  • Headers
  • Line breaks
  • Lists (ordered and unordered)
  • Paragraphs
  • Bold
  • Italic
  • Images
  • Formulas in LaTex

CSS or JavaScript is ignored. Google won't display questions that contain unsupported HTML tags.

How to specify the format

To specify which encoding format you're using, use the encodingFormat property and set the value to either "text/html" for HTML or "text/markdown" for Markdown.

Here's an example of a question that's set to the Markdown format:

{
  "@type": "Question",
  "name": "Average velocity and average speed from graphs",
  "text": "What is the average velocity [..] between the times $$t = 4s$$ and $$t = 10s$$?",
  "encodingFormat": "text/markdown"
  ..
  ..
}

If no encodingFormat is specified, "text/html" is assumed.

Formulas

To specify a formula, use the LaTex format. You must use the double dollar sign ($$) to embed formulas. For example:

"<p>Please solve: $$2x^2 = 18$$</p>"

Troubleshooting

If you're having trouble implementing or debugging structured data, here are some resources that may help you.