Limited seats, explicit choices

Workshop Session AssignmentGenerator

Allocate attendees to distinct sessions within seat capacity. Use ranked preferences or restrict choices, then review every unfilled request.

Free • Local processing • No account

Clay conference lobby with three topic doorways, seat-counter plaques and attendees wearing badges

Match attendees to workshop seats

Choose how many different sessions each person should receive and how to treat ranked choices.

Attendees and sessions

One attendee per line. 1–100 people, 120 characters per name, 20,000 input characters. Matching names keep separate IDs.

One session | capacity per line, or a tab. Capacity required: 1–100 people; 1–20 sessions, 120 characters per label and 20,000 input characters. No timing or overlap checks.

UTF-8 TXT up to 80,000 bytes per file in the same format. Editing or importing either list clears all ranked preferences and old results.

Attendee and session ID reference
  • Attendee 1: Alex
  • Attendee 2: Blair
  • Attendee 3: Casey
  • Attendee 4: Drew
  • Session 1: Story Lab
  • Session 2: Design Sprint
  • Session 3: Facilitation
4
Attendees
—
Assigned / required
—
Unfilled requests

1–10 distinct sessions, never more than the session count. Same requirement for everyone; repeated attendance at one session is not allowed.

One attendee ID: ordered session IDs per line, e.g. 1: 2,1,3. Chinese colon/comma also accepted. Each person at most once; no duplicate choices. No line means any session is allowed, in both modes. 20,000 characters maximum.

Priority: maximize covered places, then spread assignment counts, then minimize ranked-choice penalties. Random ties do not guarantee first choices. This does not check session times.

Four attendees request two sessions each, with eight total seats and sample ranked choices.

Assignments by attendee

Generate to see personal sessions, capacity loads and incomplete requests.

Attendees, capacities and choices stay in this tab and local worker without uploads or persistent storage by this tool. Export before refreshing.

Allocate seats across sessions, not just people into groups

A useful result shows both personal assignments and the session door lists.

A participant can receive several distinct sessions

A workshop session assignment generator connects an attendee list to a set of named sessions with different seat capacities. Specify a common number of sessions per person, then allocate places without sending the same person to the same session twice. The output gives each attendee’s choices and a roster for every session, including unused seats. This is useful for planning workshop participation before publishing an event list. It does not create a timetable, collect live signups or infer whether selected sessions occur at overlapping times.

Conference organizer distributing workshop admission tickets after checking choice cards and limited seat counts

Decide what an unlisted session means

Ranked preferences can express a favorite topic without automatically becoming a prohibition. Prefer ranked choices allows fallback into unlisted sessions when that supports coverage or the higher-priority count balance. Listed choices only makes each entered preference list a hard eligibility restriction. People with no preference line remain eligible for every session in either mode. This distinction is visible in the controls and every result: a ranked placement has its rank, a fallback is labeled, and a person without preferences is identified separately.

Ranked topic choice cards beside limited session admission tokens and a separate waiting-request marker

How to assign attendees to sessions

Set actual capacity before optimizing preferences.

  1. 01

    Add attendees and capacity-limited sessions

    Enter one attendee per line and each session as name | capacity, with a pipe or tab separating the fields. Session capacity is required and must be a whole number from one to one hundred. The tool supports one to one hundred attendees and one to twenty sessions. Names and labels can contain up to one hundred twenty characters, and each text field is limited to twenty thousand characters. Separate UTF-8 TXT imports accept the same formats. Blank lines are ignored; repeated names keep distinct attendee or session IDs.

  2. 02

    Choose the number of sessions and rank optional choices

    Set a common number from one to ten sessions per attendee, never greater than the number of distinct session rows. Open the ID reference and enter preferences as attendee ID: session IDs in preferred order, for example 1: 2,1,3. Use one line per attendee. The first listed session is rank one; duplicate attendee lines, repeated session IDs and unknown IDs are rejected. A person can rank fewer sessions than requested, but listed-only mode may then make a complete allocation impossible.

  3. 03

    Select the fallback rule and inspect both directions

    Generate with Prefer ranked choices for soft preferences, or Listed choices only to restrict people who submitted a list. Read the total unfilled places, the number of fully assigned attendees, preference statistics and each person’s remaining request. Expand the session rosters and the incomplete-attendee list before copying, printing or downloading CSV. Editing or importing either source list clears every preference and the old result to prevent ID mismatches. Changing the requested count, preference text or mode also cancels the previous calculation.

A capacity allocation with an explicit priority order

The result never hides an incomplete person behind a filled session.

Hard seats and distinct attendance

The allocator uses an integral capacity network. Each allowed attendee-to-session connection has capacity one, each attendee can receive up to the requested count, and each session has its own seat limit. A maximum-flow calculation fills as many requested places as possible without breaking those limits. If a partial allocation is unavoidable, the page labels it partial and lists everybody still missing one or more sessions. Spare capacity can remain in a session when eligible people already attend it, have reached their count, or cannot choose it in listed-only mode.

Coverage first, count balance second, preference cost third

Within maximum coverage, the tool minimizes the sum of squared attendee assignment counts to avoid concentrating seats on a few people. It then minimizes total preference penalties: rank one costs zero, rank two costs one, later ranks continue that pattern, and an unlisted fallback costs the total number of sessions. Someone without preferences contributes no preference penalty. Secure randomized tie costs cannot outweigh those priorities. This is not a promise of everybody’s first choice, equal probabilities over complete outcomes or the maximum number of completely satisfied people when coverage is incomplete.

Keep all assignments and unresolved requests

Copy and print contain the complete attendee view and every session roster with used and remaining seats. CSV provides one row per requested attendance place, including blank-session rows for unfilled requests, with attendee IDs, session IDs, capacities and preference status. It is an organizer snapshot, not a booking-system import template or notification service. The screen’s scrolling lists do not limit exports. Spreadsheet formula-leading names are protected using the existing CSV escaping behavior. Actual attendance, payment, cancellation and later movement between sessions are not recorded or synchronized.

Example: four attendees requesting two sessions each

Eight requested places need capacity and enough distinct choices.

  1. 01

    Build a complete multi-session allocation

    Use Alex, Blair, Casey and Drew. Create Story Lab with capacity three, Design Sprint with capacity three and Facilitation with capacity two. Request two distinct sessions per person, for eight total places. Enter preferences 1: 1,2; 2: 2,3; and 3: 3,1, leaving Drew without a preference line. In prefer mode everyone receives two different sessions and the total seat load is eight. The exact mapping can vary. Drew remains eligible everywhere and is not counted as a preference fallback merely for receiving a session.

  2. 02

    See why empty seats do not prove everyone can be placed

    Switch to listed-only mode and give all four people only Story Lab as a preference while still requesting two sessions each. Story Lab can take three different attendees, so five requested places remain unfilled. Design Sprint and Facilitation stay empty because those submitted lists prohibit the other sessions. Each affected person appears in the incomplete list, including people who received one session. To change that outcome, offer more acceptable options or use soft fallback; merely regenerating cannot create additional eligible distinct sessions.

Use the allocation as a reviewed event proposal

Collect choices, resolve capacity and check the real schedule.

  1. 01

    Use realistic seat capacities and clear session labels

    Capacity counts individual attendees, not teams, tickets sold elsewhere or room turnover over several runs. If the same workshop is repeated as two separate sessions, enter separate clearly named rows, each with its own actual capacity. Matching names remain different IDs, so include a time or run label to distinguish them. No start or end time is parsed from that label. You must ensure a person’s allocated sessions are practically compatible; this tool has no time-overlap, travel, prerequisite, age or accessibility eligibility model.

  2. 02

    Explain an incomplete allocation without blaming the draw

    When someone’s eligible distinct session count is below the requested number, the result identifies that direct shortage of options. Other incomplete rows report a capacity bottleneck: no additional permitted distinct place can be added within the current maximum allocation. This is an explanation of the matching result, not a proven smallest conflict set or an arrival-ordered waiting queue. A different randomized draw may change who has the gap, but cannot increase the maximum filled total or improve the defined higher-priority objectives without changed inputs.

  3. 03

    Collect registration elsewhere and save the accepted plan

    This page allocates an organizer-provided list locally. It does not publish a signup form, reserve seats across users, send admission emails or keep a persistent waiting list. Attendees, capacities, preferences and results remain in this tab and local worker without uploads or tool storage. Export before refreshing or leaving. If your job is assigning ongoing responsibilities with personal task limits, use Random Task Assignment Generator instead. For online room identity export, use Breakout Room Assignment Generator; neither page automatically receives data from this allocation.

Workshop session allocation questions

Answers about capacity, ranked choices and partial results.

How can I assign attendees to multiple workshop sessions?

Enter attendees and sessions with seat capacities, set a common number of distinct sessions per person, then generate. Add optional ranked preferences and choose soft fallback or listed-only restrictions. Review both attendee assignments and session rosters. Each person appears at most once in a particular session and no session exceeds its capacity.

Are session preferences guaranteed or just preferred?

Prefer ranked choices is soft: an unlisted session can be used and is labeled fallback. Listed choices only is hard for each person who submitted a preference list. People without a preference line can attend any session in both modes. The rank objective follows maximum coverage and count balance, so no mode guarantees every first choice.

What happens when there are not enough seats?

The result is explicitly partial, with the maximum filled attendance total and every attendee still missing a session. It first spreads counts within that coverage before optimizing preferences. Unfilled requests remain in copy, print and CSV. The tool never overbooks a session or omits an incomplete person to make the result look successful.

Why are there empty sessions while someone is still waiting?

A remaining seat may be in a session outside that person’s hard list, already assigned to that person once, or otherwise unusable for another distinct attendance request. Check eligible-option counts and the incomplete list. Expanding preferences or changing to soft fallback can help; an unchanged redraw cannot increase the maximum number of filled places.

How do I enter ranked preferences and duplicate names?

Use the numeric reference and write one attendee ID: ordered session IDs line, such as 1: 2,1,3. Repeated attendee lines, repeated choices and unknown IDs are rejected. Matching display names remain separate IDs. Editing or importing either source list clears all preferences so old numbers cannot silently refer to different people or sessions.

Does the allocation prevent timetable conflicts or repeat attendance?

It prevents assigning the same person to the same session ID twice. It does not check real-time overlap between different sessions, even if their labels contain times. Plan compatible session options yourself or review the result against your agenda. This is capacity and preference allocation, not a time-slot scheduling engine.

Can I export the session rosters and people still missing places?

Yes. Copy and print contain both complete views, including used and remaining seats. CSV has one row per requested place and keeps unfilled requests with a blank session and an explanation. All rows are included despite on-screen scrolling. The incomplete list is a review list rather than a saved queue with automatic seat promotion.

Is my workshop list saved or sent to attendees?

No. Inputs and results stay in the current tab and local worker without uploads, persistent tool storage or messages. Changing inputs clears the old plan and cancels its worker; leaving or refreshing loses the local data. Export the accepted allocation and communicate it through your normal registration or event system.

Workshop Session Assignment

Give each attendee a clear session plan

Set real seat capacity and explain the preference rule.

Review all incomplete requests before sharing.

  • Free to use
  • No signup
  • Runs in your browser

A simple path to your next activity

  1. Prepare the event

    Attendees, named sessions and seat capacities.

  2. Set the choices

    Required sessions and ranked preferences.

  3. Check the full plan

    Review gaps, session loads and exports.

Seat allocation only; review actual session times and eligibility separately.