What is DefinedTerm schema?

DefinedTerm schema is structured data that tells search engines and other machines "this page defines this term, and here is the definition." It uses the schema.org type DefinedTerm, which schema.org describes as "a word, name, acronym, phrase, etc. with a formal definition," used for glossaries, dictionaries, category classifications and similar [1].

A glossary page about "Nofollow link" can carry DefinedTerm markup with the term as name, the one-sentence definition as description, and a pointer to the glossary it belongs to. A human sees the same page as before. A crawler reading the markup can tell exactly which words are the term, which sentence is the definition, and which collection of terms it comes from.

DefinedTerm almost always travels with its container type, DefinedTermSet, which schema.org describes as "a set of defined terms, for example a set of categories or a classification scheme, a glossary, dictionary or enumeration" [2].

What does DefinedTerm markup look like?

DefinedTerm markup is usually written as JSON-LD in a script tag in the page's HTML. Search Insider uses it on every entry in its own glossary [6], so this page is a working example. Each entry page outputs a DefinedTerm like this one:

{
  "@context": "https://schema.org",
  "@type": "DefinedTerm",
  "@id": "https://searchinsider.io/glossary/definedterm-schema#term",
  "name": "DefinedTerm Schema",
  "description": "DefinedTerm schema is schema.org structured data that marks a word or phrase as a term with a formal definition, typically linked to a DefinedTermSet such as a glossary, so machines can identify the term and its meaning.",
  "url": "https://searchinsider.io/glossary/definedterm-schema",
  "alternateName": ["DefinedTerm", "DefinedTerm markup", "DefinedTermSet", "DefinedTermSet schema", "definedterm structured data"],
  "inDefinedTermSet": {
    "@type": "DefinedTermSet",
    "@id": "https://searchinsider.io/glossary#set",
    "name": "Search Insider Glossary",
    "url": "https://searchinsider.io/glossary"
  }
}

Three choices in that implementation are deliberate:

  • description is the exact definition shown on the page, word for word, in the box under the heading. The markup never says something the visible page does not.
  • alternateName lists the variants people use for the term (plurals, abbreviations, other spellings), the same list the site uses to auto-link the term in its articles.
  • inDefinedTermSet uses a stable @id that matches the DefinedTermSet on the glossary index page, so every term points to one shared set.

The glossary index page carries the matching DefinedTermSet, which lists every published term with hasDefinedTerm:

{
  "@context": "https://schema.org",
  "@type": "DefinedTermSet",
  "@id": "https://searchinsider.io/glossary#set",
  "name": "Search Insider Glossary",
  "url": "https://searchinsider.io/glossary",
  "hasDefinedTerm": [
    {
      "@type": "DefinedTerm",
      "name": "Nofollow link",
      "description": "A nofollow link is a hyperlink marked rel=\"nofollow\", which tells search engines...",
      "url": "https://searchinsider.io/glossary/nofollow-link"
    }
  ]
}

Each entry page also outputs a WebPage whose mainEntity points to the term's @id, which states that the page as a whole is about that one term.

What properties does DefinedTerm use?

DefinedTerm uses two properties of its own, termCode and inDefinedTermSet, plus the general properties every schema.org type inherits, such as name, description, alternateName, url and sameAs [1].

PropertyWhat it holdsNeeded for a glossary?
nameThe term itselfYes
descriptionThe definitionYes
inDefinedTermSetThe DefinedTermSet (or its URL) the term belongs toStrongly recommended
urlThe page that defines the termRecommended
alternateNameOther names for the termUseful
sameAsA reference page that identifies the same concept elsewhereOptional
termCodeA code for the term within its setOnly for coded vocabularies

Schema.org's own example uses termCode for an occupation code, "51-6042.00," from the O*NET classification [1]. That is the use termCode was designed for: classification systems where each term has an identifier. Some guides list termCode as a required property for every glossary [5]. It is not. Schema.org does not make any property required, and a glossary with no codes has no reason to invent them.

When was DefinedTerm added to schema.org?

DefinedTerm and DefinedTermSet were added to schema.org in release 3.4 in June 2018 [3]. The types trace back to schema.org GitHub issue #894, which schema.org cites as their source [1].

June 2018: release 3.4

Release 3.4 added DefinedTerm and DefinedTermSet, giving schema.org a general way to describe vocabularies, glossaries and classification schemes [3]. Both types now have coded subtypes, CategoryCode and CategoryCodeSet, for classification systems where each term carries an identifier [1] [2].

2026: framed as an AI citation tactic

Guides published in 2026 present DefinedTerm as a way to get definitions cited by AI assistants that answer "what is X?" questions directly [3] [5]. That framing is a hypothesis, not a documented behavior (see below).

Does Google support DefinedTerm schema?

Google does not offer any rich result for DefinedTerm schema. DefinedTerm does not appear in Google's list of structured data features that Google Search supports, which covers types such as Article, Breadcrumb, Organization, Product and Q&A [4]. Adding DefinedTerm will not change how a glossary page looks in Google's results.

That does not make DefinedTerm markup invalid or harmful. Google can read schema.org markup beyond its rich result features, but it has not said what, if anything, it does with DefinedTerm. The honest position is that the markup's effect on Google rankings is undocumented.

Does DefinedTerm schema help AI citations?

No published evidence shows that DefinedTerm schema makes AI assistants more likely to cite a page. Guides claiming it does offer no test or data behind the claim [3] [5]. No AI company has documented using DefinedTerm when choosing sources, and Search Insider found no study isolating its effect.

What is reasonable to say: DefinedTerm removes ambiguity about which sentence on a page is the definition, and any system that does read structured data gets a clean term and definition pair. The bigger factors are the visible ones: a clear, self-contained definition near the top of the page, a question-shaped heading, and accurate content. DefinedTerm supports those; it does not replace them.

What is the difference between DefinedTerm and FAQPage schema?

DefinedTerm marks a single term and its definition, while FAQPage marks a list of questions and answers on a page. A glossary entry is one term with one definition, so DefinedTerm is the accurate type. FAQPage fits a page whose main content is several separate questions with answers.

Using FAQPage to describe a glossary entry misrepresents the page. Using DefinedTerm for each term and DefinedTermSet for the glossary describes the content as it really is.

What is the difference between DefinedTerm and DefinedTermSet?

A DefinedTerm is one term, while a DefinedTermSet is the collection the term belongs to. In a glossary, each entry page is a DefinedTerm and the glossary index is the DefinedTermSet [1] [2]. The two connect in both directions: each DefinedTerm points to its set with inDefinedTermSet, and the set lists its members with hasDefinedTerm [2].

How do you add DefinedTerm schema to a glossary?

To add DefinedTerm schema to a glossary, output one DefinedTerm in JSON-LD on each term page and one DefinedTermSet on the glossary index, linked by a shared @id. In practice:

  1. Write the definition first. One sentence that contains the term and stands alone. Use it, unchanged, as both the visible definition and the description.
  2. Give the set a stable @id, such as https://example.com/glossary#set, and reference that same @id from every term's inDefinedTermSet.
  3. Add alternateName for real variants people use, not for loosely related words.
  4. Generate the markup from the same data as the page, so the markup and visible content cannot drift apart when a definition is edited.
  5. Put it in the server-rendered HTML, not injected later by JavaScript, so any crawler that reads the raw HTML sees it.
  6. Validate it with the Schema.org validator. Google's Rich Results Test will not report a rich result for DefinedTerm, because none exists [4].

The same @id approach is how sites connect other entities, such as an organization described with Organization markup on its About page [7].

When should you use DefinedTerm schema?

Use DefinedTerm schema on any page whose main purpose is to define a term: glossary entries, dictionary pages, terminology lists and classification codes. It costs little once it is generated from the same data as the page, and it describes the content accurately. Do not add it to articles that merely mention a term in passing, and do not expect a rich result or a measurable ranking change from it. Treat it as precise labeling, not as a ranking tactic.