Getting found · Edition No. 12 · 6 Sep 2026

google/schema-dts

Typed JSON-LD for the Schema.org vocabulary — structured data the compiler can check.

← Getting foundRead the whole edition →
09

google/schema-dts

💎 hidden gem
schema-dts: checked page descriptions. Turns the hidden page data into checked code.

1.2k stars · Apache-2.0 · v2.0.0 (2026-03-23) · Track this in Rising ↗

Typed JSON-LD for the Schema.org vocabulary — structured data the compiler can check.

Verified26 Oct 2026

Radar check

What we found when we opened it. Every bar is one fact, with its date.

Alive90

Last code pushed 2 Oct 2026, 25 days before this check.

Releases100

Latest release v2.1.0 on 2 Oct 2026.

Maturity90

Public since November 2018, a little over 7 years.

Adoption62

1,252 stars and 58 forks.

Activity25

9 commits and 1 new issues in the last 90 days.

Community60

11 contributors. 4 pull requests merged in 90 days.

Security80

A security policy says how to report a problem. 1 published security advisory.

Licence Apache-2.0: permissive: use it for anything, keep the noticeSetup effort 2 of 5Payoff 4 of 5
How the bars are scored
  • Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
  • Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
  • Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
  • Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
  • Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
  • Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
  • Security. A published security policy 80, none 40; published advisories are listed, not scored.

Checked by Repo Radar on 26 Oct 2026 from the repository on GitHub. Covered in Edition 12.

▶Repo detailsthe review · specs · pros & cons · install

What it does

Schema.org is an agreed vocabulary for describing what a page contains, and JSON-LD is the format used to put it on the page as a hidden block of data. This package publishes TypeScript types generated from that vocabulary, so the block is written as a typed object instead of hand-written text. A misspelled property name, a value of the wrong kind or a required field left out becomes a compilation error. The types cover the whole vocabulary, including SoftwareApplication, FAQPage, VideoObject, Article, Product and Organization. The current release is v2.1.0, from 2 October 2026, and code landed on the same day, under the Apache-2.0 licence. The types are development-only: nothing from the package reaches the browser, only the data block you wrote. It also does nothing at runtime, validates no live page, and reports nothing about whether search engines accepted the markup.

Why it matters

Who it suits. Any TypeScript site that wants to be described correctly to search engines and to AI assistants that cite sources, and whose structured data is currently a block of hand-written text nobody has checked. Also anyone who has already discovered a year-old typo in that block. Skip it if the pages are rendered by something other than TypeScript, because there is no help here for Python or PHP templates.

Verdict. One hour, and then it never rots, which is an unusual return. The limit is honest and should be said once: structured data makes a page understood, not popular. It will not create demand and it will not rescue a page nobody wants. Expect to write the occasional type cast, because the types are strict and the vocabulary itself is loose. garmeeh/next-seo is the higher-level option on Next.js, and schemaorg/schemaorg is the vocabulary itself if a definition needs checking.

Stars1.2k
LicenceApache-2.0
Latestv2.0.0 (2026-03-23)checked 7 Sep 2026
Written inTypeScript
Summary (Key Points)from the README
Key features
  • Discriminated type unions: Each Schema.org type is exported as a union alias, which gives editor completions and stricter validation.
  • Concrete leaf interfaces: Every type also has a single-`@type` leaf interface (e.g. `PersonLeaf`) that a class can implement or extend.
  • MergeLeafTypes helper: Combines leaf types for Schema.org objects that legitimately carry multiple concrete `@type` values.
  • WithContext wrapper: Augments a top-level type so it accepts a `@context` property.
  • Graph and ID support: The `Graph` type models interconnected `@graph` nodes, and `{ '@id': ... }` stubs reference nodes from several places.
  • WithActionConstraints type: Annotates action properties with `-input` and `-output` suffixes.
  • Configurable generator: `schema-dts-gen` takes an `--ontology` URL, a `--context` value or list of name:URL pairs, and `--deprecated`/`--nodeprecated` switches.
  • Verbose logging: `--verbose` writes extra debugging notes to stderr.
Ways to install
Platform or methodWhat it needsEffort
`schema-dts` npm packagenpm, to add the pre-packaged typings to a projectLow: add the package and import `"schema-dts"`
`schema-dts-gen` command-line toolnpm, plus an HTTPS `.nt` ontology URL and optional context and deprecation flagsMedium: run the CLI to generate TypeScript for a chosen Schema.org version and layer
Building from the repositoryA clone of the repo and `npm` to install dependencies, then the repo's `tsc` wrappersHigher: contributor path for generating from the latest Schema.org schema or building the generator
Important
  • Unofficial project: The README states this is not an officially supported Google product.
  • Limited layers: The pre-packaged `schema-dts` package covers the latest Schema.org schema without pending and other non-core layers. Generate your own package to get those.
  • Leaf types for merging: `MergeLeafTypes` requires concrete leaf types such as `ProductLeaf`, not union aliases such as `Product`.
  • Classes need leaf types: A class cannot implement a union alias, so use the leaf interface when you need a single concrete shape.
  • Ontology requirements: `--ontology` must be an HTTPS URL to an `.nt` N-Triples file that is compatible with Schema.org, includes the Schema.org DataTypes, and specifies a top-level `Thing` type.
  • Deprecated types: Including them with `--deprecated` keeps them in the output, marked only with `@deprecated` JSDoc tags.
  • Escape JSON-LD before injecting: When placing JSON-LD in an HTML script tag, escape characters that could break out of the tag or enable XSS.

Written by an AI model from the project’s README; not part of the review, and it can be wrong.

Setup effort
2 / 5
Payoff
4 / 5
Good
  • Mistakes appear at build time instead of as a quietly missing search result.
  • Generated from the actual vocabulary rather than from somebody's summary of it, and published by Google.
  • Types only, so nothing is added to what a reader's browser downloads.
Watch for
  • TypeScript only, with nothing for pages rendered by other languages.
  • The types are strict and the vocabulary is loose, so some legitimate markup needs a cast.
  • Being understood is not the same as being found, and this does only the first.
Replaces

Your Astro site is TypeScript, so this is an hour that then never rots — a mistyped property fails the build instead of failing silently for a year, which is the normal fate of hand-written JSON-LD.

Install
npm i -D schema-dts
Screenshots
google/schema-dts: GitHub preview cardgoogle/schema-dts: Screenshot 1

On Stack Radar: Marketing & Growth › SEO & Organic Search › Technical SEO.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.