This is the only tool here that can honestly fail
Everything else on this site always has an answer. Shuffle a list and you get an order. Draw a name and you get a name.
A seating plan with rules attached might have no solution at all. Enough people who cannot sit together, not enough tables, and there is genuinely no arrangement that works.
What most tools do at that point is drop whichever rule was awkward and hand back a plan that looks finished. You find out at the reception.
This one says so, explains which constraint is doing the damage, and produces nothing. That is less satisfying and considerably more useful.
Keep-together chains join up, and nobody expects it
Write "Ann sits with Bob". Then write "Bob sits with Cath". You have not made two pairs.
Ann and Cath are now stuck together through Bob, whether you intended it or not, and all three have to be at the same table. Add "Cath with Dan" and it is four. Work through a couple of families like that and you can have a group of nine before you notice.
If your biggest table seats eight, there is now no possible plan, and the reason is three reasonable-looking lines typed twenty minutes apart. The tool flags a group the moment it grows past a pair, which is well before it becomes a problem.
The contradiction that reads perfectly sensibly
Ann with Bob. Bob with Cath. Ann apart from Cath.
Every one of those is a normal thing to want. Together they cannot all hold, because the first two put Ann and Cath at the same table and the third forbids it.
There is no correct way for software to resolve that on your behalf. Dropping the keep-apart is a decision with consequences, and it is your decision. So it is reported as a contradiction and the plan stops.
The plan is checked after it is built
Once an arrangement exists, every rule is tested again against the finished tables: every keep-together pair on the same table, every keep-apart pair on different ones, everybody with exactly one seat, no table over capacity.
That check is deliberately separate from the code that builds the plan. Verifying with the same logic that produced the answer proves nothing at all, and this is the sort of job where a quiet failure is expensive.
When it says no, what to change
Three things cause an impossible plan, and the message tells you which one you have hit.
Not enough seats. The simplest one. More tables, or more seats per table.
A keep-together group bigger than a table. Either widen the tables or break the chain, and the message names everybody in the group so you can see which link to cut.
Keep-apart rules too tight. Harder to see, because no single rule is the problem. Usually one more table solves it, and if it does not, one of the rules has to go.
Common questions
Why did my keep-together group get bigger than I asked for?
Because keep-together chains join up. Say Ann sits with Bob, and Bob sits with Cath, and you have not made two pairs, you have made a group of three: Ann and Cath are now stuck together via Bob whether you meant it or not. Chain a few of those across a family and the group quietly outgrows your biggest table. The tool tells you as soon as a group grows past a pair, rather than when it becomes fatal.
What happens if my rules contradict each other?
It tells you and refuses to produce a plan. Ann with Bob, Bob with Cath, Ann apart from Cath: every line reads perfectly sensibly and the three together are impossible. Most tools resolve that silently by dropping whichever rule was awkward, which is how somebody ends up seated next to their ex on the day.
Can a seating plan be impossible?
Yes. Everything else here always has an answer. That is the only tool on the site where that is true. A seating plan with enough keep-apart rules and not enough tables genuinely has none, and the honest response is to say so and explain which constraint is doing the damage.
How do I write the rules?
One pair per line. "Ann + Bob" to seat them together, "Cath - Dan" to keep them apart. Commas, ampersands and the words "with" all work too, so type it however feels natural. If a name in a rule is not on the guest list, usually a spelling difference, it says so rather than silently doing nothing.
Does it check the plan afterwards?
Yes, and separately from building it. Once a plan exists, every keep-together and keep-apart rule is re-tested against the finished tables, along with everybody having exactly one seat and no table being over capacity. Building and checking with the same logic proves nothing, so the check is independent.
Why are people spread across tables rather than filling them up?
Because filling table one and leaving the last table with two people on it is nobody's idea of a seating plan. Groups go to the emptiest table that can take them, which balances the room out. If you want tables full, reduce the number of tables.
Is the guest list stored anywhere?
No. It stays in your browser, there is no account and nothing is uploaded. Which matters more than usual here, because a guest list with "keep these two apart" written next to it is not something you want on somebody else's server.