Photo by Team Nocoloco on Unsplash
Key terms explained
- Gross area: The total floor area of a room in square metres or square feet, measured wall to wall before any deductions.
- Net area: The usable floor area after subtracting fixed features such as a bath, island unit, or built-in wardrobe.
- Wastage allowance: An extra percentage of material ordered to cover cuts, breakages, pattern matching, and future repairs. Expressed as a decimal multiplier, so 10% wastage means multiplying by 1.10.
- Coverage rate: The floor area one pack of tiles or planks covers, stated by the supplier on the product label (for example, 1.44 m² per pack).
- Diagonal lay: A tile pattern set at 45° to the walls, which requires significantly more cuts and therefore a higher wastage allowance.
- Herringbone: A V-shaped interlocking plank or tile pattern that also increases cut waste.
- CEILING function: A spreadsheet function that rounds a number up to the nearest whole unit, used here to avoid ordering a fractional pack.
- Grout joint: The gap between tiles filled with grout. Wider joints reduce the effective tile count per square metre.
- Ancillary materials: Supporting products needed alongside tiles or planks, such as adhesive, grout, underlay, or trim strips.
- Runtime input (G column): The cell where the web form writes a visitor's answer. Formulas reference G cells, not E cells. E holds the default value shown in the form before a visitor changes it.
What this guide covers and what it excludes
This guide builds a rectangular-room flooring calculator that handles tile or plank area calculations, wastage, whole-pack rounding, and a simple cost summary. It covers one rectangular room at a time. It does not handle L-shaped or multi-room plans, radial cuts, underfloor heating offsets, structural substrate checks, or labour pricing beyond a simple per-square-metre rate. All pack sizes, coverage rates, adhesive quantities, and grout quantities must be confirmed with your actual supplier before purchasing, as these vary by product and region.
Prerequisites
- A Google account with access to Google Sheets.
- The GS2Web SaaS add-on installed from the Google Workspace Marketplace, with a Calculator-tier entitlement active on your account. Visit GSheetPress pricing to review plan options.
- A dedicated sample workbook created only for this calculator — do not use a file containing private or financial data, because the publish step makes the spreadsheet editable by anyone who holds its link.
- Basic comfort with clicking cells and typing values. No prior formula knowledge is required; every formula is provided in full.
How the flooring quantity model works
The core calculation chain is straightforward:
- Multiply room length by room width to get gross area.
- Subtract any fixed features to get net area.
- Multiply net area by (1 + wastage fraction) to get the gross area including wastage.
- Divide by the tile or plank area (length × width) to get tile count, then round up to whole tiles.
- Divide tile count by tiles-per-pack (or divide gross area by pack coverage) and round up to whole packs.
- Multiply packs by cost per pack for material cost.
- Add adhesive and grout estimates based on area.
The Google Sheets CEILING function documentation explains how CEILING(value, significance) always rounds up, which is exactly what you need to avoid ordering short.
Room shapes and layout patterns
A perfectly rectangular room is the simplest case. Any recess, bay window, or L-shape should be broken into rectangles, the areas calculated separately, then summed. Subtract fixed features (bath footprint, kitchen island) from the total.
Layout pattern affects wastage significantly. Use these benchmarks as a starting point and adjust based on your supplier's recommendation:
| Pattern | Suggested wastage | Reason for extra waste |
|---|---|---|
| Straight grid (brick bond) | 5–10% | Minimal cuts on straight walls |
| Diagonal (45°) | 10–15% | Many angled cuts along all four walls |
| Herringbone | 10–15% | Short repeating cuts on each plank end |
| Large-format irregular rooms | 15–20% | Fewer tiles, so each cut represents more material |
Setting up the helper data section
Before building the calculator tab, create a second sheet in your workbook called Data. This sheet holds tile dimensions and pack information that your result formulas will reference. Having it separate keeps the calculator tab clean and makes it easy to swap product details.
In the Data sheet, enter the following in columns A and B starting at row 1:
| Cell | Label (column A) | Value (column B) |
|---|---|---|
| A1 | Tile length (m) | 0.6 |
| A2 | Tile width (m) | 0.3 |
| A3 | Tiles per pack | 10 |
| A4 | Cost per pack (£) | 24.50 |
| A5 | Adhesive coverage (m² per bag) | 5 |
| A6 | Adhesive cost per bag (£) | 8.00 |
| A7 | Grout coverage (m² per bag) | 8 |
| A8 | Grout cost per bag (£) | 6.50 |
Replace the example values with the real figures from your chosen product. These cells are referenced by name in the result formulas below using the notation Data!B1, meaning cell B1 on the Data sheet.
Building the web calculator
This section creates the interactive form that visitors will use. The GS2Web add-on generates a fixed template structure; your job is to fill in the correct values for each column.
Step 1 — Create the calculator tab
- Open your dedicated sample workbook in Google Sheets.
- Click Extensions in the top menu, then GS2Web SaaS, then Calculator, then New Calculator.
- When prompted, enter a name such as Flooring Tile Calculator.
- When asked for the number of inputs, enter 7. Do not count the button.
- When asked whether to include graphs, choose No unless you specifically want a chart.
- Click to confirm. The add-on creates a new sheet with headers already in row 1 across columns A to H: Labels, Input Type, Required, Data, Default, ToolTips, Inputs, Rules. Do not rename or delete these headers.
With 7 inputs, the layout is: input rows 2–8, button row 9, merged separator row 10, result headings row 11, and results starting from row 12.
Step 2 — Fill in each input row
Work through the following blocks one row at a time. The column letters match the generated headers exactly.
Row 2 — Room length
- A2 — Label: Room length (m)
- B2 — Input Type: Number
- C2 — Required: Tick the checkbox (required)
- D2 — Data: Leave blank
- E2 — Default: 4
- F2 — ToolTips: Enter the longest wall-to-wall measurement of the room in metres.
- H2 — Rules: Leave blank
Row 3 — Room width
- A3 — Label: Room width (m)
- B3 — Input Type: Number
- C3 — Required: Tick the checkbox (required)
- D3 — Data: Leave blank
- E3 — Default: 3
- F3 — ToolTips: Enter the shorter wall-to-wall measurement of the room in metres.
- H3 — Rules: Leave blank
Row 4 — Fixed feature area to deduct
- A4 — Label: Fixed feature area to deduct (m²)
- B4 — Input Type: Number
- C4 — Required: Leave the checkbox unticked (optional)
- D4 — Data: Leave blank
- E4 — Default: 0
- F4 — ToolTips: Enter the total area of built-in units, baths, or islands to subtract. Enter 0 if none.
- H4 — Rules: Leave blank
Row 5 — Wastage percentage
- A5 — Label: Wastage percentage
- B5 — Input Type: Number
- C5 — Required: Tick the checkbox (required)
- D5 — Data: Leave blank
- E5 — Default: 10
- F5 — ToolTips: Enter a whole number, e.g. 10 for 10% wastage. Use 10–15 for diagonal or herringbone patterns.
- H5 — Rules: Leave blank
Note on percentages: The visitor enters 10, meaning 10%. The result formula divides this by 100 internally, so the visitor does not type 0.10.
Row 6 — Tile length
- A6 — Label: Tile length (m)
- B6 — Input Type: Number
- C6 — Required: Tick the checkbox (required)
- D6 — Data: Leave blank
- E6 — Default: 0.6
- F6 — ToolTips: Enter the tile or plank length in metres. Convert millimetres: 600 mm = 0.6 m.
- H6 — Rules: Leave blank
Row 7 — Tile width
- A7 — Label: Tile width (m)
- B7 — Input Type: Number
- C7 — Required: Tick the checkbox (required)
- D7 — Data: Leave blank
- E7 — Default: 0.3
- F7 — ToolTips: Enter the tile or plank width in metres. 300 mm = 0.3 m.
- H7 — Rules: Leave blank
Row 8 — Tiles per pack
- A8 — Label: Tiles per pack
- B8 — Input Type: Number
- C8 — Required: Tick the checkbox (required)
- D8 — Data: Leave blank
- E8 — Default: 10
- F8 — ToolTips: Check the product label for how many tiles or planks come in one pack.
- H8 — Rules: Leave blank
Row 9 — The button (do not change B, D, or E)
Row 9 is the generated Calculate button. The add-on places specific values here. Confirm the following and do not alter them:
- A9 — Label: Calculate
- B9 — Input Type: Button
- D9 — Data: main
- E9: Reset (this is the reset label; leave it as generated)
Step 3 — Add result labels
Row 10 is a merged separator row generated by the add-on; leave it as is. Row 11 is for result column headings. Results begin at row 12.
In column A, enter the following result labels:
| Cell | Label to type in column A |
|---|---|
| A11 | Results |
| A12 | Gross room area (m²) |
| A13 | Net area after deductions (m²) |
| A14 | Area including wastage (m²) |
| A15 | Tile area (m²) |
| A16 | Tiles needed (whole tiles) |
| A17 | Packs to order |
| A18 | Tile material cost (£) |
| A19 | Adhesive bags needed |
| A20 | Adhesive cost (£) |
| A21 | Grout bags needed |
| A22 | Grout cost (£) |
| A23 | Total estimated material cost (£) |
Step 4 — Enter result formulas in column B
Click cell B12. Type or paste each formula exactly as shown below, pressing Enter after each one before moving to the next cell. The formulas reference G2 through G8, which are the runtime input cells — the values a visitor submits via the web form. E2 through E8 hold the default values shown before submission. To test your formulas before publishing, copy E2:E8, then right-click G2 and choose Paste special → Values only; this fills G2:G8 without overwriting your defaults.
B12 — Gross room area:
=G2*G3B13 — Net area after deductions:
=B12-G4B14 — Area including wastage:
=B13*(1+G5/100)B15 — Tile area in m²:
=G6*G7B16 — Tiles needed (rounded up to whole tiles):
=CEILING(B14/B15,1)B17 — Packs to order (rounded up to whole packs):
=CEILING(B16/G8,1)B18 — Tile material cost:
This formula uses the cost per pack from your Data sheet. If you prefer to enter cost per pack as a calculator input, add it as an eighth input row and reference G9 instead of Data!B4.
=B17*Data!B4B19 — Adhesive bags needed (rounded up):
=CEILING(B14/Data!B5,1)B20 — Adhesive cost:
=B19*Data!B6B21 — Grout bags needed (rounded up):
=CEILING(B14/Data!B7,1)B22 — Grout cost:
=B21*Data!B8B23 — Total estimated material cost:
=B18+B20+B22Worked example
Use these inputs to verify your formulas produce the correct outputs before publishing.
| Input | Value entered |
|---|---|
| Room length (m) | 5 |
| Room width (m) | 4 |
| Fixed feature deduction (m²) | 1.2 |
| Wastage percentage | 10 |
| Tile length (m) | 0.6 |
| Tile width (m) | 0.3 |
| Tiles per pack | 10 |
Data sheet assumptions for this example: cost per pack £24.50, adhesive coverage 5 m² per bag at £8.00, grout coverage 8 m² per bag at £6.50.
| Result label | Formula | Expected value |
|---|---|---|
| Gross room area | 5 × 4 | 20.00 m² |
| Net area | 20 − 1.2 | 18.80 m² |
| Area with 10% wastage | 18.80 × 1.10 | 20.68 m² |
| Tile area | 0.6 × 0.3 | 0.18 m² |
| Tiles needed | CEILING(20.68 / 0.18, 1) | 115 tiles |
| Packs to order | CEILING(115 / 10, 1) | 12 packs |
| Tile material cost | 12 × £24.50 | £294.00 |
| Adhesive bags | CEILING(20.68 / 5, 1) | 5 bags |
| Adhesive cost | 5 × £8.00 | £40.00 |
| Grout bags | CEILING(20.68 / 8, 1) | 3 bags |
| Grout cost | 3 × £6.50 | £19.50 |
| Total material cost | £294 + £40 + £19.50 | £353.50 |
Alternative scenario: a 6 m × 5 m room with a 2 m² island, 15% wastage (herringbone pattern), and 600 × 600 mm square tiles in packs of 4. Net area = 28 m², gross with wastage = 32.20 m², tile area = 0.36 m², tiles needed = CEILING(32.20 / 0.36, 1) = 90 tiles, packs = CEILING(90 / 4, 1) = 23 packs.
Checking your results
- Gross area should equal length multiplied by width. If it appears zero, check that G2 and G3 contain numbers, not text.
- Area with wastage should always be larger than net area. If they are equal, G5 may be zero or empty; the formula treats blank as zero, which is mathematically valid but means no wastage allowance.
- Packs to order should never be less than tiles-needed divided by tiles-per-pack. If it is, check that B16 contains the CEILING formula rather than a plain division.
- Total cost should equal tile cost plus adhesive cost plus grout cost. Use a manual addition to verify.
- If any result shows a #DIV/0! error, check that tile length (G6), tile width (G7), and tiles per pack (G8) are non-zero.
Frequently asked questions
What wastage percentage should I use for a bathroom with many internal cuts?
For a bathroom with a straight grid layout, 10% is a commonly used starting figure. If the room has many internal features such as a shower tray, toilet base, and vanity unit that require precision cuts, some installers recommend 15%. For diagonal or herringbone patterns in any room, start at 15%. Always discuss the specific job with your tiler, as their experience with the actual tile size and room shape is the most reliable guide. The calculator lets you test different wastage values instantly to see how pack count changes.
Can I use this calculator for plank flooring such as LVT or laminate?
Yes. Enter the plank dimensions in the same length and width fields. For LVT or laminate, tiles per pack refers to planks per pack. The coverage-based approach is identical. The only difference is that plank flooring sold by area coverage (m² per pack) rather than piece count needs a slight formula adjustment: replace B17 with =CEILING(B14/pack_coverage,1) where pack_coverage is the m² figure from the product label entered in your Data sheet. Everything else remains the same.
Why does the calculator round up to whole packs rather than individual tiles?
Tiles and planks are sold in complete packs, not individually (in most cases). Ordering a fractional pack is not possible, so you must always round up. The CEILING function handles this by moving any decimal result to the next whole number. For example, if you need 11.2 packs, CEILING returns 12. This ensures you never arrive on site short of material. If you later find a supplier who sells individual tiles, you can reference B16 (whole tiles) directly instead of B17.
Troubleshooting
Results show #VALUE! or #REF!
#VALUE! usually means a cell expected a number but found text. Check that all G cells contain numbers. If you copied a value from another source, it may have been pasted as text; select the cell, press Delete, and type the number manually.
#REF! means a formula is pointing to a cell that does not exist. Check that your Data sheet is named exactly Data (capital D, no trailing space) and that B1 through B8 on that sheet all contain values.
The add-on menu does not show Calculator
Your GS2Web entitlement may not include the Calculator feature. Visit your GSheetPress account to confirm your plan level, or consult the GSheetPress support page for guidance on upgrading.
The public calculator shows blank results after submitting
Open the spreadsheet and check that G2 through G8 are not locked or protected. Web submissions write to the G column; if those cells are protected, the calculation never fires. Also confirm that all result formulas in column B reference G cells rather than E cells.
Pack count seems too high
Check the tiles-per-pack value in G8 (or E8 before submission). A common mistake is entering the pack weight or coverage in m² instead of the piece count. If your product is sold by coverage area, adjust the B17 formula as described in the FAQ above.
Ancillary quantities look wrong
Adhesive and grout coverage varies by product, substrate, tile size, and joint width. The figures in your Data sheet are starting estimates only. Always check the coverage rate printed on the specific product you are buying and update Data!B5 and Data!B7 accordingly.
For a deeper look at how GSheetPress handles calculator inputs and result fields, see the calculator feature details page. If you want to present results in a structured table on your site, the table feature details page explains how to combine a calculator output with an embedded table view.
Publish and test your web calculator
- Before publishing, make the spreadsheet accessible to the add-on. Click Share in the top-right corner of Google Sheets. Under General access, change the setting to Anyone with the link and set the role to Editor. Click Done. Important: this setting allows anyone who holds the spreadsheet URL to edit the file. Only use your dedicated sample workbook for this step — never a file containing personal, client, or financial data.
- Click on the calculator tab you built (the tab the add-on created, not the Data tab).
- Go to Extensions → GS2Web SaaS → Calculator → Publish Calculator.
- Wait for the confirmation message that publishing is complete.
- Go to Extensions → GS2Web SaaS → Calculator → Calculator Link. A sheet listing your published calculators will open.
- Find the row whose Sheet Name column matches the tab you just published.
- Open the URL in column C (the public Link). Do not use column B (the Edit Link), which opens the spreadsheet editor rather than the public form.
- If the list looks outdated, click Get Links to refresh it.
- On the public calculator page, enter the worked example values from this guide: length 5, width 4, deduction 1.2, wastage 10, tile length 0.6, tile width 0.3, tiles per pack 10.
- Click Calculate and verify the results match the expected values in the worked example table: 12 packs, £353.50 total.
- If you want to embed the calculator on a website, copy the iframe code from column D and paste it into an HTML block on your page.
- Republishing the same calculator tab in future retains the same public link, so existing embeds continue to work without updating.