sitemath explained

Paint & tile quantities, explained — how sitemath turns room measurements into a buy list

No guessing, no "buy a bit extra and hope". You measure the room; sitemath subtracts the openings, divides by a coverage number cited to its manufacturer sheet, and rounds the worst case up to real tins, bags and boxes. This page walks through the exact arithmetic — with the same numbers the calculator computes.

The hardware-shop problem: how much do I actually buy?

You're standing at the paint counter. The room is measured, sort of. The dealer says "one 4-litre will do it" — but on what coverage, for how many coats, over how much wall once the door and windows are out? And do you believe the number, or the tin?

Most online calculators answer with one confident figure and no working. That figure is either a guess dressed up as precision, or it quietly rounds a mystery coverage you can't see or change.

sitemath does the opposite: it shows every number, every source, every step, gives you an honest range rather than false precision, and rounds up to the packs the shop actually sells. Here's the whole mechanism.

How it works: one 4.0 × 3.0 m room, end to end

A real worked example — the same numbers this page's node --test self-tests re-derive, to the square metre and the litre.

1 Measure the room

Net paintable area = walls − openings (ceiling untouched)

Walls are 2 × (L + W) × H. Each door and window area comes off the wall total only. The ceiling is L × W and a door never shrinks it — a mistake sitemath is careful not to make.

Area readout
Gross wall 2 × (4.0 + 3.0) × 3.0 42.00 m²
− Door 0.9 × 2.1 −1.89 m²
− Window 1.2 × 1.2 −1.44 m²
Net wall 38.67 m²
+ Ceiling L × W, deductions never apply +12.00 m²

Net paintable total 50.67 m² — walls for topcoat, ceiling added where you paint it.

2 Divide by a cited coverage band

A band in, an honest min–max range out

The topcoat here is an economy interior emulsion, cited at 130–150 sq.ft/L for 2 coats (Asian Paints Tractor Emulsion PIS, verified 2026-07-23). Divide the wall area by the band and you get a range — not one fake-precise number. The worst case uses the band's lowest coverage, so you plan for the thirsty wall.

38.67 m² of wall ÷ band, 2 coats cited TDS
Best case band max, 150 sq.ft/L 2.77 L
Worst case band min, 130 sq.ft/L 3.20 L

Real consumption lives inside this band — porosity, texture and method decide where. sitemath never pretends to know which; it buys against the top.

3 Round up to real packs

The pack-fill minimizer: buy the shop's tins, not a decimal

You can't buy 3.20 litres. So sitemath rounds the worst case up across the real tin ladder — 1 / 4 / 10 / 20 L — choosing the least total volume that still covers the need, then the fewest tins, then the larger tin. Here that's a single 4 L tin.

Need 3.20 L → the tin ladder
20 Lovershoots
10 Lovershoots
4 L✓ least ≥ 3.20
3 × 1 Lonly 3 L — short

Buy: 1 × 4 L tin. The best-case 2.77 L would fit in three 1 L tins — but an ideal surface is not the one to bet a repaint on.

4 Tiles: area → boxes + spares

Floor area + wastage %, then box-of-N — one round-up, integer millimetres

The 12.00 m² floor in 600 × 600 mm tiles, at 5% straight-lay wastage, works out to 35 tiles in exact integer-mm math with a single round-up. Divide by 4 tiles a box and round up once more: 9 boxes, 1 spare for future breakages.

12.00 m² · 600 × 600 mm · 5% wastage
Bare tiles 12 ÷ 0.3633.33
× 1.05 wastage, one ceil35 tiles
÷ 4 per box, round up9 boxes

Buy: 9 boxes of 4 — 36 tiles, 35 laid, 1 spare. Diagonal lay defaults to 10% and needs 37 tiles (10 boxes).

Every coefficient is tap-to-see-its-source — and yours to override

The whole point of sitemath: no hidden magic numbers. Each coverage band, pack ladder and wastage default carries where it came from, when it was checked, and a one-tap override for the figure on your tin.

verified

Coverage bands

Read from the manufacturer's Technical Data Sheet — e.g. "2 COATS 130–150 sq.ft/ltr" from the Asian Paints Tractor Emulsion PIS — with the verbatim quote, source URL and a verified-on date. The PDFs are staged in the repo's sources/.

beta

Unconfirmed figures, flagged

Where a manufacturer page publishes no coverage number, the band comes from a named secondary listing and is marked beta in the app — visibly, and asking you to override it with your tin's real TDS figure. Nothing is invented to fill a gap.

convention

Stated conventions

The 5% / 10% tile wastage and the suggested door/window sizes are conventions, not published specs, and say so. They're editable per project — measure your own openings, set your fixer's real allowance.

your value

Your override wins

Tap any coefficient, type the number off your product, and it flows through every result immediately — marked as your value wherever it's used. The cited default is a starting point, not a cage.

Quantities only — never prices

sitemath tells you how much to buy: litres, kilograms, tins, bags, boxes. It deliberately says nothing about cost. Rates swing by market, dealer, city and day; a price baked into a calculator is stale the moment it ships and invites arguments at the counter.

So the output is a clean material list you carry to any shop, and the bill is theirs to write. That single boundary keeps the tool honest and keeps it useful everywhere prices differ.

Privacy that is enforced, not promised

Your house plan is nobody's business. sitemath doesn't just say it won't send your data — it ships a policy that makes the browser itself refuse to.

your browser localStorage sitemath.v1 ✓ connect-src 'none' internet
Every request the page could ever make — blocked before it leaves.

The page's Content-Security-Policy includes:

default-src 'self'; connect-src 'none'
  • No network calls possiblefetch, XHR and WebSockets are all refused by the browser, by policy.
  • No server, no account, no analytics — there is nothing to log in to and nothing watching.
  • localStorage only — your rooms, measurements and overrides live in this browser under one key.
  • Print, CSV and JSON export are the only exits — files you download on purpose; they are also your only backup, so export regularly.

The honest flip side: clearing site data or switching devices loses your projects. There is no cloud copy — by design.

What's in the app

Room measurer

Metres or feet (exact 0.3048 m/ft), multiple rooms, per-room door/window deductions and a ceiling toggle — with the running net paintable area under a tape-blade readout.

Paint system

Putty, primer and topcoat, each carrying its own cited coverage band. Coats are editable — set what your painter actually quotes — and putty is a total-application figure, not multiplied.

Shopping list in real packs

Best case, worst case, and a buy column rounded to 1/4/10/20 L tins and 5/40 kg putty bags by the pack-fill minimizer. Quantities only — never prices.

Tile calculator

Area from a room or entered directly, catalogue tile sizes or custom mm, straight/diagonal wastage, tiles-per-box — all in integer-mm arithmetic with a single round-up.

Every coefficient, sourced

A full corpus list with verbatim TDS quotes, source URLs, verified-on dates, beta flags for unconfirmed figures, and one-tap overrides that flow everywhere.

Print, CSV & JSON

An A4 site list to hand to the shop, RFC-4180 CSV export, and a full JSON backup/restore — the only ways data leaves, and your backup.

What sitemath honestly is not

  • Not a guarantee. Coverage bands are manufacturer figures for ideal, properly prepared surfaces; porosity, texture, thinning and method push real consumption outside the band. Buy against the worst case and treat every output as an estimate.
  • Not a site survey. Dado heights, damaged plaster, extra putty coats and repair quantities are contractor judgment calls the app cannot make and does not fake.
  • Not a price quote. Quantities only — rates vary by market, dealer and day, and the shop's bill is the price.
  • Only as good as your measurements. A wrong length or a missed opening flows straight through; measure twice.
  • Conventions are defaults, not law. Suggested opening sizes and tile-wastage percentages are stated conventions — measure your own, and override anything that isn't right.

Questions people ask

How does sitemath work out how much paint I need?

Walls are 2 × (L + W) × H; each door and window area comes off the wall total only; that net area is divided by the paint's published coverage band. Because coverage is a band (e.g. 130–150 sq.ft/L for 2 coats), you get an honest min–max litres range, and the worst case is rounded up to real tins.

Do door and window deductions reduce the ceiling paint too?

No. Openings are cut out of the wall area only. The ceiling is L × W and is never reduced by a door or window.

Why a range, and why round up to whole tins?

Real consumption depends on the surface, so the manufacturer publishes a band, not one number. sitemath shows the range and rounds the worst case up with a minimizer that prefers the least total volume that covers the need, then the fewest tins, then the larger tin. You buy against the worst case.

Does my room data leave the browser?

No — and it can't. Both sitemath and this page ship a Content-Security-Policy with connect-src 'none', so the browser itself blocks every network request. No server, no account, no analytics; localStorage only, with print/CSV/JSON export as your backups.

Measure the room. Get the buy list.

Free, offline, MIT-licensed. Every coefficient shown and cited, every result an honest range rounded up to real packs — quantities only, and nothing leaves your browser.

Open sitemath →

Source code & corpus citations on GitHub