My Tool Studio
Schema

Course Schema Generator

This course schema generator writes Course JSON-LD with a nested CourseInstance for how and where the course runs. Enter the course name, description and provider, pick Online, Offline or Blended, and add a price type, workload in hours and languages. Add start and end dates, an instructor and a class schedule, extra runs of the course, a syllabus, learning outcomes, prerequisites, level, credential, and ratings with reviews. Training companies and colleges use it when a new course page needs markup before launch. You can paste existing Course JSON-LD to load it. One change to know about: Google retired the Course info rich result in 2025. The Course list feature still uses the name, description and provider this tool writes.

Always freeNo sign upRuns in your browser
Import existing JSON-LD(paste code or read it from a URL)

Paste a Course JSON-LD block, several script tags or a whole page's HTML. The form fills with what it finds so you can edit and improve it.

Course details

0 characters. Google's course list shows about the first 60.

Course mode *

Price, workload & language

Workload is written as an ISO 8601 duration on the CourseInstance (12 hours becomes PT12H). Several languages can be comma separated; the first becomes inLanguage.

Dates, schedule & instructor

More runs of this course (extra CourseInstance)

Level, outcomes & syllabus

Syllabus sections

Ratings & reviews

Only mark up ratings shown on the page. Google ignores star ratings a business collects about itself on its own site for LocalBusiness and Organization.

Additional information

  • CourseMissing required name.
  • CourseMissing required description.
  • CourseRecommended: add provider.
  • CourseRecommended: add offers.
Output
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Course",
  "hasCourseInstance": {
    "@type": "CourseInstance",
    "courseMode": "Online"
  }
}
</script>
Test in Google Rich Results TestValidate at validator.schema.orgThe test links copy your code first. Paste it into the tester's Code tab.

How to use

01

Describe the course

Enter the course name, a description (Google's course list shows about the first 60 characters), the provider name and the provider URL.

02

Choose mode, price and workload

Pick Online, Offline or Blended; the last two ask for a location. Choose a price type, add price and currency if paid, and enter total hours and language.

03

Add extras and copy

Optionally add dates, runs, syllabus sections, ratings and reviews. Press Copy script, then check the block with Test in Google Rich Results Test or the Schema.org validator.

Why Course Schema Generator

Google course list requirements

Google's course list shows courses from one provider in a carousel-style list. It is built from Course markup on each course page plus an ItemList that names them. The table shows what each part needs.

Build the Course blocks here, one per course page. Then list those pages with the ItemList Schema Generator on the page that shows all the courses, choosing Course as the item type and Summary page if each course has its own page.

WherePropertyStatus
Course pagenameRequired
Course pagedescription (about 60 characters shown)Required
Course pageprovider with name and sameAs or urlRecommended
List pageItemList with itemListElementRequired
List pageListItem position and urlRequired
List pageAt least three coursesRequired

Example: a self-paced online course

A 12-hour video course on spreadsheet basics, sold for 49 US dollars and taught in English, would use these settings: mode Online, price type Paid, price 49, currency USD, workload 12 and language en.

The output then holds a Course with name, description and a provider Organization, a CourseInstance with courseMode Online and courseWorkload PT12H, an Offer with category Paid, price 49 and priceCurrency USD, and inLanguage en. No location is written because the course has no campus.

If the same course also runs as a weekend class on campus, press Add course run and choose Offline with the campus name, so one block carries both runs. Keep the price and workload in the markup the same as on the page.

Common questions

Does Google still show course rich results?
Partly. Google phased out the Course info rich result in 2025. The Course list feature, which shows several courses from the same provider, is still documented and needs a name and description for each course.
Which Course schema fields does Google require for the course list?
name and description are required, and provider is recommended. The course list also needs an ItemList with at least three courses on a summary or all-in-one page; the ItemList Schema Generator can build that list.
What's the difference between Course and CourseInstance in course schema?
Course describes the offering itself: name, description, provider, code and credits. CourseInstance describes one run of it, with a course mode, a location for in-person classes and a workload. The tool nests the instance under hasCourseInstance.
How do I mark a course as free in Course schema?
Choose Free as the price type. The tool writes an Offer with category Free, price 0 and your currency. Paid and Subscription add the price you enter, and Partially free fits courses with a free tier and paid extras.
How is course workload written in Course JSON-LD?
Enter the total hours and the tool converts it to an ISO 8601 duration on the CourseInstance. 12 hours becomes PT12H and 12.5 hours becomes PT12H30M.
Do online courses need location fields in Course schema?
No. With Online selected, the CourseInstance carries courseMode Online and no address. Offline and Blended open the location card, which becomes a Place inside the instance.
Why is the Course description counter set to 60 characters?
Google's course list documentation says it shows about 60 characters of the description. Longer text is still valid, but put the most useful words first.
How do I mark up a course that runs several times a year?
Fill the first run in Dates, schedule and instructor, then press Add course run for each other intake with its mode, dates, instructor, location and workload. hasCourseInstance becomes an array with one CourseInstance per run. A class schedule, such as Weekly for 10 sessions, is written as a Schedule.
Should every course page get its own Course schema block?
Yes, one block per course page, describing only that course. A catalogue page listing many courses should use an ItemList that points to each course page.

More Schema tools

View all