Schema.org · Schema

Schema.org HowTo

Instructions that explain how to achieve a result by performing a sequence of steps.

Schema.orgStructured DataLinked DataJSON-LDVocabularySEOWeb StandardsRDFOntology

Properties

Name Type Description
@type string The Schema.org type.
@context string
name string The name of the how-to guide.
description string A description of the how-to guide.
url string URL of the how-to guide.
image object An image of the completed how-to.
totalTime string The total time required to perform all steps in ISO 8601 duration format.
prepTime string The length of time it takes to prepare the items in ISO 8601 duration format.
performTime string The length of time it takes to perform instructions in ISO 8601 duration format.
estimatedCost object The estimated cost of the supply or supplies consumed when performing instructions.
supply object A sub-property of instrument. A supply consumed when performing instructions or a direction.
tool object A sub-property of instrument. An object used (but not consumed) when performing instructions.
step array The steps in the how-to.
yield string The quantity that results by performing instructions.
author object The author of this how-to guide.
datePublished string Date of first publication.
video object A video of the how-to.
sameAs object URL of a reference Web page that unambiguously indicates the item's identity.
View JSON Schema on GitHub

JSON Schema

schema-org-how-to-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.org/schemas/how-to.json",
  "title": "Schema.org HowTo",
  "description": "Instructions that explain how to achieve a result by performing a sequence of steps.",
  "type": "object",
  "required": ["@type", "name", "step"],
  "properties": {
    "@type": {
      "type": "string",
      "description": "The Schema.org type.",
      "enum": ["HowTo", "Recipe"]
    },
    "@context": {
      "type": "string",
      "default": "https://schema.org"
    },
    "name": {
      "type": "string",
      "description": "The name of the how-to guide."
    },
    "description": {
      "type": "string",
      "description": "A description of the how-to guide."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "URL of the how-to guide."
    },
    "image": {
      "oneOf": [
        { "type": "string", "format": "uri" },
        { "$ref": "schema-org-image-object-schema.json" }
      ],
      "description": "An image of the completed how-to."
    },
    "totalTime": {
      "type": "string",
      "description": "The total time required to perform all steps in ISO 8601 duration format."
    },
    "prepTime": {
      "type": "string",
      "description": "The length of time it takes to prepare the items in ISO 8601 duration format."
    },
    "performTime": {
      "type": "string",
      "description": "The length of time it takes to perform instructions in ISO 8601 duration format."
    },
    "estimatedCost": {
      "type": "object",
      "description": "The estimated cost of the supply or supplies consumed when performing instructions.",
      "properties": {
        "@type": { "type": "string", "const": "MonetaryAmount" },
        "currency": { "type": "string" },
        "value": { "type": "number" }
      }
    },
    "supply": {
      "oneOf": [
        { "$ref": "#/$defs/HowToSupply" },
        { "type": "array", "items": { "$ref": "#/$defs/HowToSupply" } }
      ],
      "description": "A sub-property of instrument. A supply consumed when performing instructions or a direction."
    },
    "tool": {
      "oneOf": [
        { "$ref": "#/$defs/HowToTool" },
        { "type": "array", "items": { "$ref": "#/$defs/HowToTool" } }
      ],
      "description": "A sub-property of instrument. An object used (but not consumed) when performing instructions."
    },
    "step": {
      "type": "array",
      "description": "The steps in the how-to.",
      "items": {
        "$ref": "#/$defs/HowToStep"
      }
    },
    "yield": {
      "type": "string",
      "description": "The quantity that results by performing instructions."
    },
    "author": {
      "oneOf": [
        { "$ref": "schema-org-person-schema.json" },
        { "$ref": "schema-org-organization-schema.json" }
      ],
      "description": "The author of this how-to guide."
    },
    "datePublished": {
      "type": "string",
      "format": "date",
      "description": "Date of first publication."
    },
    "video": {
      "$ref": "schema-org-video-object-schema.json",
      "description": "A video of the how-to."
    },
    "sameAs": {
      "oneOf": [
        { "type": "string", "format": "uri" },
        { "type": "array", "items": { "type": "string", "format": "uri" } }
      ],
      "description": "URL of a reference Web page that unambiguously indicates the item's identity."
    }
  },
  "$defs": {
    "HowToStep": {
      "type": "object",
      "description": "A step in the instructions for how to achieve a result.",
      "properties": {
        "@type": { "type": "string", "const": "HowToStep" },
        "name": { "type": "string", "description": "The name of the step." },
        "text": { "type": "string", "description": "The text directions for the step." },
        "url": { "type": "string", "format": "uri", "description": "A URL linking to the step." },
        "image": { "oneOf": [{ "type": "string", "format": "uri" }, { "$ref": "schema-org-image-object-schema.json" }], "description": "An image for the step." },
        "position": { "type": "integer", "description": "The position of the step." },
        "itemListElement": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "@type": { "const": "HowToDirection" },
              "text": { "type": "string" }
            }
          },
          "description": "Detailed elements of this step."
        }
      }
    },
    "HowToSupply": {
      "type": "object",
      "description": "A supply consumed when performing instructions.",
      "properties": {
        "@type": { "type": "string", "const": "HowToSupply" },
        "name": { "type": "string", "description": "The name of the supply." },
        "requiredQuantity": { "type": "number", "description": "The required quantity." },
        "image": { "type": "string", "format": "uri", "description": "An image of the supply." },
        "estimatedCost": { "type": "object", "properties": { "@type": { "const": "MonetaryAmount" }, "currency": { "type": "string" }, "value": { "type": "number" } } }
      }
    },
    "HowToTool": {
      "type": "object",
      "description": "A tool used (but not consumed) when performing instructions.",
      "properties": {
        "@type": { "type": "string", "const": "HowToTool" },
        "name": { "type": "string", "description": "The name of the tool." },
        "image": { "type": "string", "format": "uri", "description": "An image of the tool." }
      }
    }
  }
}