Skip to content

Event schema generator

Mark up concerts, workshops, meetups and festivals so Google can list them with date, venue and ticket information.

@Event
Appended to start/end so the time is unambiguous.
Venue
Tickets
People

Your entries are saved in this browser only (localStorage). Privacy

Required
4/4
Recommended
14/16

All Google-required properties present. That makes the page eligible, not guaranteed. Google's docs

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "EducationEvent",
  "name": "Structured Data Clinic: Product Markup",
  "description": "A hands-on evening fixing real merchant-listing warnings. Bring a laptop and a product page.",
  "image": "https://example.com/img/clinic-16x9.jpg",
  "startDate": "2026-11-12T18:30:00+01:00",
  "endDate": "2026-11-12T21:00:00+01:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Kulturhaus Mitte",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Auguststraße 21",
      "addressLocality": "Berlin",
      "postalCode": "10117",
      "addressCountry": "DE"
    }
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/clinic/tickets",
    "price": 25,
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "validFrom": "2026-09-01"
  },
  "organizer": {
    "@type": "Organization",
    "name": "Berlin SEO Meetup",
    "url": "https://example.com/meetup"
  }
}
</script>
  • ?Recommended for Event: add performer if it applies.performer
  • ?Recommended for Event: add performer.name if it applies.performer.name

Checked in your browser against the required and recommended properties Google documents for this type. Confirm with Google's Rich Results Test once it's live.

example.comexample.com/clinic/tickets
Structured Data Clinic: Product Markup
EUR 25In StockThu, Nov 12Kulturhaus Mitte
A hands-on evening fixing real merchant-listing warnings. Bring a laptop and a product page.

An illustration of what the markup can feed. Google decides what actually appears and valid markup never guarantees a rich result.

When to use Event markup

  • A page for one event that people can attend at a set time and place.
  • Each date of a recurring event gets its own Event.
  • Not for promotions, sales or vouchers, which Google's guidelines exclude.

Getting it right

  • Required: name, startDate, location and location.address. Recommended: description, endDate, eventStatus, image, offers, organizer and performer.
  • Always include the time-zone offset (e.g. 2026-11-12T18:30+01:00).
  • If an event moves, keep the markup and set eventStatus to EventRescheduled with previousStartDate, or EventPostponed if no new date is set.
  • Use an absolute ticket URL that leads straight to purchase.

Source: Google Search Central, Event structured data documentation, and schema.org/Event.

Google's property list

PropertyGoogle says
namerequired
startDaterequired
locationrequired
location.addressrequired
descriptionrecommended
endDaterecommended
eventStatusrecommended
imagerecommended
offersrecommended
offers.availabilityrecommended
offers.pricerecommended
offers.priceCurrencyrecommended
offers.urlrecommended
offers.validFromrecommended
organizerrecommended
organizer.namerecommended
organizer.urlrecommended
performerrecommended
performer.namerecommended
location.namerecommended

Example output

{
  "@context": "https://schema.org",
  "@type": "EducationEvent",
  "name": "Structured Data Clinic: Product Markup",
  "description": "A hands-on evening fixing real merchant-listing warnings. Bring a laptop and a product page.",
  "image": "https://example.com/img/clinic-16x9.jpg",
  "startDate": "2026-11-12T18:30:00+01:00",
  "endDate": "2026-11-12T21:00:00+01:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Kulturhaus Mitte",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Auguststraße 21",
      "addressLocality": "Berlin",
      "postalCode": "10117",
      "addressCountry": "DE"
    }
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/clinic/tickets",
    "price": 25,
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "validFrom": "2026-09-01"
  },
  "organizer": {
    "@type": "Organization",
    "name": "Berlin SEO Meetup",
    "url": "https://example.com/meetup"
  }
}

Event schema questions

Can I mark up online events?

schema.org supports VirtualLocation and eventAttendanceMode. Google's current Event docs are built around a Place with an address, so an online-only event may not get the event experience.

What happens to a cancelled event?

Set eventStatus to EventCancelled and keep the page live, so people searching for it see that it was cancelled.

Should I mark up a list of events on one page?

Each event should have its own details page with its own markup. A listing page may carry markup too if each event links to its page.

Related generators