Everyday Utilities

Seating Plan Optimizer

List your guests, tables and constraints to get a seating plan that respects as many as possible.

Your numbers

One name per line. Names must be different. Example data.

Seat counts separated by commas, one number per table, such as 6, 6, 4. Example value.

One group per line, names separated by commas. Everyone on a line should share a table. Example data.

One group per line. Everyone on a line should be at different tables. Example data.

More options

Each broken keep-apart costs this many together points. Example value.

The same seed and list always give the same plan. Change it to try another search.

More steps search longer. From 2,000 to 200,000.

Result

Best plan found

2 of 2 together, 0 of 1 apart broken

Score 2 with seed 1.

Together pairs satisfied
2 of 2
Keep-apart pairs broken
0 of 1
Score
2
Seats left empty
0

Tables

TableSeatedGuests
Table 15 of 5Cara, Dev, Fay, Hana, Ivan
Table 25 of 5Ana, Ben, Eli, Gus, Jill
How this was calculated
  1. The score is the number of together pairs seated at the same table minus 3 for every keep-apart pair seated at the same table. The plan starts from random seating and repeatedly swaps or moves guests, keeping a change when it helps and sometimes when it does not, so the search can climb out of dead ends.
  2. The search ran 20,000 steps from each of 6 starts using seed 1. The same list and seed always give the same plan.
  • This is the best plan the search found, not a proof that no better plan exists. For long lists with many conflicts, try other seeds. Tables are treated as equal; order within a table is not chosen.

Calculated using SumPanda.com · https://sumpanda.com/seating-plan-optimizer-with-constraints/

Results are estimates for general information. Verify important figures before relying on them.

Next step

How to use the seating plan optimizer

  1. List your guests, one name per line, and give the number of seats at each table, such as 6, 6, 4.
  2. Under sit together, list groups of names, one group per line, separated by commas. Everyone on a line should share a table.
  3. Under keep apart, list groups the same way. Everyone on a line should be at different tables.
  4. 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.

Formulas reviewed October 10, 2026. See the calculation methodology for how SumPanda rounds, tests and sources its formulas.

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.