Skip to content

Guide

How to make a seating chart in Google Sheets

Google Sheets is the right pick when two of you are planning the seating together. Here is the real method: a shared guest list, seat counts that check themselves, filter views so you can both work at once, and an honest look at Google Form RSVPs.

Last updated July 2026

A seating plan has two halves: the data, a table name beside every guest, and the picture, a sketch of the room. Build the data first. The seven steps:

  1. Guest list, shared
  2. Tables and capacities
  3. Seat counts
  4. Conditional formatting
  5. Filter views
  6. Room sketch
  7. Google Form RSVPs

1. Set up the guest list and share it

One row per person, never one row per couple. Name the tab Guests:

ColumnWhat goes in it
A: Full nameOne person per row
B: PartyHousehold or group
C: RSVPYes, No, or blank
D: MealChicken, Fish, Veg
E: AllergiesFree text
F: TableTable 1, Table 2

Share it with your partner as an Editor, and leave questions as comments (Ctrl+Alt+M) with an @mention instead of typing over each other. Sheets has no seating chart template of its own, so build these tabs or start from our free guest list template. Before a big reshuffle, open File > Version history and name the current version: the undo that survives a bad afternoon.

2. List your tables and their seat counts

On a second tab named Tables, put each table name in column A and its capacity in column B: 8 for a 60-inch round, 10 for a 72-inch round, 8 for an 8-foot banquet table. Our seats per table guide has the full set of capacities. Type the table names identically in both tabs, because the formulas match on that text.

3. Count the seats with COUNTIF and COUNTA

In C2 of the Tables tab enter =COUNTIF(Guests!$F$2:$F$300,A2) for seats used and =B2-C2 for seats free. If you type names into a visual grid instead, =COUNTA(B4:B13) counts a table column.

FormulaWhat it tells you
=COUNTIF(Guests!$F$2:$F$300,A2)Seats used at the table named in A2
=B2-C2Seats still free there
=COUNTIF(Guests!$C$2:$C$300,"Yes")Confirmed guests so far
=COUNTIFS(Guests!$C$2:$C$300,"Yes",Guests!$F$2:$F$300,"")Confirmed guests with no seat

4. Flag problems with conditional formatting

Select C2:C20 on the Tables tab, then Format > Conditional formatting. Under Format rules choose Custom formula is and enter =$C2>$B2 with a red fill, so any over-full table turns red as you type. On the guest list, apply =$F2="" to A2:F300 in amber to light up every unseated guest.

5. Use filter views so you do not disturb each other

Data > Create a filter is shared: filter to the guests who have not replied and your partner's screen filters too, mid-sentence. Data > Filter views > Create new filter view is private to you and keeps its own web address. Make one for awaiting replies, one for missing meals, one for unseated guests.

6. Sketch the room with Insert > Drawing

Insert > Drawing gives you circles for round tables, rectangles for banquet tables, and text boxes for names. Select several shapes and use the Actions menu to align and distribute them evenly. Hold Shift while dragging a circle to keep it round. Save and Close drops the drawing onto the sheet as an image you can double-click to edit later. It is only a picture: nothing connects the shapes to the rows, so it will not follow a change in the Table column.

7. Collect replies with a Google Form

Build a form asking for name, attending, meal, and dietary notes, then link it to a response tab from the Responses panel and pull answers back with XLOOKUP against your guest names. The lookup reads =XLOOKUP(A2,'Form Responses 1'!$B:$B,'Form Responses 1'!$C:$C,"No reply yet"), and it matches only when the guest typed their name the way you did. That is the weak point.

What a Google Form will not do:

  • Give each guest their own link, so nothing proves who replied.
  • Catch a typo, or a couple replying twice.
  • Move anyone into a seat, or free the seat of a guest who declines.
  • Chase the people who have not answered.
  • Show a guest their table, since sharing the sheet exposes everyone's details.

Your sheet travels with you

File > Download > Comma Separated Values or Microsoft Excel. The free Seatful builder reads either, maps your columns, and flags likely duplicates before anything is added.

Where this approach gets hard

Sheets is genuinely good at a shared list. It is the replies that wear people down.

  • Replies land beside the plan, not in it. Form answers sit in their own tab, and you re-key them or babysit lookups.
  • A decline does not free a seat. You clear the cell, decide who moves up, then redo the drawing.
  • Meal counts are as fresh as the last time you looked. Nothing says they moved.
  • The caterer report is a document you build. Counts, allergies, and tables are separate formulas.
  • Guests get nothing. There is no safe way to let them look up their own seat.

The same plan, with the data wired in

Seatful will not give you two cursors in one document the way Sheets does. It removes most of the reason you wanted them. Import that same list, lay out round, banquet, and head tables, then tap a guest and tap a seat, or auto-fill everyone at once with households kept together. Each guest gets a private RSVP link showing only their own name, and replies land in the chart, so a decline frees the seat and meal counts move with it. Print the chart, a find-your-seat list, and a caterer report from the same file. Build it free in your browser.

Prefer a different tool?

Bring the sheet with you

Download it as CSV or Excel and the free Seatful builder reads it, keeps households together, and prints the chart, the door sign, and the caterer report from one file.