How to Add Course Schema Markup to Your Website (Free Generator)
If you sell online courses, run a training site, or list classes anywhere on your website, Course schema markup is one of the easiest SEO wins you can pick up. It takes minutes to add, costs nothing, and it can make your courses stand out in Google with star ratings, prices, and provider details shown right in the search results.
This guide explains what Course schema is, which properties Google actually cares about, and the exact steps to add it — plus a course schema generator that builds the code for you in seconds.
What Is Course Schema Markup?
Course schema is a type of structured data — a standardized way of describing your page’s content in code that search engines can read. It’s based on the Schema.org vocabulary, which Google, Bing, and other search engines all understand.
Instead of Google having to guess that your page describes an online course, you hand it a neatly labeled package: “Here’s the course name, here’s who provides it, here’s what it costs, and here are the reviews.” That clarity is what makes rich results possible.
Structured data itself is not a direct ranking factor. Google has been clear about that. But it is a visibility factor: pages with valid Course schema can appear in Google’s course carousel and rich listings, which get clicked far more often than plain blue links.
Rich Results: The Course Carousel
When you search Google for something like “learn python online,” you may see a carousel of courses at the top of the results — cards showing course titles, providers, ratings, and sometimes prices. That’s the course carousel, and it’s powered by Course schema markup.
Eligibility doesn’t guarantee a spot. Google decides which courses get featured based on its usual relevance and quality signals. But without the markup, you’re simply not in the running. Every course competing in that carousel has the schema; it’s table stakes.
Books have their own equivalent: if you publish books instead of courses, the same concept applies with book schema markup for book rich results.
The Key Properties Google Wants
A Course schema object supports many properties, but Google documents a required core and several recommended ones. Get these right and you’ll pass validation.
Required properties
- name — the course title, e.g. “Complete Python Bootcamp 2026.”
- description — a clear summary of what the course covers, who it’s for, and what learners get out of it.
Recommended properties
- provider — the organization or person offering the course, usually an
Organizationwith at least aname(and ideally aurl). - hasCourseInstance — a
CourseInstancedescribing how the course is offered: course mode (Online,Onsite, orBlended), start and end dates if applicable, and the location for in-person courses. - offers — an
OfferwithpriceandpriceCurrency(use “0” for free courses). - aggregateRating — a star rating summary with
ratingValue,reviewCount, andbestRating. Only include real ratings from real learners on your own site — never invent ratings. - image — a thumbnail image URL for the course.
A Complete JSON-LD Example
Google recommends JSON-LD format (a <script> block) over microdata or RDFa. Here’s a full working example you can adapt:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Complete Python Bootcamp 2026",
"description": "Learn Python from scratch: automation, data analysis, and web apps. No prior experience needed — 40 hours of hands-on projects.",
"provider": {
"@type": "Organization",
"name": "DollarWise Academy",
"url": "https://example.com"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online"
},
"offers": {
"@type": "Offer",
"price": "49",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "1240",
"bestRating": "5"
}
}
</script>
Notice how readable it is. You’re just filling in facts about your course in a format Google parses instantly. Use the course schema generator to produce this code automatically — fill in your course details, and it generates a validated JSON-LD snippet you can paste straight into your page.
Steps to Add Course Schema to Your Site
Follow these steps and your first course page will be marked up in under fifteen minutes:
- Collect your course facts. Write down the title, a one-to-two-sentence description, the provider name and URL, the price (or that it’s free), the delivery mode (online, in-person, or blended), and any real review rating.
- Generate the JSON-LD. Use the course schema generator or write the code by hand following the example above. Double-check every value — typos in URLs or prices are the most common errors.
- Place the script in your page. For a single course page, paste the
<script>block in the<head>section or right before the closing</body>tag. In WordPress, you can use a plugin or your theme’s custom code field; for static sites, add it directly to the template. - Make the data match the visible page. Google requires that schema content matches what users see. If your schema says the price is $49, your page must show $49. Mismatches can disqualify you from rich results.
- Test with Google’s Rich Results Test. Enter your page URL (or paste the code). The tool tells you which rich results you’re eligible for and highlights errors in red. Fix anything it flags and re-test.
- Request indexing. Once the page is live, ask Google to crawl it through Google Search Console’s URL Inspection tool so the rich results pick up your markup sooner.
Common Mistakes to Avoid
- Fake ratings. Adding an
aggregateRatingwith ratings that don’t exist on your page is spam. Google can and does penalize this — only mark up reviews genuinely shown on the page. - Marking up listing pages wrong. On a page that lists many courses, use an
ItemListcontaining oneCourseper item, with each course linking to its own page. Don’t stuff every course’s full schema onto a category page. - Price mismatches. The
offers.pricein your schema must match the price displayed on the page. Changing the sale price in one place and forgetting the other is a classic failure. - Missing provider. The
providerproperty is technically recommended, not required — but courses without a named provider look thin to Google and rarely get featured. Always include it. - Invalid JSON. One missing comma breaks the whole script. Always validate — the Rich Results Test will catch syntax errors instantly.
Frequently asked questions
What is Course schema markup?
Course schema markup is structured data (Schema.org vocabulary) that tells Google your page lists an educational course. When implemented correctly, Google can show your course in rich results — including the course carousel — with details like the provider, ratings, and price.
Does Course schema help SEO?
Course schema doesn’t directly change rankings, but it makes you eligible for rich results, which improve click-through rates with ratings, prices, and course details shown right on the search page. That extra visibility is a real traffic win for course pages competing in search.
Which properties does Course schema require?
Google requires at minimum the course name and description. Strongly recommended properties include the provider (organization offering the course), offers or hasCourseInstance (pricing and course sessions), and aggregateRating (reviews). Include as many accurate properties as you can.
How do I test Course schema before publishing?
Paste your page URL or code snippet into Google’s Rich Results Test. It will show you which rich results your page is eligible for and flag any missing or invalid properties. Test before and after publishing so you catch errors early.