Free Event Schema Generator

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

Required

  • Visible Event 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 Event schema in a stack

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

  • Event Schema Stack

    Event pages with rich details, breadcrumb context, and FAQs. Works for general events and subtypes like MusicEvent or BusinessEvent.

  • Event Volunteer Signup Stack

    Event volunteer signup pages with Event + Offer, FAQs, and breadcrumb navigation.

  • Contest / Giveaway Stack

    Contest and giveaway landing pages with Event + Offer context, FAQs, and breadcrumb navigation.

  • Sports Camp Stack

    Sports camp pages with Event + Organization context, FAQs, and breadcrumb navigation.

  • Beta / Early Access Stack

    Beta program pages with Event, Offer, FAQs, and breadcrumbs.

  • Pet Adoption Stack

    Pet adoption event/pages with Event + Organization context, FAQs, and breadcrumb navigation.

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.

Event Schema Generator — Promote In‑Person and Online Events

Generate valid Event JSON‑LD that clarifies dates, location or virtual access, and ticketing. Improve understanding and eligibility for event‑rich results.

Try the Event Generator

Why many event pages underperform

  • Your snippet doesn’t clearly show date/time or venue/virtual access.
  • Virtual events are ambiguous without a join URL and attendance mode.
  • Ticket info is missing or inconsistent (price, currency, availability).
  • Timezone mistakes in dates lead to confusing search displays.

How SwiftSchema helps

The Event generator focuses on the essentials: start/end dates with timezone, attendance mode (online, in‑person, or hybrid), a proper location (Place or VirtualLocation), and ticket Offers with price, currency, and availability.

It outputs clean, copy‑ready JSON‑LD per event so your listings stay consistent and easy to validate.

How it works

  1. 01

    Choose Event in the generator below.

  2. 02

    Enter name, description, and start/end dates with timezone (ISO 8601).

  3. 03

    Select attendance mode and add a Place (with PostalAddress) or a VirtualLocation URL.

  4. 04

    If ticketed, add an Offer: price, currency, URL, and availability.

  5. 05

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

Ready to build the markup?

Paste once per event. Validate. Ship.

Generate Event JSON‑LD

What is Event structured data?

Event structured data describes your event’s essential details — dates, location or virtual access, and ticketing — so search engines can better understand and present it. Accurate markup improves clarity and can make your listings eligible for event-rich results.

Essential properties

  1. name — event title.
  2. startDate / endDate — ISO 8601 timestamps with timezone.
  3. location — Place (with name + PostalAddress) or VirtualLocation (url).
  4. eventAttendanceMode — OnlineEventAttendanceMode, OfflineEventAttendanceMode, or MixedEventAttendanceMode.
  5. eventStatus — EventScheduled, EventPostponed, etc. Update as needed.
  6. description — brief summary of the event content and audience.
  7. image — key visual or promotional asset.
  8. organizer / performer — Person or Organization.
  9. offers — price, currency, availability, and ticket URL.
  10. keywords / about — optional topical tags.
  11. inLanguage — set when localizing event pages.

Content prep checklist

  • Confirm event title, description, and schedule (with timezone).
  • Gather venue details or virtual access instructions.
  • Collect speaker/performer bios and photos.
  • Decide on ticketing tiers (free, general admission, VIP) with prices and availability.
  • Add FAQs, agenda, and highlight key benefits for attendees.
  • Provide social proof (testimonials, past highlights).

Implementation workflow

  1. Update the event page with the finalized details above.
  2. Generate Event JSON‑LD covering name, dates, location, attendance mode, organizer, and offers.
  3. Embed the schema once per event page. For multi-event listings, only include schema when the page focuses on a specific event.
  4. Validate in Rich Results Test; fix warnings for missing attributes (location, offers).
  5. Monitor Search Console for event enhancements.
  6. Update schema when event status, venue, or pricing changes.
  7. Localize: add inLanguage and localized URLs when applicable; align with hreflang/canonicals.

Handling virtual and hybrid events

  • Use VirtualLocation for online events with a url to join or register.
  • For hybrid events, combine eventAttendanceMode: Mixed with both Place and VirtualLocation entries.
  • Provide clear instructions in content (Zoom link, Slack invite, etc.) and ensure the schema references the same URL.
  • If ticketing/registration is required before access, note it in content and ensure offers.url points to the registration page.

Ticketing and Offers

  • Include Offer objects for each tier with price, priceCurrency, availability, url, validFrom/validThrough.
  • For free events, keep price: 0 but still provide an Offer to show registration is required.
  • Update availability (InStock, SoldOut, PreOrder) as tickets sell.
  • Use UTMs on the offer URLs to track conversions but keep canonical URL clean if necessary.

Troubleshooting checklist

  • Missing timezone: include offsets in ISO timestamps.
  • Wrong attendance mode: align eventAttendanceMode with location.
  • Incomplete address: provide full PostalAddress for in-person venues.
  • No organizer: add Person/Organization for credibility.
  • Outdated status: update eventStatus if the event is canceled or postponed.
  • Unavailable registration links: ensure offers.url resolves and matches on-page CTAs.
  • Hybrid inconsistencies: include both Place and VirtualLocation when claiming hybrid, and describe it in content.

Common Errors & Fixes

  • Missing timezone: use full ISO 8601 timestamps (e.g., 2025-11-12T18:00:00-05:00).
  • Wrong attendance type: ensure eventAttendanceMode matches your location type.
  • Incomplete address: for in-person, supply a structured PostalAddress.
  • Missing offer details: include price/currency even if free (price: 0), and set availability.
  • Duplicate schema: avoid multiple Event blocks for the same occurrence on one page.

On-page parity checklist

  • Event title and description on-page match name and description in schema.
  • Dates/times (with timezone) match startDate/endDate; status updates are reflected on-page and in eventStatus.
  • Venue info matches location (address) and virtual join links match VirtualLocation/offers.url.
  • Ticket prices/tiers on-page align with offers and availability states.
  • Attendance mode (online/offline/mixed) is clear on-page and matches schema.
  • Only one Event JSON-LD block per occurrence on the page; if listing multiple events, scope schema to each detail page.

Validation and maintenance

  • Validate with Rich Results Test after changes to dates, venues, or ticketing.
  • Update eventStatus and offers as availability or plans change; revalidate.
  • Monitor Search Console for event enhancement issues; fix crawlability or structured data errors.
  • Keep lastReviewed current and schedule checks before event campaigns to ensure accuracy.

Required properties

  • name
  • startDate
  • location.name

Recommended properties

  • description
  • image
  • endDate
  • eventStatus
  • eventAttendanceMode
  • location.address
  • organizer.name
  • performer.name
  • offers.price
  • offers.priceCurrency
  • offers.url
  • offers.availability
Minimal Online Event
Validate
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "SwiftSchema Live Workshop: Implementing Product Structured Data",
  "description": "A free, hands-on session to implement Product JSON-LD and validate it.",
  "startDate": "2025-11-12T18:00:00-05:00",
  "endDate": "2025-11-12T19:30:00-05:00",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "image": [
    "https://example.com/images/workshop.webp"
  ],
  "location": {
    "@type": "VirtualLocation",
    "url": "https://example.com/workshop"
  },
  "organizer": {
    "@type": "Organization",
    "name": "SwiftSchema",
    "url": "https://www.swiftschema.com"
  },
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/workshop/register"
  }
}
In-person Event with address and multiple offers
Validate
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "SwiftSchema Summit",
  "description": "A one-day summit on structured data best practices.",
  "startDate": "2026-05-15T09:00:00-05:00",
  "endDate": "2026-05-15T17:00:00-05:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "image": [
    "https://example.com/images/summit-hero.webp"
  ],
  "location": {
    "@type": "Place",
    "name": "Austin Conference Center",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "500 Congress Ave",
      "addressLocality": "Austin",
      "addressRegion": "TX",
      "postalCode": "78701",
      "addressCountry": "US"
    }
  },
  "organizer": {
    "@type": "Organization",
    "name": "SwiftSchema",
    "url": "https://www.swiftschema.com"
  },
  "offers": [
    {
      "@type": "Offer",
      "name": "General Admission",
      "price": "199",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://example.com/summit/register?ticket=ga"
    },
    {
      "@type": "Offer",
      "name": "VIP",
      "price": "399",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://example.com/summit/register?ticket=vip"
    }
  ]
}

FAQs

What does Event structured data do?Show

It tells search engines what your event is about (name, dates, location/virtual access, ticketing), which can help your listings qualify for event-rich results and improve understanding.

How do I mark up online or hybrid events?Show

Use `eventAttendanceMode` with `OnlineEventAttendanceMode` for virtual events or `MixedEventAttendanceMode` for hybrid, and use a `VirtualLocation` (with a URL) in `location`.

What location fields are needed?Show

For in‑person events, provide a `Place` with `name` and an `address` (street, locality, region, postal code, country). For virtual events, use `VirtualLocation` and a join/access URL.

Do I need Offers for free events?Show

Offers are recommended. If your event is free, you can use an Offer with `price` set to `0` and a valid `priceCurrency`.

How do I keep my schema accurate?Show

Set `eventStatus` (for example, `EventScheduled`, `EventCancelled`, or `EventPostponed`) and keep dates, location, and ticket links up to date.

Related types

Browse all schema types

References