Free tool — runs in your browser, nothing sent to a server

Event Schema Generator

Type in your event name, date, venue, and ticket link. The tool writes the code that gets your event into Google's event listings and Maps, instead of leaving it buried on a page nobody finds.

Your details

Event JSON-LD
Fill in the required fields and your JSON-LD appears here.

Paste the block anywhere inside <head> or <body>, then confirm it parses with the schema validator.

What is event schema, and why would you add it?

Search "things to do in Bristol this weekend" and Google does not hand back ten links. It shows a carousel of actual events with dates, venues, and ticket buttons. Getting into that carousel has almost nothing to do with how well your event page ranks. It depends on whether Google can tell that the page describes an event at all.

Event schema is how you tell it. It is a block of code, invisible to visitors, stating the facts plainly: this is the event name, it starts at this date and time, it happens at this venue, tickets cost this much and are on sale here. Google reads it directly instead of trying to work out which of the four dates on your page is the one that matters.

For anything ticketed, that listing is usually worth more than the ranking position of the page itself, because it puts your date and your ticket link in front of someone who has already decided to go out.

The part most hand-written markup gets wrong is hybrid events. If people can attend both in person and online, Google expects both a physical venue and a stream location in the same block. Pick the mixed attendance mode here and fill in both, and this tool builds that structure correctly.

What This Tool Generates

12 event types

Business, music, sports, theatre, festival, and more

Attendance mode

Offline, online, or mixed, with matching location nodes

Hybrid location array

Place and VirtualLocation together, as Google expects

Event status

Scheduled, postponed, rescheduled, cancelled, moved online

Organiser

Organization node with name and URL

Ticket offer

Price, currency, availability, ticket URL, and on-sale date

Keep the markup alive after the event changes

Event markup is the kind that goes stale fastest, and stale event data is worse than none: a sold-out event still advertising tickets, or a rescheduled one still showing the old date, damages trust in a way a missing listing does not. If dates or availability can change, generate the JSON-LD from the same source your page renders from. When it is live, confirm it parses with the schema validator.

Frequently Asked Questions

What does Event schema get me in search?

Eligibility for the event experience in Google Search and Google Maps: a date, a venue, and a ticket link surfaced directly in results, plus inclusion in the event carousels that appear for queries like 'things to do in Bristol this weekend'. For anything ticketed, that visibility usually matters more than the ranking position of the page itself.

Which fields does Google actually require?

Name, startDate, and location. Everything else is recommended. But 'recommended' understates it: without an image, an organiser, and an offer with a price, your listing loses to the ones that have them. Fill in as much as is genuinely true.

How do I mark up a hybrid event?

Set the attendance mode to MixedEventAttendanceMode and supply both a physical venue and a stream URL. Google then expects location to be an array holding both a Place and a VirtualLocation. This tool builds that array automatically when you pick the hybrid mode and fill in both, which is the part most hand-written markup gets wrong.

What format do the dates need to be in?

ISO 8601. The date pickers here emit that shape for you. If you are hand-editing afterwards, include the timezone offset when the event has a specific start time, for example 2026-04-16T09:00:00+01:00. A bare date with no time is valid for all-day events, but a time with no offset is ambiguous and Google may read it in the wrong zone.

My event was cancelled. Do I delete the markup?

No, and this is the one case where leaving the page up matters. Change eventStatus to EventCancelled and keep the page live with the original startDate. That is how Google learns to stop showing it as upcoming and to tell people who search for it that it is off. Deleting the page leaves stale results in circulation for weeks.

Can one page carry multiple events?

Yes, as an array of Event objects, and that is correct for a listings page showing a season of dates. This generator produces one event at a time, which is right for a dedicated event page. For a multi-date listing, generate each one and combine them into an array, or mark up each date's own page separately.

Do I need an offer if the event is free?

Include one with a price of 0 and the currency set. That is an explicit signal that the event is free, which Google can then surface. Omitting the offer entirely just means it does not know, and free events that say so tend to draw better click-through than ones that leave people guessing.

Every event page, checked in one crawl

CrawlRaven crawls your whole site, validates the structured data on every page, and joins it to Search Console so you know which broken markup is costing you actual impressions.