Free Course Schema Generator

Fill in the facts visible on your page, copy the Course JSON-LD, and validate it before you publish. The guide, examples, and FAQs are below the tool. Generate this schema with AI

Type to filter 121 supported schema types.

Schema workflow

Use only facts a visitor can verify on the page, then validate the JSON-LD before publishing.

This builds one course for its detail page. Google's course list needs at least three marked-up courses and an ItemList on the page that lists them.

Required

  • Visible Course content
  • Canonical page URL
  • Clear page owner/publisher
  • Fields that match the visible page

Recommended

  • A representative image when the schema supports it
  • SameAs or related links when visible
  • Validation before publishing

Avoid

  • Adding properties that are not visible
  • Copying example URLs into production
  • Skipping Google and Schema.org validation

Schema stacks

Use Course schema in a stack

Complete JSON-LD bundles that combine Course with the other types a real page needs. Browse all stacks

Next step

Validate, repair, and publish clean structured data.

Check the generated JSON-LD against the visible page, then run both SwiftSchema and external validators before publishing.

Course Schema — Course List Markup for Google

Course markup describes a course's name, description, and provider. Google's course list uses it, but only when at least three courses are marked up and listed with ItemList markup.

Generate Course JSON-LD

Why course markup doesn't produce a rich result

  • Only one course is marked up. Google needs at least three.
  • The course pages have Course markup, but no page lists them with ItemList markup.
  • The description is long, but Google shows only 60 characters.
  • The course name includes a price or a promotion, which Google lists as invalid.

How SwiftSchema helps

The generator below builds the Course for one detail page: name, description, provider, course code, credential, and scheduled sessions. It flags descriptions over 60 characters and a Person provider, since Google documents an Organization.

The second example on this page is the ItemList Google requires on the page that lists your courses. The ItemList generator can build that list.

What is Course schema?

Schema.org's Course describes a course of study. Google uses it for the course list rich result, which shows courses from one provider so prospective students can find them. Google says the course list is available in English in all regions where Google Search is available.

Google's definition of a course is narrow: "A series or unit of curriculum that contains lectures, lessons, or modules in a particular subject and/or topic." It must have an explicit educational outcome and be led by one or more instructors with a roster of students. Google's examples of things that aren't courses are a general public event such as "Astronomy Day" and a single two-minute how-to video.

What Google requires

Course

PropertyRequired?Notes
nameYesThe course title.
descriptionYesA description of the course. Google's display limit is 60 characters.
providerRecommendedThe Organization that publishes the course, such as a university.

The three-course and ItemList rules

Google's technical guidelines say:

  • Mark up at least three courses. They can be on separate detail pages or on one all-in-one page.
  • Add carousel (ItemList) markup to either a summary page or an all-in-one page. On the list, each ListItem needs a position and a URL; Google says every item must have a unique URL. On a summary page that's the detail page's URL. On an all-in-one page, Google's example puts the url on the Course inside item. Google's carousel rules add that summary-page URLs must point to different pages on the same domain, and all-in-one URLs must point to an anchor on the page that hosts the list, such as #data-101.
  • Each course needs a valid name and provider. Google's guidelines say each course must have them, although its property table lists provider as recommended. Include it.

There are two valid setups:

  1. Summary page plus detail pages. Each detail page has its own Course markup (the first example). The summary page has an ItemList whose items point to those URLs.
  2. All-in-one page. One page has an ItemList with every Course inside it (the second example).

Names Google rejects

Google lists these naming practices as invalid:

  • Promotional phrases, such as "Best school in the world"
  • Prices in course titles, such as "Learn ukulele - only $30!"
  • Something other than a course as the title, such as "Make money fast with this class!"
  • Discounts or purchase offers, such as "Leaders in their fields share their secrets — 25% off!"

Course info was retired

Google used to have a second feature, course info, with details such as price, schedule, and workload. In June 2025 Google announced it was phasing it out, and on September 9, 2025, it removed the documentation because course info was no longer shown in search results. If an older tutorial asks for offers, courseSchedule, or courseWorkload to get a rich result, that was for course info.

Those properties are still valid schema.org, so you can keep them to describe the course. They just don't produce a Google feature anymore.

Other useful properties

These are schema.org properties that describe a course well, even though Google's course list doesn't use them:

  • courseCode: the catalog code, such as "DATA101".
  • hasCourseInstance: a scheduled run of the course, with courseMode (such as "online"), startDate, endDate, and instructor. The CourseInstance guide covers it.
  • educationalCredentialAwarded: the certificate or credential earned.
  • teaches, coursePrerequisites, and inLanguage: what the course teaches, what it requires, and its language.

Courses are also a supported item type for Google's review snippets, so an aggregateRating from your own students can be added. See the AggregateRating guide for the rules.

How to build one here

  1. 01

    Enter the course name as your page shows it, without prices or promotions.

  2. 02

    Write a description with the key point in the first 60 characters.

  3. 03

    Choose Organization as the provider and enter its name and website.

  4. 04

    Add the course URL, code, credential, and any scheduled sessions.

  5. 05

    Copy the JSON-LD into the course page. Repeat for at least three courses.

  6. 06

    Add an ItemList to the page that lists the courses, then test both in Google’s Rich Results Test.

Ready to build the markup?

Name, description, provider. Then list three or more.

Generate Course JSON-LD

Common mistakes

  • One course only. Google needs at least three.
  • No ItemList. Add it to the summary page or the all-in-one page.
  • A long description. Google shows 60 characters.
  • Promotional names. No prices, discounts, or slogans in the course name.
  • Not a course. Webinars, one-off events, and short videos don't qualify.
  • Expecting course info details. Prices, schedules, and workload no longer appear in Google Search.

Required properties

  • name
  • description

Recommended properties

  • provider (Organization)
  • provider.sameAs
  • url
  • courseCode
  • hasCourseInstance
  • educationalCredentialAwarded
Course detail page
Validate
{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Introduction to Data Analysis with Python",
  "description": "Clean, analyze, and chart data with pandas.",
  "url": "https://www.example.edu/courses/data-analysis-python",
  "courseCode": "DATA101",
  "provider": {
    "@type": "Organization",
    "name": "Example Institute of Technology",
    "sameAs": "https://www.example.edu"
  }
}
All-in-one page: ItemList with three courses
Validate
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Course",
        "url": "https://www.example.edu/courses#data-101",
        "name": "Introduction to Data Analysis with Python",
        "description": "Clean, analyze, and chart data with pandas.",
        "provider": {
          "@type": "Organization",
          "name": "Example Institute of Technology",
          "sameAs": "https://www.example.edu"
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Course",
        "url": "https://www.example.edu/courses#data-201",
        "name": "Statistics for Data Analysis",
        "description": "Probability, sampling, and hypothesis tests.",
        "provider": {
          "@type": "Organization",
          "name": "Example Institute of Technology",
          "sameAs": "https://www.example.edu"
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "Course",
        "url": "https://www.example.edu/courses#data-301",
        "name": "Machine Learning Foundations",
        "description": "Regression, classification, and model testing.",
        "provider": {
          "@type": "Organization",
          "name": "Example Institute of Technology",
          "sameAs": "https://www.example.edu"
        }
      }
    }
  ]
}
Course with a scheduled session (CourseInstance)
Validate
{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Statistics for Data Analysis",
  "description": "Probability, sampling, and hypothesis tests.",
  "provider": {
    "@type": "Organization",
    "name": "Example Institute of Technology",
    "sameAs": "https://www.example.edu"
  },
  "educationalCredentialAwarded": "Certificate of Completion",
  "hasCourseInstance": {
    "@type": "CourseInstance",
    "courseMode": "online",
    "startDate": "2027-01-11",
    "endDate": "2027-03-19",
    "instructor": {
      "@type": "Person",
      "name": "Dr. Priya Raman"
    }
  }
}

FAQs

What does Google require for Course markup?Show

Each Course needs a name and a description, and Google recommends a provider Organization. You must mark up at least three courses and add ItemList (carousel) markup to a summary page or an all-in-one page.

Why isn't my single course showing a rich result?Show

Google's course list needs at least three marked-up courses and an ItemList on a page that lists them. One Course on its own isn't eligible.

How long should the description be?Show

Google says the course description has a display limit of 60 characters, so put the most useful words first.

What counts as a course?Show

Google defines a course as a series or unit of curriculum with lectures, lessons, or modules in a subject, with an explicit educational outcome, led by one or more instructors with a roster of students. A public event or a single short how-to video is not a course.

What happened to course info rich results?Show

Google announced in June 2025 that it was phasing out course info, and removed its documentation on September 9, 2025, because it was no longer shown in search results. The course list feature is separate and still documented.

Can I put prices or promotions in the course name?Show

No. Google lists promotional phrases, prices, discounts, and non-course titles such as 'Make money fast with this class!' as invalid course names.

Related types

Browse all schema types

References