Seating Chart Generator

Lay out a random seating plan from rows and columns, block seats, keep certain people apart, and print the result.

Runs in your browser No signup Nothing uploaded

Selections are generated locally in your browser using the Web Crypto API when available. The result is chosen before the animation starts, so how the animation looks can never change what is picked.

Loading the seating chart generator…

What is the Seating Chart Generator?

The Seating Chart Generator builds a room from the number of rows and seats you specify, then places people at random. Seats can be blocked by clicking them, so a broken chair or a pillar simply stays empty when you regenerate.

The interesting part is the rules: you can ask for certain people near the front or the back, keep specific pairs apart, or keep a pair together. When the rules cannot all be satisfied — and with a full room they often cannot — the tool tells you which ones failed instead of silently ignoring them or looping forever.

A generated plan is a starting point rather than a verdict. You always know something the rules do not, so any two people can be swapped by hand afterwards — by dragging one seat onto another, or by choosing the two seats in turn — without regenerating and losing the rest of the layout.

How to use it

  1. Paste the names of the people to seat.
  2. Set the number of rows and seats per row.
  3. Click any seat in the chart to block it. Click again to unblock.
  4. Add seating rules: front, back, keep apart, keep together.
  5. Press “Generate seating chart”, then print it or download the CSV.
  6. To adjust the plan, switch “Clicking a seat” to swap mode, then drag one seat onto another or choose the two seats in turn.

How the random selection works

Front and back requests are placed first, filling from the appropriate end of the room. Everyone else is shuffled with Fisher-Yates and dropped into the remaining seats. When keep-apart or keep-together rules exist, the generator repeats that placement up to 250 times, scores each attempt by counting adjacency violations, and keeps the best one — stopping immediately if it finds a perfect layout. Adjacency includes diagonals, so “apart” means genuinely not next to each other.

The full algorithm — including the rejection-sampling step and the wheel stop-angle calculation — is written out on the methodology page.

Practical examples

  • Reseating a class of 30 after the holidays, keeping two pairs apart.
  • Laying out an exam room where the seats must not be next to each other.
  • Building a table plan for a training day with a fixed number of seats.
  • Rotating a classroom layout weekly so students work with different neighbours.
  • Producing a printed seating chart for a substitute teacher.

Available options

  • Any grid up to 400 seats.
  • Click-to-block seats that persist across regenerations.
  • Front-row and back-row requests.
  • Keep-apart groups and keep-together pairs, with clear reporting when they fail.
  • Teacher desk at the front or the back.
  • Swap any two people by hand, by dragging a seat or by choosing two seats in turn.
  • Blur names on screen for projecting, print-optimised layout and CSV export.

Privacy

Seating charts are a class list in another shape, so they are treated the same way. Everything you type stays in this browser tab. There is no account, no upload step and no server-side copy of your list: the draw runs in JavaScript on your own device. Nothing is written to browser storage unless you explicitly save a list or tick the option to keep your draw history, and both can be cleared at any time from the privacy page. Printed charts contain names — store or dispose of them according to your school’s policy.

Full details are in the privacy policy, which also has a button that deletes everything this site has stored in your browser.

Fairness and limitations

With no rules applied, every person is equally likely to get any open seat. Once rules are added the placement is no longer uniform — that is the point of a rule — and a heavily constrained room may be impossible to satisfy. The generator will not pretend otherwise: it reports every rule it could not meet, so you can free up a seat, add a row, or accept the compromise knowingly.

Frequently asked questions

Why does it say a rule could not be met?

Because the room was too full or the rules conflicted. In a nearly full room there may be no arrangement where two particular people are not adjacent. Add a row, block fewer seats, or relax a rule.

Does “keep apart” include diagonal seats?

Yes. Two people are considered adjacent if their seats touch in any direction, including diagonally.

How do I block a broken seat?

Click it in the chart. It shows as blocked and stays empty every time you regenerate, until you click it again.

Can I move one person without redoing the whole chart?

Yes. Set “Clicking a seat” to swap mode, then drag one seat onto another, or click the two seats in turn. Only those two people move. Because a hand-made swap can break a rule the generator satisfied, the chart says so rather than continuing to claim the rules hold.

Can I export as an image or PDF?

The chart is optimised for printing, and every browser can print to PDF from the print dialog — which also gives you a cleaner result than an image.