Set the number of rows and seats per row, paste in a roster, and assign everyone to a specific seat with one click — great for teachers arranging classroom seating, or organizers seating a venue or banquet.
This site's random group divider splits a roster into a set of "groups," with no actual spatial relationship between one group and another — it's great when you just want to split people into discussion teams and don't care who sits where in the room. This seating chart generator solves a fundamentally different problem: it assigns each person to a specific "seat," identified by a row number and a position within that row — placing people into real spatial coordinates. That's the kind of thing a teacher needs when building a classroom seating chart (who sits in which row and position, useful for attendance or seating a student with poor eyesight up front), or an event organizer needs when assigning banquet seating (who sits at which table and position). It's a different use case from plain grouping, and the two tools aren't interchangeable.
The fairness logic behind seat assignment uses the exact same Fisher-Yates shuffle as the random group divider: the entire roster is thoroughly shuffled first, so every possible ordering is exactly equally likely — nobody is more or less likely to land in a particular seat just because of where their name sat in the original list. The only difference is what happens after the shuffle. The group divider hands people out round-robin ("person 1 to group 1, person 2 to group 2..."); this seating tool instead walks through seats in order — row 1 seat 1, row 1 seat 2, and so on to the end of row 1, then row 2 seat 1, and so forth — until either the seats or the roster run out. Because the roster was already fully randomized before that walk begins, exactly which row and seat each person ends up in is likewise a uniformly random outcome, with no bias toward any particular seat.
Say a teacher has 24 students and a classroom with 4 rows of 6 seats each (24 seats total). Enter 4 for "Rows" and 6 for "Seats per Row," paste in the 24 names, and click "Generate Seating Chart." Since the headcount exactly matches the seat count, all 24 students land in the 24 seats with none empty and no overflow. Now say there are 26 students instead (more people than seats) — the tool fills the first 24 (from the shuffled order) into seats as before, and the remaining 2 appear in the "over the seat count" warning below the grid, never silently dropped. If instead there are only 20 students, 4 seats will show "(Empty)," making it immediately obvious which spots in the room are unfilled.
To be upfront about it: this tool doesn't currently support manually swapping two people's seats after a chart is generated — there's no drag-and-drop or pick-two-and-swap interface, for instance if you want to separate two chatty students or make sure two people sit together. If you're not happy with a given random result, the only option right now is to click "🔀 Reshuffle" and see if you get a better arrangement. If you have a hard requirement to keep certain people apart or together, the workaround is to manually pull those people out of the roster first, randomly seat everyone else, then manually place the excluded people into suitable remaining seats yourself.
Not in the current version — that's an honest limitation of what's built so far. If you're not happy with a given result, just click "🔀 Reshuffle" for a different random arrangement. If you have specific people who must be kept apart or seated together, the current workaround is to manually remove them from the roster, seat everyone else, and place the excluded people into remaining seats yourself.
Overflow people are never silently dropped. Once every seat is filled, anyone left over is listed in a warning below the seating grid, clearly stating how many people didn't get a seat. You can add more seats, or adjust the rows or seats-per-row, and generate again.
The leftover seats simply display "(Empty)," so you can see at a glance which spots in the room or venue are currently unfilled. This isn't an error or a warning — it's expected behavior.
No. The group divider splits a roster into "groups" with no real spatial relationship between them. This tool assigns each person to a specific seat inside a "rows × seats per row" grid, which is what you need when the actual physical seating position matters (classroom seating charts, banquet tables, etc.). If you just want to split people into discussion groups and don't care about assigning a specific seat, use the random group divider instead.
No. The entire seat-assignment calculation runs as JavaScript locally in your browser — there's no code on this page that sends any data to a server. Close the tab or refresh the page and everything is gone; nothing is retained.