# Tile Calculator

> Counts the tiles needed for a floor or wall area from the tile dimensions plus the grout joint width, adds a cutting-waste allowance and converts to boxes when the tiles per box are known.

- Calculator id: `tile` · Category: Construction & Home (`construction`) · Tool name: `estimate_tiles_needed`
- Canonical page: https://tttkmbb.com/construction/tile · This document: https://tttkmbb.com/construction/tile.md · JSON definition: https://tttkmbb.com/construction/tile.json

## Purpose

Counts the tiles needed for a floor or wall area from the tile dimensions plus the grout joint width, adds a cutting-waste allowance and converts to boxes when the tiles per box are known.

**Use when:** You need to order ceramic, porcelain or stone tiles for a known area and tile size, including grout joints and waste.

**Do not use when:** You are laying planks or sheet goods sold by area (use flooring), or need the area itself from room dimensions (use rectangle first).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `unit_system` | enum: metric \| imperial |  | optional, default "metric" | Unit system of the length inputs (metric: m / cm / mm; imperial: ft / in). Outputs are reported in both systems. |
| `area` | number | m² or ft² | required | Floor or wall area to cover, in m² (metric) or ft² (imperial). (> 0, max 100000) |
| `tile_length` | number | mm or in | required | Tile length in millimetres (metric) or inches (imperial). (> 0, max 5000) |
| `tile_width` | number | mm or in | required | Tile width in millimetres or inches. (> 0, max 5000) |
| `grout_gap_mm` | number | mm | optional, default 3 | Grout joint width in millimetres for both unit systems (3 mm ≈ 1/8 in; 1.6 mm = 1/16 in is the ANSI minimum). (min 0, max 30) |
| `waste_percent` | number | % | optional, default 10 | Extra material for cuts, breakage and offcuts, applied as a multiplier (1 + waste_percent/100). 10 % for straight layouts, 15 % for diagonal patterns or rooms with many cuts. (min 0, max 50) |
| `tiles_per_box` | integer |  | optional | Number of tiles in one box; optional, enables the box count. (min 1, max 1000) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `area_m2` | number | m² | Area to tile in square metres. |
| `area_ft2` | number | ft² | Area to tile in square feet. |
| `tile_footprint_cm2` | number | cm² | (tile_length + gap) × (tile_width + gap). |
| `tile_footprint_in2` | number | in² | Same footprint in square inches. |
| `tiles_needed_no_waste` | integer |  | ceil(area / tile_footprint). |
| `tiles_needed` | integer |  | ceil(area / tile_footprint × (1 + waste_percent/100)). |
| `boxes_needed` | integer |  | ceil(tiles_needed / tiles_per_box); only when tiles_per_box is given. |

## Formula

`footprint = (tile_length + grout_gap) × (tile_width + grout_gap); tiles_no_waste = ceil(area / footprint); tiles = ceil(area / footprint × (1 + waste_percent/100)); boxes = ceil(tiles / tiles_per_box).`

## Data Sources

- Custom Building Products – Technical Bulletin TB85: Grout joint width (ANSI A108.02 minimum 1/16 in) — https://www.custombuildingproducts.com/media/60712312/tb85-grout-joint-width.pdf (reference, retrieved 2026-09-23)
- Ceramic Tile Education Foundation – Tile industry standards for grout joints — https://www.ceramictilefoundation.org/blog/want-credit-card-grout-joints-check-tile-industry-standards (reference, retrieved 2026-09-23)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/tile?area=…&tile_length=…&tile_width=…`
- `POST https://tttkmbb.com/api/v1/calculate/tile` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/tile · OpenAPI operationId `estimate_tiles_needed` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "tile", "inputs": {…}}`

## Example

- 20 m², 300 × 300 mm tiles, 3 mm joints, 10 % waste, 10 per box: inputs `{"unit_system":"metric","area":20,"tile_length":300,"tile_width":300,"grout_gap_mm":3,"waste_percent":10,"tiles_per_box":10}` → `{"area_m2":20,"tile_footprint_cm2":918.09,"tile_footprint_in2":142.3,"tiles_needed_no_waste":218,"tiles_needed":240,"boxes_needed":24}`
- 120 ft², 12 × 24 in tiles, 3 mm joints, 10 % waste, 8 per box: inputs `{"unit_system":"imperial","area":120,"tile_length":12,"tile_width":24,"grout_gap_mm":3,"waste_percent":10,"tiles_per_box":8}` → `{"area_m2":11.15,"tile_footprint_in2":292.27,"tiles_needed_no_waste":60,"tiles_needed":66,"boxes_needed":9}`

```
GET https://tttkmbb.com/api/v1/calculate/tile?unit_system=metric&area=20&tile_length=300&tile_width=300&grout_gap_mm=3&waste_percent=10&tiles_per_box=10
```

## Limitations

You are laying planks or sheet goods sold by area (use flooring), or need the area itself from room dimensions (use rectangle first). All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Why add the grout joint to the tile size?**

Each tile occupies its own face plus one joint along each edge, so the effective footprint is (length + gap) × (width + gap); ignoring the joint over-orders by a few percent on small tiles.

**How wide should the grout joint be?**

ANSI A108.02 requires at least 1/16 in (1.6 mm); 1/8 in (3 mm) is typical for rectified tiles and 3/16 in (5 mm) for calibrated (non-rectified) tiles.

## Related

- [Flooring Calculator](https://tttkmbb.com/construction/flooring.md) — Sheet or plank flooring sold by area.
- [Rectangle Calculator](https://tttkmbb.com/geometry/rectangle.md) — Get the area from length and width.
