Classroom Seating Chart Generator
Paste your class list, set the shape of the room, and add the rules you would apply anyway — this student needs the front, those two must not sit together, that one stays where they are. The chart is randomised around every rule you set, and if a rule cannot be met you are told exactly which one and why, rather than being handed a chart that quietly breaks it.
What this generator does
Produces a seating chart for a room laid out as a grid of desks, randomised within rules you set. It is aimed squarely at the practical job of rearranging a class: some students need to be near the front, certain pairs must not sit together, one or two are staying exactly where they are, and everyone else can go anywhere. A plain shuffle cannot express any of that, which is what separates this from the seating plan generator.
How to use this tool
- Paste your class list, one name per line. Names stay in your browser.
- Set how many rows of desks there are and how many seats are in each row. Row 1 is the front.
- Add your rules: a front seat, a pair to keep apart, a pair to sit together, or a student pinned to one exact seat.
- Press Generate seating chart. Every rule that could not be met is listed underneath the chart.
- Press Regenerate, same rules for a different arrangement that still respects everything you set, then copy or print it.
Understanding the controls
- Class list
- One name per line. Repeated names are numbered rather than dropped — a class with two children called Sam gets 'Sam' and 'Sam (2)' — so each of them has their own seat and their own rules.
- Rows of desks and Seats per row
- The shape of the room as a grid. Row 1 is the front. If the grid holds more seats than students the spare desks are shown as empty; if it holds fewer, no chart is produced and you are told how many seats short you are.
- Needs a seat near the front
- Places that student in the front zone, which is the first two rows in a normal room and the first row only in a room one or two rows deep. Asking for more front seats than the zone holds is reported rather than silently ignored.
- Keep these two apart / Seat these two together
- Both rules are about immediate neighbours: the eight desks surrounding a seat, including diagonals. Two students at opposite ends of the same row are already apart as far as the solver is concerned.
- Lock to a specific seat
- Pins one student to one desk. A lock is the strongest rule available and is never overridden — if it contradicts that student's front-seat rule, the lock is kept and the front-seat rule is reported as unmet.
Worked examples
- A rule that was met
- Priya near the front · Avery and Blake kept apart · Eden and Frankie together — all satisfied in a 5 × 5 room.
- A rule that could not be met
- “Alex and Sam could not both be kept apart because the rest of the rules and this room layout leave no arrangement that separates them.”
- A contradiction it catches before it starts
- “Jules is locked to Row 4, Seat 2, which is not in the front 2 rows — the lock was kept and the front-seat rule set aside.”
Common use cases
- A fresh seating plan at the start of a term or a half-term
- Rearranging after a group has stopped working well together
- Setting out a room for an exam or an assessment where a spread-out seating plan matters
- Giving a cover teacher a printed chart of where everyone is meant to be
- Mixing a class up for group work while keeping the seats particular students need
How this generator works
Rules are screened first for contradictions — a student pinned to two seats, two students pinned to the same seat, a pair set to sit both together and apart — and anything genuinely impossible is reported before any searching happens. The tool then runs a bounded backtracking search that places the most heavily constrained students first and picks randomly among the seats still open to them, which is what makes two runs of the same class produce two different rooms. If no arrangement can satisfy everything, a second bounded pass places everyone anyway, honouring the pinned seats, and hill-climbs towards the smallest number of broken rules it can find. Both passes have hard step limits, so an impossible request comes back in milliseconds instead of freezing the tab, and whatever is still broken at the end is listed against the chart rather than dropped.
Randomness and fairness
Within the rules you set, the arrangement is genuinely randomised: the solver places the most heavily constrained students first and picks at random among the seats still open to them, so pressing regenerate with identical rules produces a different room rather than the same one. Randomness here is a means of being even-handed about the seats the rules leave free, not a claim that any particular arrangement is better than another.
For how randomness is produced across the whole site, see how Generate Random works.
Limitations and good to know
- It does not know anything about your students. It has no view on who should sit where for learning, behaviour or friendship reasons — those judgements are yours, and the tool only carries out the ones you type in as rules.
- “Next to” means the eight seats immediately around a desk: beside, in front, behind and the four diagonals. Two students two seats apart in the same row are not adjacent as far as the solver is concerned.
- The front zone is the first two rows, or just the first row in a room only one or two rows deep. There is no finer control than that.
- The room is a plain grid. Islands of four, a horseshoe, or benches of unequal length cannot be described, so for those layouts the chart is a starting point to adjust by hand.
- When rules conflict, the arrangement you get is the best one found within a fixed search budget, not a proof that no better one exists. Removing a rule and regenerating is usually quicker than fighting it.
Common mistakes
- Adding rules that cannot all hold at once
- Asking for two students to sit together while also locking them to opposite ends of a row cannot be satisfied. The tool detects direct contradictions before it starts and reports anything it could not honour underneath the finished chart — it never presents a rule as met when the chart in front of you breaks it.
- Expecting the tool to know which arrangement is best
- It arranges a room according to the rules you type in and nothing else. It has no view on who works well together or which seat suits a particular student, and it makes no claim about effects on behaviour or attainment.
Practical tips
- Set the room shape before adding rules about specific seats: shrinking the grid afterwards can leave a locked seat outside the room, which the tool then has to report as unusable.
- Print or copy the chart before closing the tab — nothing is kept unless you tick the box that saves the class list in this browser.
Privacy and your data
Class lists are processed entirely by JavaScript on your own device. Nothing is uploaded to a server, nothing is written into the page address, and no name is ever included in analytics — the event this tool sends can only carry a coarse class-size band, a count of rules and whether they could all be met, with no field capable of holding a name. Saving the class list between visits is off unless you tick the box, keeps the list in this browser only, and can be erased with the Clear saved data button.
This is a planning aid, not advice. It arranges a room according to rules you set and makes no claim about which seating arrangement is best for learning, behaviour, inclusion or attainment. Class lists are processed entirely in your browser and are never uploaded.
Frequently asked questions
- Do my students' names leave my browser?
- No. The class list is typed into the page and the whole chart is worked out by JavaScript running on your own device. Nothing is sent to a server, nothing is put in the page address, and nothing is included in analytics — the analytics event for this tool can only carry a rough class-size band, how many rules were in play and whether they could all be met. There is no field in it capable of holding a name.
- How is this different from the seating plan generator?
- The seating plan generator shuffles a list of names into numbered seats, which is the right tool when any order will do. This one is built around rules: it draws the room as a grid, keeps particular students at the front, keeps chosen pairs apart or together, pins anyone who is staying put, and tells you when your rules cannot all be honoured at once.
- What happens if my rules contradict each other?
- You are told. Direct contradictions — the same student pinned to two seats, a pair set to sit both together and apart — are caught before the chart is drawn and the conflicting rule is set aside with a reason. Rules that are simply impossible in the room you described are reported underneath the finished chart, naming the students involved. The tool never presents a rule as met when the chart in front of you breaks it.
- Can I keep the same seating chart for next lesson?
- You can print it or copy it as text, and there is an optional box that saves your class list and room size in this browser so you do not have to paste them again. That saving is off unless you tick it, stays on the device you ticked it on, and there is a Clear saved data button next to it.
- Can two students have the same name?
- Yes. Repeated names are numbered rather than removed — a class with two children called Sam gets “Sam” and “Sam (2)” — so each of them gets their own seat and you can write rules about one without affecting the other.
- What if there are more seats than students?
- The spare seats are left empty and shown as empty on the chart, both visually and in the copied text version. If there are more students than seats, no chart is generated at all and you are told how many seats short the room is.
Related generators
- Seating Plan GeneratorRandomly assign guests or students to numbered seats.
- Random Group GeneratorSplit a list into random groups of a chosen size, for activities larger than pairs or teams.
- Classroom Role GeneratorA weekly responsibility to assign, from line leader to plant waterer.
- Random Team GeneratorSplit a list of names into a chosen number of random, evenly sized teams.