Free Gym Schema Generator

Fill in the facts visible on your page, copy the Gym 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.

Business identity

Describe the same business, page, and public contact details that a customer can see.

Location and contact

Use one address or service-area location per schema block. Coordinates are optional.

Opening hours

Add one Schema.org opening-hours specification per schedule, such as Mo-Fr 09:00-17:00.

Opening-hours specification

Use day ranges and 24-hour times.

Ratings and profiles
Ratings and profiles

Only add an aggregate rating that visitors can see on this page. Profile URLs should represent the same business.

Profile URL

Add official social or business-directory profiles.

Required

  • Visible Gym 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
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.

Gym Schema Generator — Turn Searches into Memberships

Generate clean JSON‑LD for gyms and fitness centers. Clarify address, phone, hours, amenities, and classes to improve local visibility and sign‑ups.

Try the Gym Generator

Why many gym pages underperform

  • Bare snippets: competitors show hours and phone while yours looks generic.
  • Amenities and classes aren’t obvious to searchers comparing gyms.
  • Inconsistent NAP (name, address, phone) undermines map accuracy.
  • Validator warnings for address fields or `openingHours` slow updates.

How SwiftSchema helps

Our generator ensures essentials are present and correctly formatted — full address, telephone, opening hours — and encourages listing amenities and classes in visible content.

It outputs copy‑ready JSON‑LD per location page so your markup stays consistent. Include ratings only when policy‑compliant; link to membership or class pages in your site content.

How it works

  1. 01

    Choose HealthClub in the generator below.

  2. 02

    Enter business name and full address (street, city, region, postal code, country).

  3. 03

    Add telephone and opening hours; summarize amenities and classes in content.

  4. 04

    Optionally include AggregateRating if you have compliant, genuine reviews.

  5. 05

    Copy JSON or Script, paste on each location page, and validate in the Rich Results Test.

Ready to build the markup?

Use once per location. Validate. Ship.

Generate Gym JSON‑LD

What is HealthClub structured data?

HealthClub is a LocalBusiness subtype for gyms and fitness centers. Marking up your location page with accurate address, phone, hours, and amenity context helps search engines understand your business and convert searchers into members.

Essential schema fields

  1. name — match signage and Google Business Profile (“Peak Fitness Downtown”).
  2. address — include suite numbers and full PostalAddress details.
  3. telephone — main phone; add contactPoint for membership sales or class bookings.
  4. openingHoursSpecification — list daily hours, with special entries for classes or 24/7 access.
  5. priceRange — optional; indicate membership tiers (“$$” or “Starting at $29/month”).
  6. amenityFeature / makesOffer — highlight amenities (pool, sauna, childcare, classes).
  7. image — photos of facilities, equipment, classes.
  8. aggregateRating / review — use only with first-party review data per policy.
  9. sameAs — link to official social, ClassPass, or local directories.
  10. areaServed — mention service radius if offering off-site training or mobile classes.
  11. contactPoint — separate membership, training, or support lines; add availableLanguage if relevant.

Content prep checklist

  • Describe your facilities (weight room, cardio area, studios, pool, spa).
  • List class schedules, personal training options, and membership perks.
  • Note amenities: towel service, lockers, childcare, parking.
  • Include membership pricing or call-to-action to request pricing.
  • Highlight special programs (CrossFit, HIIT, yoga, rehab).
  • Provide staff profiles or certifications to build trust.
  • Include safety/cleaning protocols, accessibility features, and parking/transportation details.

Implementation workflow

  1. Create a page per location with the above content and CTAs.
  2. Generate HealthClub JSON‑LD including address, phone, hours, amenities, and optional ratings.
  3. Add makesOffer / hasOfferCatalog for membership plans or class packages.
  4. Embed the schema once per page; disable conflicting LocalBusiness schema from other widgets.
  5. Validate via Rich Results Test and monitor local SERP performance.

Multi-location and class considerations

  • Use LocalBusiness schema per club; link to a Location hub page with ItemList.
  • If you offer franchising or multiple brands, use parentOrganization/subOrganization.
  • Link to class schedules using ItemList or Event schema for special classes/events.
  • Keep class descriptions and membership perks updated seasonally.
  • If you offer virtual classes, mention them in content and consider VideoObject/Event schema for key sessions.

Troubleshooting checklist

  • Incomplete address: include all PostalAddress fields; mention suite numbers.
  • Misformatted hours: use proper openingHoursSpecification strings.
  • Misaligned NAP: sync phone/address across header, footer, and Google Business Profile.
  • No amenity info: add amenityFeature entries so searchers see what makes your gym unique.
  • Duplicate schema: ensure only one HealthClub block is injected per page.

Common Errors & Fixes

  • Incomplete address: provide city, region, postal code, and country.
  • Misformatted hours: follow recognized openingHours formats.
  • Out-of-date contact info: keep telephone and hours current.
  • Missing amenities: describe services in content and consider referencing them via makesOffer.

On-page parity checklist

  • NAP consistency: name/address/phone match schema, page content, footer, and Google Business Profile.
  • Hours on-page match openingHours/openingHoursSpecification.
  • Amenities/classes shown on-page match makesOffer/amenityFeature.
  • Prices or membership CTAs on-page align with priceRange/offers (if used).
  • Images referenced in schema appear on-page and are publicly accessible.
  • Only one HealthClub schema block per location page.

Validation and maintenance

  • Validate via Rich Results Test after changes to hours, services, or branding.
  • Revalidate when adding/removing amenities or class programs.
  • Keep lastReviewed current; assign owners to update schema alongside content/operations changes.

Local SEO and user experience essentials

  • Add geo.latitude/geo.longitude and a visible map embed to reduce mis-pins.
  • Include parking, transit directions, and accessibility details (ramps, elevators, showers).
  • Show seasonal updates: holiday hours, summer class schedules, or pool maintenance closures.
  • If you offer free trials, day passes, or corporate discounts, state them in on-page copy and offers.
  • Link to reviews on first-party pages if policy-compliant; avoid marking up third-party snippets.

Modeling memberships and passes

  • Use hasOfferCatalog with Offer entries for memberships (monthly, annual), class packs, and day passes.
  • Add eligibleRegion for corporate or student discounts; clarify priceRange and any joining fees.
  • If you sell recurring subscriptions, note cancellation terms in the page content.
  • For appointment-based personal training, consider linking to Booking markup or a dedicated Service page.

Safety, hygiene, and accessibility

  • Document cleaning cadence, towel policies, and equipment sanitization routines in on-page copy.
  • Mention staff certifications (CPR, strength coaching) and supervision hours for weight rooms.
  • Note accessible equipment, gender-neutral facilities, or reserved quiet spaces if provided.
  • Add emergency contact instructions (front desk, security) and display them near your contact block.

Monitoring and quality assurance

  • Track changes in Google Business Profile (hours, categories) and mirror updates in schema and on-page content.
  • Run quarterly audits to ensure amenity lists, prices, and instructor bios remain accurate.
  • Log validator outputs and schema diffs so future editors know what changed and why.

Required properties

  • name
  • address.streetAddress
  • address.addressLocality
  • address.addressRegion
  • address.postalCode
  • address.addressCountry

Recommended properties

  • telephone
  • openingHours
  • openingHoursSpecification
  • aggregateRating.ratingValue
  • aggregateRating.ratingCount
  • makesOffer[].itemOffered.name
  • amenityFeature
  • priceRange
  • image
  • areaServed
  • contactPoint.telephone
  • contactPoint.contactType
Minimal JSON-LD
Validate
{
  "@context": "https://schema.org",
  "@type": "HealthClub",
  "name": "Peak Fitness",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "210 Center St",
    "addressLocality": "Raleigh",
    "addressRegion": "NC",
    "postalCode": "27601",
    "addressCountry": "US"
  }
}
HealthClub with amenities and contact points
Validate
{
  "@context": "https://schema.org",
  "@type": "HealthClub",
  "name": "Peak Fitness Downtown",
  "url": "https://www.peakfitness.example/locations/downtown",
  "image": [
    "https://www.peakfitness.example/images/downtown-gym.jpg"
  ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "210 Center St",
    "addressLocality": "Raleigh",
    "addressRegion": "NC",
    "postalCode": "27601",
    "addressCountry": "US"
  },
  "telephone": "+1-919-555-0100",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "05:00",
      "closes": "22:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "opens": "07:00",
      "closes": "20:00"
    }
  ],
  "priceRange": "$$",
  "makesOffer": [
    {
      "@type": "Offer",
      "itemOffered": {
        "@type": "Service",
        "name": "Open gym"
      }
    },
    {
      "@type": "Offer",
      "itemOffered": {
        "@type": "Service",
        "name": "Personal training"
      }
    },
    {
      "@type": "Offer",
      "itemOffered": {
        "@type": "Service",
        "name": "Group classes"
      }
    }
  ],
  "amenityFeature": [
    {
      "@type": "LocationFeatureSpecification",
      "name": "Pool",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Sauna",
      "value": true
    },
    {
      "@type": "LocationFeatureSpecification",
      "name": "Childcare",
      "value": true
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "ratingCount": "186"
  },
  "contactPoint": [
    {
      "@type": "ContactPoint",
      "contactType": "membership",
      "telephone": "+1-919-555-0100"
    },
    {
      "@type": "ContactPoint",
      "contactType": "personal training",
      "telephone": "+1-919-555-0199"
    }
  ]
}

FAQs

Can I list amenities?Show

Yes, list amenities (pool, classes, sauna) in content and description.

Multiple locations?Show

Create a Place page and markup for each location.

Related types

Browse all schema types

References