First CH AppsSmall apps that need a server

日本語

First CH Apps / Structured Data (JSON-LD) Extractor & Validator

Structured Data (JSON-LD) Extractor & Validator

Enter a URL and we fetch the page on our server, pull out every <script type="application/ld+json"> and pretty-print it grouped by @type. JSON syntax errors are pinpointed with line and column, and the main types (Article, FAQPage, BreadcrumbList, LocalBusiness, Organization) are checked for required and recommended properties.

To create structured data, use the JSON-LD Generator on tools.first-ch.com. This page is the other half: it confirms that what you built is actually in the HTML being served and that no values are missing — the entry point for rich results work.

How it is judged

Only <script type="application/ld+json"> is detected. Microdata (itemprop) and RDFa are out of scope, and JSON-LD injected later by JavaScript does not exist at fetch time.

JSON-LD inside HTML comments (<!-- -->) is ignored because it never reaches the screen.

@graph and top-level arrays are expanded and validated one item at a time. Objects nested inside properties (the Person in author, for example) are judged as part of the parent's required properties.

"Required" means the core properties we consider necessary for the markup to function. Google's rich result requirements differ per type and change over time, so confirm the final verdict with Google's Rich Results Test.

Empty strings, empty arrays and objects that carry only an @type count as absent (a key alone is not enough).

The property table covers Article (including BlogPosting and NewsArticle), FAQPage, BreadcrumbList, LocalBusiness (including subtypes such as Restaurant and Dentist) and Organization (including Corporation). Other types are checked for syntax and @context / @type only.

SERVER PROCESSING — what we send and what we keep

Sent: only the URL you type. Our server (Cloudflare Workers) fetches that URL once as a public page.

Stored: nothing. The validation lives entirely inside one request and writes neither the URL nor the result to any database (no KV, no D1). It leaves memory when the request ends.

Returned: the extracted JSON-LD re-assembled for display, plus our findings. We never re-serve the fetched HTML, so this app cannot be used to browse other sites through us. Long strings, deep nesting and large arrays are shortened for display.

Note: public GET only. URLs pointing at internal networks, localhost or private IPs are rejected. Pages behind a login, or pages that render structured data with JavaScript, cannot be validated correctly.

Use it as an API

POST /structured-data/api/inspect with JSON ({"url": "https://example.com/"}) or a form body and you get the same result back as JSON (blocks, nodes and findings).