Medians, not means: RSVP counts are heavily right-skewed, so a mean would be dominated by a handful of large events. Amber cells have too few events to cite; their N is shown so you can judge the gap yourself.
Methodology
Source. First-party: the production database behind whos-in.app, read by scripts/compute-event-benchmarks.mjs (read-only; it never writes). Generated 22 August 2026. The page renders straight from the script's JSON output, so no figure here is typed by hand.
Window. Events whose start date falls between 23 February 2026 and 22 August 2026 (180 days, past events only). The script scanned 790 event records and kept 435 as eligible after the exclusions below.
| Exclusion | Rule | Events |
|---|---|---|
| recurring instance | isRecurringInstance === true (auto-materialised series occurrences; same convention as the platform health checks) | 183 |
| system seeded | organizerId in {system-curator} (platform-seeded listings, not organiser-created) | 92 |
| cancelled | status === "cancelled" | 45 |
| demo or test flag | isDemoData / isDemo / demo / testEvent === true | 18 |
| test title | title matches /\btest(?:ing|s)?\b|\bdemo\b|\(test\)|\(demo\)/i | 17 |
- Citation threshold. A cell is citable only when it covers at least 30 events. Below that it is published with its N and the marker “insufficient N — do not cite”. The threshold is a fixed constant in the script, applied identically to every cell.
- Statistics. Median with 25th and 75th percentiles (linear-interpolation quantiles). No means, no trimming, no smoothing.
- Categories. The 8 most common event categories in the eligible set are named; everything else is grouped as “all other categories”. “Other” is the organiser's own uncategorised choice, reported separately.
- No-show gate. 1 − checkedIn / confirmed, counted from each event's RSVP documents. Gate: the event has at least one RSVP with checkedIn === true and is not virtual. Events whose organiser never scanned anyone are excluded, not counted as 100% no-show.
- Waitlist gate. promoted / (promoted + still waitlisted), from RSVP documents (promotedFromWaitlist === true vs status === "waitlisted"), for events with any waitlist activity (waitlistCount > 0 or a promoted RSVP).
- Sampling cap. Time to first RSVP needs one RSVP query per event, so it is computed on the 300 most recent (by startDate) eligible events with confirmedCount >= 1 (cap 300; actual sample 273). Fill rate and RSVP counts use the event counters and cover every eligible event, no sampling. 274 per-event RSVP queries were issued in total.
- Organiser self-RSVP. The organiser's own RSVP is ignored when timing the first RSVP (it is often a self-test) but counts toward fill rate and attendance, because the organiser is a real attendee.
- Limitations. These are community events hosted on one platform, skewed toward free, small, social and fitness events. They are not a survey of the events industry; for published industry benchmarks see the other reports in the Research Hub.
RSVP fill rate (capped events)
confirmedCount / maxCapacity for events with maxCapacity > 0. Raw and unclamped (a value above 1 means confirmed RSVPs exceeded the capacity set at the time). 37% of capped events in the window had zero confirmed RSVPs — typically pages that were created and never shared — which pulls the all-events median down. The second table restricts to events with at least one RSVP.
All capped events (N = 367)
| Breakdown | Bucket | N | Median | P25 | P75 | Status |
|---|---|---|---|---|---|---|
| Overall | All eligible events | 367 | 3.3% | 0.0% | 30.0% | Citable |
| Paid vs free | Free events | 334 | 2.0% | 0.0% | 24.3% | Citable |
| Paid vs free | Paid events | 33 | 25.0% | 7.1% | 50.0% | Citable |
| Category | Other (uncategorised) | 83 | 3.3% | 0.0% | 28.3% | Citable |
| Category | Party | 58 | 0.0% | 0.0% | 7.0% | Citable |
| Category | Social | 31 | 2.0% | 0.0% | 55.0% | Citable |
| Category | Fitness | 36 | 28.1% | 7.8% | 56.3% | Citable |
| Category | Sports | 24 | 7.5% | 0.0% | 31.3% | insufficient N — do not cite |
| Category | Training | 26 | 19.2% | 0.3% | 83.3% | insufficient N — do not cite |
| Category | Yoga | 15 | 0.0% | 0.0% | 6.5% | insufficient N — do not cite |
| Category | Padel | 12 | 2.8% | 0.0% | 33.9% | insufficient N — do not cite |
| Category | All other categories (grouped) | 82 | 1.5% | 0.0% | 11.9% | Citable |
Capped events with at least one confirmed RSVP (N = 231)
Same ratio, restricted to capped events where confirmedCount >= 1 — removes pages that were created but never shared.
| Breakdown | Bucket | N | Median | P25 | P75 | Status |
|---|---|---|---|---|---|---|
| Overall | All eligible events | 231 | 14.0% | 3.3% | 54.8% | Citable |
| Paid vs free | Free events | 203 | 11.5% | 3.3% | 56.5% | Citable |
| Paid vs free | Paid events | 28 | 28.1% | 13.1% | 50.0% | insufficient N — do not cite |
| Category | Other (uncategorised) | 56 | 10.0% | 3.3% | 50.8% | Citable |
| Category | Party | 28 | 8.0% | 2.0% | 40.8% | insufficient N — do not cite |
| Category | Social | 20 | 19.0% | 3.0% | 66.8% | insufficient N — do not cite |
| Category | Fitness | 29 | 41.7% | 25.0% | 58.3% | insufficient N — do not cite |
| Category | Sports | 17 | 11.5% | 6.7% | 46.7% | insufficient N — do not cite |
| Category | Training | 19 | 50.0% | 4.5% | 100.0% | insufficient N — do not cite |
| Category | Yoga | 5 | 10.0% | 8.0% | 20.0% | insufficient N — do not cite |
| Category | Padel | 7 | 28.6% | 15.0% | 75.0% | insufficient N — do not cite |
| Category | All other categories (grouped) | 50 | 7.6% | 3.3% | 32.3% | Citable |
Confirmed RSVPs per event (uncapped events)
Distribution of confirmedCount for events with no capacity limit (maxCapacity empty or 0). Includes events with zero RSVPs. 38% of uncapped events had zero confirmed RSVPs. N = 68.
| Breakdown | Bucket | N | Median | P25 | P75 | Status |
|---|---|---|---|---|---|---|
| Overall | All eligible events | 68 | 1 | 0 | 11 | Citable |
| Paid vs free | Free events | 68 | 1 | 0 | 11 | Citable |
| Paid vs free | Paid events | 0 | — | — | — | insufficient N — do not cite |
| Category | Other (uncategorised) | 14 | 0 | 0 | 8.5 | insufficient N — do not cite |
| Category | Party | 25 | 2 | 0 | 11 | insufficient N — do not cite |
| Category | Social | 8 | 6 | 0 | 9.5 | insufficient N — do not cite |
| Category | Fitness | 1 | 6 | 6 | 6 | insufficient N — do not cite |
| Category | Sports | 5 | 1 | 1 | 8 | insufficient N — do not cite |
| Category | Training | 1 | 13 | 13 | 13 | insufficient N — do not cite |
| Category | Yoga | 0 | — | — | — | insufficient N — do not cite |
| Category | Padel | 0 | — | — | — | insufficient N — do not cite |
| Category | All other categories (grouped) | 14 | 0.5 | 0 | 4 | insufficient N — do not cite |
No-show rate (events that used check-in)
1 − checkedIn / confirmed, counted from each event's RSVP documents. Gate: the event has at least one RSVP with checkedIn === true and is not virtual. Events whose organiser never scanned anyone are excluded, not counted as 100% no-show. Only 3 eligible events in the window recorded a check-in, so N = 3: every cell below is published for transparency and none of it is citable. For published no-show benchmarks see No-Show Rates by Industry.
| Breakdown | Bucket | N | Median | P25 | P75 | Status |
|---|---|---|---|---|---|---|
| Overall | All eligible events | 3 | 0.0% | 0.0% | 47.8% | insufficient N — do not cite |
| Paid vs free | Free events | 3 | 0.0% | 0.0% | 47.8% | insufficient N — do not cite |
| Paid vs free | Paid events | 0 | — | — | — | insufficient N — do not cite |
| Category | Other (uncategorised) | 1 | 95.7% | 95.7% | 95.7% | insufficient N — do not cite |
| Category | Party | 0 | — | — | — | insufficient N — do not cite |
| Category | Social | 1 | 0.0% | 0.0% | 0.0% | insufficient N — do not cite |
| Category | Fitness | 0 | — | — | — | insufficient N — do not cite |
| Category | Sports | 0 | — | — | — | insufficient N — do not cite |
| Category | Training | 0 | — | — | — | insufficient N — do not cite |
| Category | Yoga | 0 | — | — | — | insufficient N — do not cite |
| Category | Padel | 0 | — | — | — | insufficient N — do not cite |
| Category | All other categories (grouped) | 1 | 0.0% | 0.0% | 0.0% | insufficient N — do not cite |
Waitlist promotion rate (events that had a waitlist)
promoted / (promoted + still waitlisted), from RSVP documents (promotedFromWaitlist === true vs status === "waitlisted"), for events with any waitlist activity (waitlistCount > 0 or a promoted RSVP). N = 10 events had any waitlist activity in the window.
| Breakdown | Bucket | N | Median | P25 | P75 | Status |
|---|---|---|---|---|---|---|
| Overall | All eligible events | 10 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
| Paid vs free | Free events | 10 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
| Paid vs free | Paid events | 0 | — | — | — | insufficient N — do not cite |
| Category | Other (uncategorised) | 1 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
| Category | Party | 2 | 50.0% | 25.0% | 75.0% | insufficient N — do not cite |
| Category | Social | 1 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
| Category | Fitness | 1 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
| Category | Sports | 0 | — | — | — | insufficient N — do not cite |
| Category | Training | 1 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
| Category | Yoga | 0 | — | — | — | insufficient N — do not cite |
| Category | Padel | 1 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
| Category | All other categories (grouped) | 3 | 100.0% | 100.0% | 100.0% | insufficient N — do not cite |
Hours from event creation to first confirmed RSVP
createdAt of the earliest confirmed RSVP from someone other than the organiser, minus the event's createdAt, in hours. The organiser's own RSVP is ignored (often a self-test). Negative values (RSVP older than the event record) are dropped as import artefacts. Sample: the 300 most recent (by startDate) eligible events with confirmedCount >= 1; N = 224 after dropping events whose only confirmed RSVP was the organiser.
| Breakdown | Bucket | N | Median | P25 | P75 | Status |
|---|---|---|---|---|---|---|
| Overall | All eligible events | 224 | 24 min | 6 min | 21.5 h | Citable |
| Paid vs free | Free events | 197 | 18 min | 6 min | 6.5 h | Citable |
| Paid vs free | Paid events | 27 | 33.6 h | 2.4 h | 85.5 h | insufficient N — do not cite |
| Category | Other (uncategorised) | 49 | 18 min | 6 min | 54 min | Citable |
| Category | Party | 37 | 18 min | 6 min | 2.1 h | Citable |
| Category | Social | 22 | 2.8 h | 12 min | 105.6 h | insufficient N — do not cite |
| Category | Fitness | 30 | 48.2 h | 36 min | 89.0 h | Citable |
| Category | Sports | 15 | 6 min | 0 min | 20.1 h | insufficient N — do not cite |
| Category | Training | 18 | 36 min | 12 min | 1.6 h | insufficient N — do not cite |
| Category | Yoga | 5 | 12 min | 6 min | 49.4 h | insufficient N — do not cite |
| Category | Padel | 5 | 6 min | 6 min | 12 min | insufficient N — do not cite |
| Category | All other categories (grouped) | 43 | 36 min | 6 min | 21.6 h | Citable |
Download the data
Every cell on this page, including the non-citable ones, as one flat CSV (metric, breakdown, bucket, N, median, P25, P75, citable flag) with the generation date and window in the footer.
whos-in-event-benchmarks.csvLicence. Creative Commons Attribution 4.0 (CC BY 4.0). You may reuse the citable figures and the CSV with attribution to “Who's In (whos-in.app)” and a link to this page. Please do not cite cells marked “insufficient N — do not cite”.
Last updated: 22 August 2026.