AggregateRating schema checker for review snippets
AggregateRating schema checker: test JSON-LD against Google review snippet rules for ratingValue, counts, scale and item type. Free, runs in your browser.
Course schema validator: paste Course JSON-LD and check name, description, provider and the 60 character display limit. Free, runs in your browser.
Runs entirely in your browser. Nothing you enter is uploaded, logged or stored.
Parsed with the browser's own JSON.parse against Google's documented property tables for Course. Nothing you type is sent anywhere.
The checks come from Google’s course list documentation, which defines two required Course properties and one recommended one. The tool parses the pasted JSON with the browser’s own JSON.parse, finds the first node whose @type is Course, and reports one row per rule:
Each row carries one of four badges. Pass means the rule is met. Problem marks a missing required property, the rows to fix first. Warning marks something present but incomplete, here a provider with no name. Info marks a recommendation or a limit Google documents without making it required.
Read the provider row with care. Google’s property table calls provider recommended, but the technical guidelines on the same page say “Each course must have valid name and provider properties.” The tool follows the table, so a missing provider shows as Info, yet the guidelines are the stricter statement. Add one.
If the JSON does not parse, the tool shows “Not valid JSON” with the parser’s message and clears the rows until the input is fixed.
The tool loads with this Course: name “Technical SEO basics”, description “Learn crawling, indexing and rendering.”, and a provider Organization named “SEO Madman Academy”. It returns:
Delete the provider block and the provider row turns to Info “Missing”, while the provider.name row disappears, because it only runs when a provider exists. Lengthen the description past 60 characters and the length row turns to Info with the new count.
Some rules sit outside what a pasted object can show. Google requires Carousel markup on a summary page or an all-in-one page, and says course titles must not carry promotional phrases, prices or discounts, such as “Learn ukulele - only $30!”. Its content guidelines also say a general public event or a single short how-to video is not a course. Check those by reading the page.
Google's property table lists provider as recommended, so this checker reports a missing one as Info. The same page's technical guidelines say each course must have valid name and provider properties, so treat that Info row as something to fix.
No. The 60 character figure is a display limit, so longer text stays valid but may be cut when shown. The checker reports it as Info with the exact character count.
No. The checker reads the first Course node it finds in a single object, a top-level array or an @graph list. Paste each course separately to check them all.
The checker looks for Course at the top level only. On an all-in-one page each Course sits inside itemListElement, so paste one of those Course objects on its own instead.
No. Google removed the separate course info documentation in September 2025 because that feature is no longer shown. The course list documentation this tool follows is a different, still published page.
AggregateRating schema checker: test JSON-LD against Google review snippet rules for ratingValue, counts, scale and item type. Free, runs in your browser.
Logo structured data generator: build Organization JSON-LD with logo, url, name and sameAs, and check Google's logo rules. Free, runs in your browser.
FAQ schema validator: check FAQPage JSON-LD so every Question has a name and acceptedAnswer text. Notes Google's FAQ rich result removal. Free, in-browser.
LocalBusiness schema checker: tests JSON-LD for name, address, geo precision, priceRange and hours against Google's docs. Free, runs in your browser.