🏪 Lanren Toolkit

🪑 Random Seating Chart Generator

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.

Ad・Leaderboard 728×90
Enter the rows, seats per row, and a roster, then click "Generate Seating Chart".
Ad・Rectangle 336×280

📖 How to Use

  1. Enter how many rows the seating chart needs in "Rows" — e.g. a classroom with 4 rows.
  2. Enter how many seats are in each row in "Seats per Row" — e.g. 6 seats per row.
  3. Paste everyone who needs a seat into "Roster", one name per line.
  4. Click "🪑 Generate Seating Chart" — the tool shuffles the roster and fills seats row by row. The result appears as cards, each labeled with its seat position and the name assigned there.
  5. If there are fewer people than seats, the extra seats show "(Empty)". If there are more people than seats, the extras are never silently dropped — they're listed in a warning below the seating grid instead.
  6. Want a different arrangement without re-entering anything? Click "🔀 Reshuffle" — it reshuffles from scratch using the rows, seats per row, and roster already in the fields, giving you a new seat assignment.
Note: total seats = rows × seats per row. The current version doesn't support dragging or manually swapping two people's seats after generating — if you're not happy with a given result, just click "Reshuffle" for a different one.

📖 Deep Dive: How the Random Seating Chart Works

How is this different from this site's "Random Group Divider"?

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.

Same Fisher-Yates shuffle, just handed out into seats instead of groups

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.

A worked example: 24 students into a 4×6 classroom, and an uneven case

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.

Current limitation: no manual seat swapping

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.

❓ FAQ

Can I manually swap two people's seats after generating the chart?

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.

What happens if there are more people than seats?

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.

What happens if there are fewer people than seats?

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.

Is this the same as this site's "Random Group Divider" tool?

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.

Does the roster, row count, or seat count I enter get saved or sent to a server?

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.

Ad・Leaderboard 728×90