Free schema
Free Schema.org lets editors build any Schema.org JSON-LD document for a single entity, such as a node, a taxonomy term or any other content entity with a canonical page. There is no fixed mapping between fields and Schema.org properties: the editor decides the type, the properties and how items nest.
When the field has a value, its tree becomes the only JSON-LD of the entity's page. Every other JSON-LD script added by Schema Metatag, custom modules or themes is removed from the page head, so search engines see exactly what the editor built.
Use cases
- Landing pages or section hubs that need structured data (
CollectionPage,ItemList,BreadcrumbList...) that no generic mapping can produce. - Taxonomy term pages that act as topic portals.
- One-off pages where SEO teams need full control of the JSON-LD without code changes or a new Schema Metatag mapping.
- Overriding, for a single page, the JSON-LD generated site-wide by other modules.
Features
- Free Schema.org tree field type for any fieldable content entity bundle (content types, vocabularies...).
- Schema.org tree editor widget:
- Pick a
@type, add properties and nest child items to any depth (up to 10 levels). - Reference other items with
@id, e.g."isPartOf": {"@id": "https://example.com/#website"}. - Suggests Schema.org types and properties, with their descriptions, from a bundled copy of the official vocabulary.
- Imports existing JSON-LD, and shows the JSON it will print.
- Works without JavaScript as a plain JSON textarea.
- Pick a
- Tokens in any value:
[node:title],[term:name],[node:url:absolute]...
Tokens that resolve to an empty value are omitted from the output. - A repeated property becomes a JSON-LD array, and several trees on the same entity are printed as a single
@graph. - Validation of the tree structure, types and property names on save.
- Page head only formatter: the tree is never rendered in the page body.
- Translatable: each entity translation can have its own tree, and tokens are replaced in the page language.
- Cacheable: output varies with the entity and the tokens used.
- Drush command to regenerate the bundled vocabulary from schema.org.
Example
A tree with a CollectionPage type, a name set to [node:title] and an isPartOf
reference prints:
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "CollectionPage", "name": "Health", "url": "https://example.com/health", "isPartOf": {"@id": "https://example.com/#website"} } <script>
Post-installation
- Add a Free Schema.org tree field to a content type, vocabulary or any other fieldable bundle.
- On the form display, use the Schema.org tree editor widget. On the view display, use the Page head only (no visible
output) formatter. - Grant the Edit the free Schema.org tree of content permission to the roles that should edit it.
- Edit an entity, build the tree and save. Check the result with the Schema Markup
Validator or Google's Rich Results Test.
Security note: the permission is restricted because the tree is printed verbatim in the page head and replaces any other structured data of the page. Only grant it to trusted roles.
Schema.org vocabulary
The editor suggestions come from data/vocabulary.json, generated from the official schema.org vocabulary. Only stable terms are kept: pending, attic and superseded terms are dropped. To regenerate it with a different depth of types below Thing:
drush free-schema:vocabulary --depth=3Requirements
- Drupal 10.2 or later, or Drupal 11.
- Optional: Token, for the token browser in the editor and entity token types such as
[term:name].
Similar projects
- Schema.org Metatag maps fields to Schema.org properties through Metatag, with predefined types and properties. Free Schema.org works alongside it: on pages where the free tree is filled in, it replaces that output.
- Schema.org Blueprints builds the content model itself from Schema.org types. Free Schema.org leaves your content model unchanged and only controls the JSON-LD of each page.
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Releases
| Version | Type | Core | Release date | |
|---|---|---|---|---|
| 1.0.0-alpha1 | Pre-release | 10–11 | Oct 5, 2026 |