Home Activity Schema — Describe workouts with ExercisePlan
“Home activity” was Google's name for a retired search feature. The schema.org type for a workout is ExercisePlan: duration, exercise type, frequency, reps, and instructions that match your page.
Generate ExercisePlan JSON-LDWhy workout markup gets skipped
- Duration and instructions don’t match what the page shows.
- Equipment isn’t listed, so workouts look incomplete to users and crawlers.
- Reps and sets are missing or inconsistent across sections.
- No landing page URL or image, so the entity is hard to trust.
How SwiftSchema helps
Captures duration, exercise type, frequency, reps, effort, and instructions as ExercisePlan in one pass.
Outputs crawlable JSON-LD aligned with your visible copy to avoid mismatches.
Maps sets and equipment to additionalVariable and calories to workload, because ExercisePlan has no dedicated properties for them.
How it works
- 01
Add workout name, description, landing page URL, and hero image.
- 02
Set exerciseType and activityDuration; add frequency if relevant.
- 03
List equipment and sets; they are output as additionalVariable.
- 04
Add repetitions and brief instructions (output as text); link a VideoObject if you host a demo.
- 05
Generate JSON-LD and embed once on the workout page; keep it in sync when the plan changes.
Ready to build the markup?
Duration, equipment, and instructions in minutes.
Home Activity Schema: Surface key workout details
“Home activity” was the name of a Google Search feature for at-home workouts. Google no longer shows it, and there is no HomeActivity type on schema.org. The schema.org type for a workout routine is ExercisePlan, a kind of CreativeWork and PhysicalActivity. It describes what the workout involves: the exercise type, duration, frequency, reps, and how to do it.
Core properties
- name — The workout title. Match the on-page H1.
- exerciseType — e.g., HIIT, yoga, strength, cardio.
- activityDuration — ISO 8601 duration (e.g.,
PT30M).
Useful properties
- activityFrequency — How often to perform it (e.g., “3x per week”).
- repetitions — Reps per movement, for rep-based workouts.
- workload — Expected energy expenditure, such as “250 Calories”.
- additionalVariable — Anything else the plan needs, such as the number of sets or the equipment. ExercisePlan has no dedicated sets or equipment property.
- text — Short instructions or a circuit summary.
- url / image — Landing page and hero image for the workout.
Implementation checklist
- Align the workout name, duration, and equipment with visible text.
- Add repetitions (and sets in additionalVariable) if the workout is rep-based; otherwise leave them out.
- Provide instructions or link to a demo video via VideoObject on the page.
- Embed JSON-LD once per workout page and update when routines change.
- Validate in the Schema Markup Validator and recheck after major edits.
Common pitfalls
- Duration doesn’t match the timer shown on-page or in video.
- Equipment the workout needs isn’t listed on the page or in additionalVariable.
- Copy/paste workouts with stale reps and sets across pages.
- No landing page URL, making the entity hard to index.
Recommended properties
nameexerciseTypeactivityDurationactivityFrequencyrepetitionsworkloadadditionalVariabletext
{
"@context": "https://schema.org",
"@type": "ExercisePlan",
"name": "30-Minute No-Equipment HIIT",
"description": "A 30-minute HIIT circuit with bodyweight moves and minimal rest.",
"url": "https://example.com/workouts/30m-hiit",
"exerciseType": "HIIT",
"activityDuration": "PT30M",
"activityFrequency": "3x per week",
"repetitions": 12,
"workload": "250 Calories",
"additionalVariable": [
"3 sets",
"Equipment: yoga mat, water bottle"
],
"text": "3 rounds: 12 squats, 12 pushups, 12 lunges per leg, 30s plank; 60s rest between rounds.",
"image": "https://example.com/images/hiit-workout.webp"
}FAQs
Do I need both activityDuration and repetitions?ShowHide
Use activityDuration for total time. If the workout is rep-based, add repetitions too. ExercisePlan has no sets property, so put the number of sets in additionalVariable (for example "3 sets").
Should I mark up every exercise in a circuit?ShowHide
Use a single ExercisePlan per workout. Describe the sub-movements in its text property, or link a VideoObject if you host a demo.
What about required equipment?ShowHide
ExercisePlan has no equipment property. List the equipment in additionalVariable (for example "Equipment: dumbbells, mat") and keep it visible on the page.