XooCode(){

ExercisePlan

ExercisePlan dual-inherits from PhysicalActivity (via LifestyleModification → MedicalEntity) and CreativeWork. It is the canonical type for published training plans: couch-to-5k programmes, weight-training splits, rehab protocols, yoga courses.

Direct properties:

  • exerciseType (Text): type of exercise.
  • activityDuration: how long each session lasts.
  • activityFrequency: how often (per week).
  • intensity: QuantitativeValue or free text.
  • repetitions: reps per set.
  • restPeriods: rest between sets.
  • workload: energy expenditure or resistance load.
  • additionalVariable: free-text notes on any other variable.

Use category (PhysicalActivityCategory) and exerciseCourse (from PhysicalActivity) as well.

Full example of schema.org/ExercisePlan json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/ExercisePlan
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ExercisePlan",
  "@id": "https://xoocode.com/runners/c25k-programme",
  "name": "Thunderdome 5K — Couch-to-5k 8-week programme",
  "description": "Eight-week structured running plan: progressive walk/run intervals to a continuous 5 km run by week 8.",
  "author": { "@type": "Person", "name": "Priya Chen" },
  "category": "https://schema.org/AerobicActivity",
  "exerciseType": "Interval running",
  "activityDuration": "PT30M",
  "activityFrequency": "3 sessions per week",
  "intensity": "Moderate; target heart rate 65-75% of max",
  "restPeriods": "60-90 seconds between intervals in weeks 1-4",
  "additionalVariable": "Sessions on non-consecutive days; cross-training (swim or cycle) recommended on off days"
}
</script>

Minimal valid version

The smallest markup that still produces a valid ExercisePlan entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/ExercisePlan (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ExercisePlan",
  "name": "Thunderdome 5K",
  "exerciseType": "Interval running",
  "activityFrequency": "3 per week"
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

  • No dedicated rich result (fitness-content graphs)
    Google docs

Common ExercisePlan mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Missing category

    Wrong
    ExercisePlan with no PhysicalActivityCategory
    Right
    category = AerobicActivity / StrengthTraining / Balance / Flexibility

    Fitness-search filters on category; omitting it flattens the plan into the miscellaneous bucket.

  2. 02

    activityDuration as plain number

    Wrong
    "activityDuration": 30
    Right
    ISO 8601 duration "PT30M"

    Plain numbers are unitless.

About the example data

The Thunderdome 5K Programme, an 8-week couch-to-5k plan.

Comments

Loading comments...

Leave a comment