How to use the seating plan optimizer
- List your guests, one name per line, and give the number of seats at each table, such as 6, 6, 4.
- Under sit together, list groups of names, one group per line, separated by commas. Everyone on a line should share a table.
- Under keep apart, list groups the same way. Everyone on a line should be at different tables.
- Read the best plan found. Open the advanced options to change the penalty for a broken keep-apart, the seed and the number of search steps.
Formula
score = together pairs at the same table - penalty x keep-apart pairs at the same table
a group of k names means every pair within it
search: start from a random seating, then swap two guests or move one to a table with a free seat, keeping a change when the score improves and sometimes when it falls
The chance of keeping a worse change falls as the search goes on (simulated annealing). The best plan seen in any of 6 restarts is shown.
Ten guests, two tables of five
Ten guests are Ana, Ben, Cara, Dev, Eli, Fay, Gus, Hana, Ivan and Jill at two tables of five. Ana and Ben should sit together, Cara and Dev should sit together, and Ana and Cara should be kept apart. The best plan puts Ana and Ben at one table and Cara and Dev at the other: 2 of 2 together pairs are satisfied, no keep-apart pair is broken and the score is 2.
If three people must share a table (A, B and C, which is three pairs) but the tables seat only two, no plan can satisfy all three pairs. The best plan found satisfies 1 of 3, and the page says so.
What a good plan means
Seating many people at tables with likes and dislikes is a hard puzzle: the number of possible plans grows very quickly. A search that improves a plan step by step finds a very good one fast, but it cannot promise the best one. For small lists, the tests of this tool compare it with checking every possible plan, and it finds the best score each time. For large lists with many conflicts, try other seeds and keep the plan you like.
The plan shows which pairs were satisfied and which were not, so you can adjust the lists. Tables are treated as equal. Order within a table, head tables and seat positions are left to you.
Related planning tools
To split a guest list evenly across tables by group, with a picture of the plan, use the seating chart maker. For the day itself, see the wedding day timeline generator and the wedding budget calculator. If you also draw names for a gift exchange, the derangement probability calculator shows the chance that a simple draw gives nobody their own name.
Assumptions and limits
- Names are different from each other when letters are compared without regard to case. Up to 80 guests and 30 tables are accepted.
- The tables hold at least as many seats as there are guests.
- The penalty for a broken keep-apart is an example value of 3. A bigger value makes keep-apart pairs matter more.
- The result is repeatable: the same list, tables, constraints and seed always give the same plan.
Frequently asked questions
Why does the plan change when I change the seed?
The search starts from random seatings, and the seed sets which ones. When many plans score equally, a different seed can give a different one. Pick the one you prefer.
Can a guest be in two groups?
Yes. A guest can appear on several lines of the same list, and in both lists. A pair that is in both the together list and the apart list is refused as a contradiction.
What if no plan satisfies everything?
The page reports which pairs were not satisfied. It trades off pairs using the penalty, so a broken keep-apart pair costs more than a missed together pair.
Does it fill tables evenly?
No. It uses seats as they are given and may leave tables with empty seats. Give table sizes that match how you want them filled.