I built a zero-dependency CLI that crawls your site and lints its JSON-LD
Structured data breaks silently: the page renders fine while your Product schema has "$19.99" as a price, your LocalBusiness lost its address in a redesign, and your breadcrumbs go 1, 3. Google's Rich Results Test checks one URL at a time — I wanted the whole site, in CI. schema-audit is a single-file Node.js 20+ CLI with zero npm dependencies: node schema-audit.mjs https://example.com/ node…
Structured data failures often go unnoticed as the page displays correctly, yet the Product schema may display a price of $19.99, while a LocalBusiness loses its address through a website redesign. However, Google's Rich Results Test only checks one page at a time, which led to the creation of schema-audit, a single-file Node.js CLI that crawls an entire site and checks for JSON-LD issues in CI environments. This tool offers zero npm dependencies, making it a lightweight solution.
schema-audit operates by extracting every ld+json block, including @graph and nested entities, and performing 9 checks: JSON validity, the presence of @context and @type, required and recommended properties per type, such as Article, Product (offers/price/priceCurrency), LocalBusiness, FAQPage, BreadcrumbList, Event, JobPosting, and Recipe.
It also verifies value sanity, including ISO dates, numeric prices, and absolute URLs. The tool highlights duplicates and pages with no structured data at all, providing a human-readable report with suggestions for fixes and --json output for CI integration.
Schema-audit's design includes exit codes for CI workflows, allowing users to run it weekly and fail the build if markup regressions are detected. The project is hosted on GitHub (github.com/madahzadeh/schema-audit) and released under the MIT license. As a third tool in the author's open-source technical SEO toolkit, schema-audit complements hreflang-audit and llms-txt-kit. The creator invites feedback on future features and improvements.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.