educationalLevel
educationalLevel · Not mentioned by Google
Appears in
What is it?
The difficulty or progression level of a course. educationalLevel communicates whether content targets beginners, intermediate learners, or advanced practitioners. It accepts free text strings ("Beginner," "Intermediate," "Advanced") or references to formal educational frameworks using a DefinedTerm.
Most course platforms use this field to set learner expectations before enrollment. It appears on the Course type through inheritance from CreativeWork and LearningResource.
Why this matters for AEO
When a user asks "beginner Python courses" or "advanced machine learning classes," AI engines filter results by educationalLevel. A course marked "Beginner" gets surfaced for introductory queries; one marked "Advanced" gets surfaced for expert queries. Without this field, the AI engine has no structured signal for difficulty and must guess from the course title or description.
What the specs say
Schema.org: DefinedTerm, Text, URL. The level in terms of progression through an educational or training context. Examples of educational levels include 'beginner', 'intermediate' or 'advanced', and formal sets of level indicators. schema.org/educationalLevel
Google: Not mentioned. This field is not listed in Google's structured data documentation for Course. Google Course docs
How to find your value
- Course platform — Level badge or filter (Beginner, Intermediate, Advanced)
- Syllabus — Prerequisites section implies the target level
- Learning management system — Course metadata or catalog settings
- Accreditation body — Formal framework levels (e.g., CEFR A1/B2 for languages)
Format and code
educationalLevel accepts three formats:
Plain text (most common):
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Responsive Web Design",
"provider": {
"@type": "Organization",
"name": "freeCodeCamp",
"sameAs": "https://www.freecodecamp.org"
},
"educationalLevel": "Beginner"
}
DefinedTerm (formal framework):
{
"@context": "https://schema.org",
"@type": "Course",
"name": "German Language B2",
"provider": {
"@type": "Organization",
"name": "Goethe-Institut"
},
"educationalLevel": {
"@type": "DefinedTerm",
"name": "B2 Upper Intermediate",
"inDefinedTermSet": "https://www.coe.int/en/web/common-european-framework-reference-languages"
}
}
Common text values:
- Beginner — No prerequisites, introductory content
- Intermediate — Assumes foundational knowledge
- Advanced — Requires significant prior experience
- All Levels — Content spans multiple skill levels
Webflow implementation
Static pages
Add educationalLevel inside the Course JSON-LD block in Page Settings > Custom Code (Before ):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Introduction to Data Science",
"description": "Learn the fundamentals of data science with Python.",
"provider": {
"@type": "Organization",
"name": "DataCamp"
},
"educationalLevel": "Beginner"
}
</script>
CMS template pages
Map a CMS plain text field or dropdown option to educationalLevel. Store the value as a clean string: "Beginner," "Intermediate," or "Advanced."
In Schema HQ
educationalLevel is output in Course schema generation. Set the level once and it publishes alongside other Course fields in the JSON-LD output.
Real examples
freeCodeCamp (live markup):
{
"@type": "Course",
"name": "Responsive Web Design",
"description": "freeCodeCamp responsive web design certification",
"provider": {
"@type": "Organization",
"name": "freeCodeCamp",
"sameAs": "https://www.freecodecamp.org"
},
"educationalLevel": "Beginner",
"inLanguage": "en"
}
Related fields
- name — the course title
- description — what the course covers
- courseCode — the provider's internal identifier for the course
- timeRequired — how long the course takes to complete
FAQ
What values should I use for educationalLevel?
Use "Beginner," "Intermediate," or "Advanced" for general courses. For language courses, consider CEFR levels (A1 through C2) wrapped in a DefinedTerm. For academic courses, use the institution's classification system.
Does Google use educationalLevel in Course rich results?
Google does not list educationalLevel in its Course structured data requirements. The field is valid schema.org and AI engines use it to match courses to difficulty queries, but it will not trigger or enhance Google Course rich results on its own.