SchemaValid
ENDE

Course Schema Generator

Create valid Course JSON-LD structured data for your online or in-person courses — with provider, schedule, location and price, ready for Google's course rich results. Instant, in your browser, free.

Course info


Provider

Provider type

Delivery


Cost (optional)

Add a price to include an offer. Use 0 for a free course.

JSON-LD code

Fill in the required fields (name, description, provider) to generate the JSON-LD code.

Why Course schema matters for e-learning

Course structured data tells Google that a page describes an educational course and captures its key facts — the title, a description, who provides it, how it is delivered, when it runs and what it costs. Eligible courses can appear as course rich results and in Google's course list experience, shown with the provider name and other details directly in search. For online academies, universities, bootcamps and independent instructors, that visibility is valuable: learners comparing options are far more likely to click a result that already shows the provider and format. It works for free — there is no marketplace fee, just valid markup on an indexable course page.

Online vs. in-person courses

The courseMode property on the course instance signals how the course is delivered. Use Online for fully remote, self-paced or live-streamed courses; Offline for courses taught in person at a physical venue; and Blended for a mix of both. For in-person and blended courses you should also provide a location — a venue name and address — so learners and Google know where it takes place. This tool hides the address fields automatically when you pick Online, because an online course has no physical location. Adding start and end dates is recommended for scheduled cohorts, while evergreen self-paced courses can omit them.

How to add the schema to your site

Copy the generated code and paste it into a script tag of type application/ld+json in the head section of the page describing that course — one course per page. The name, description and price in the markup must match what visitors see. Once the page is indexed, Google can use it for course rich results. A minimal example looks like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Introduction to Structured Data",
  "description": "A hands-on course on JSON-LD and schema.org.",
  "provider": {
    "@type": "Organization",
    "name": "SchemaValid Academy",
    "sameAs": "https://www.example.com"
  },
  "hasCourseInstance": {
    "@type": "CourseInstance",
    "courseMode": "Online"
  }
}
</script>

Frequently asked questions

Which fields are required for Course schema?
Google needs a course name, a description and a provider. This tool enforces exactly those three. Adding a course instance with a delivery mode, dates and a price makes the markup far more useful and eligible for richer results.
What is hasCourseInstance for?
hasCourseInstance describes a specific run of the course — how it is delivered (courseMode), when it starts and ends, and where it takes place. Google's course rich results increasingly rely on it, so this tool always includes a course instance with at least the delivery mode.
How do I mark up an online course?
Set the course mode to Online. The tool then hides the physical address fields, since an online course has no venue. The courseMode value Online tells Google the course is delivered remotely.
How do I show that a course is free?
Enter a price of 0 with your currency. The tool outputs an offer with a zero price, which is the correct way to indicate a free course. Leave the price blank if you do not want to publish pricing at all.
How do I validate the markup?
Paste your course page URL or the generated code into Google's Rich Results Test or the schema.org validator. They parse the JSON-LD and report whether the Course structure is valid and eligible for course rich results.

Related tools