JSON-LD block without @type
What it is
A JSON-LD block on the page is valid JSON, but an object at its top level or in its @graph list has no @type. @type names the schema.org type the block describes, such as Organization, Product or Article. Without it, the properties that follow, a name, a logo, a price, belong to nothing in particular.
Why it matters
Each of Google’s rich results is tied to a specific type, such as Product for price details or Recipe for recipe cards, and Google needs the required properties for that type before it shows one. An untyped block cannot qualify for any of them, and the facts in it, such as your logo or opening hours, are unlikely to be used. The fix is usually one line.
How Asky checks it
Asky reads the page’s raw HTML and parses each <script type="application/ld+json"> block. Every top-level object needs @type: a single object and each item of a top-level array, [ ... ]. An object that wraps an @graph list needs no type of its own, but every item in the list does, except one holding only an @id reference or adding properties to a typed item with the same @id. A top-level value that is not an object, such as null, is reported here and as missing @context. Other nested objects are not checked. The page carries one finding however many blocks fail. Blocks that do not parse are reported as invalid JSON.
Reported as a warning with high severity.
How to fix it
- Find the block: search the page source for
application/ld+json. - Add
"@type"with the schema.org type that matches what the block describes, spelled as on schema.org. Case matters:LocalBusiness, notlocalbusiness. - If the block is an array or has an
@graphlist, give every item in it its own@type; the object around an@graphneeds none. - If a plugin or template printed a half-filled block, fix the setting that feeds it rather than editing the page by hand.
- Keep
@contextnext to the new@type, so the block does not raise the missing @context issue instead.
A fixed organization block, with the added line second:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Co",
"logo": "https://example.com/images/logo.png"
}
</script>Example
The homepage of https://example.com has a block with a context, a name and a logo, but nothing saying it describes an organization. Adding "@type": "Organization", as in the block above, clears the finding.