About this calculator
This calculator helps estimate how many laminate packs a room's floor needs — choose the room shape (rectangle, one of four non-rectangular templates, or a freely sketched shape) — while also accounting for the expansion gap left along the walls, the underlay area (polyurethane or another film), and the skirting board length. Useful when renovating or fitting a new floor.
Formula
The room shape is entered through the shared roomShape field, the same five-template
(rectangle, L, alcove, T, U) plus free-form mechanism as the floor-tile calculator. This
calculator is NOT perimeter-independent (unlike floor/ceiling tiles) — both the laid area
and the skirting length depend on the true outline, not just the area:
room area = the true area of the chosen shape's polygon
room perimeter = the true perimeter of the chosen shape's polygon
laid area = room area − gap × perimeter + 4 × gap²
planks required = ceil(laid area / (plank length × plank width))
packs required (excl. waste) = ceil(laid area / pack coverage)
waste packs = ceil(pack count × waste% / 100)
total packs = pack count + waste packs
The laid-area formula is the exact geometric inward-offset (erosion) formula for any simple
rectilinear polygon (all five templates and the free-form shape are of this kind): the
outline shrinks inward by the expansion gap's distance from every wall, and the offset area
equals area − gap×perimeter + gap²×(convex corners − concave corners). Since any simple
polygon's convex-minus-concave count of 90°/270° corners is always exactly 4 (the turning
angles must sum to 360°), this formula reduces to the one written above — and for the
rectangle template it matches this calculator's older formula
(length−2×gap)×(width−2×gap) exactly, just as before.
Plank count is computed as the laid area divided by one plank's own area, rounded up — this assumes offcuts left over at the end of one row are reused to start the next row (standard site practice, also shown in the drawing as staggered joints). Packs are bought by the coverage area printed on the pack (m²), not by plank count — that's a user input, since the same area can hold a different plank count in different products. The underlay area equals the whole room area (with no expansion-gap deduction — underlay is laid across the whole room right up to the wall, and the gap is left only for the flooring itself).
Skirting length equals the TRUE room perimeter, not the bounding rectangle's perimeter — for an L, T, U, or alcove-shaped room the true perimeter (including the notch's own edges) is longer than the bounding rectangle, so the skirting length is correspondingly larger. See Assumptions and limits for why this is a correct figure, not an inflated one.
Worked example
Defaults: room shape — rectangle 5 × 4 m (the template's own default dimensions), plank 1200×190 mm, pack coverage 2.22 m², expansion gap 10 mm, waste 5%.
room area = 5 × 4 = 20 m² = 20,000,000 mm²
room perimeter = 2 × (5+4) = 18 m = 18,000 mm
laid area = 20,000,000 − 10×18,000 + 4×10² = 20,000,000 − 180,000 + 400
= 19,820,400 mm² ≈ 19.82 m²
(same as (5000−2×10)×(4000−2×10) = 4980×3980 = 19,820,400 mm² for a rectangle)
planks required = ceil(19,820,400 / (1200×190)) = ceil(86.93) = 87
packs excl. waste = ceil(19.8204 m² / 2.22 m²) = ceil(8.93) = 9
waste packs = ceil(9 × 5 / 100) = 1
total packs = 9 + 1 = 10
underlay area = 5 m × 4 m = 20 m²
skirting length = 2 × (5 m + 4 m) = 18 m
For these inputs the calculator returns exactly this: 87 planks, 10 packs total (9 excl. waste + 1 for waste), 20 m² of underlay, and 18 m of skirting.
FAQ
How much waste should be allowed for laminate flooring? The default is 5%, and it applies to straight laying (planks parallel to a wall). The calculator clearly warns that diagonal laying needs more — every edge piece is cut at an angle, which significantly increases waste.
Why are plank count and pack count computed separately? Plank count is a plain division of the laid area by one plank's own area. Pack count is computed from the coverage area (m²) printed on the pack, since the same area can hold a different plank count in different products — so pack quantity isn't simply plank count divided by planks-per-pack.
What expansion gap width should I use? The default of 10 mm is a commonly used guideline, not a code requirement — the exact width is always given by the flooring manufacturer's installation instructions, and larger rooms may need a wider gap.
Is the underlay area reduced for the expansion gap? No. The underlay (polyurethane or another laid layer) is laid across the whole room area right up to the wall — the gap is only a setback for the flooring's own edge, not an underlay gap.
Does the calculator know my specific laminate's pack size? No — pack coverage (default 2.22 m²) is a value you enter. This figure is printed on each pack and varies by manufacturer and collection, so it needs to be checked before buying.
Why is the skirting length larger for an L, T, U, or alcove-shaped room than I'd expect from the bounding rectangle? Because skirting is fixed along the TRUE wall line, including a notch's own interior and exterior corners — and a notch always adds extra wall length compared with the bounding rectangle (the same area can be enclosed by a shorter or longer outline, depending on the shape). That's why skirting length in this calculator is always computed from the true room perimeter, not the bounding rectangle — this is the correct figure for purchasing, not a bug.
Assumptions and limits
No standard was found for a laminate quantity calculation — it depends on the specific
product's packaging and laying method, not one common standard, so meta.standards is
deliberately left empty.
Plank length, width, pack coverage, and the expansion gap are user inputs with realistic, but not product-specific, defaults — your chosen product's exact figures must be entered.
Unlike the floor/ceiling tile or roll-flooring calculators, this calculator is NOT perimeter-independent. The laid area is computed by the exact inward-offset (erosion) method from the true polygon outline and perimeter, and skirting length equals the true room perimeter, not the bounding rectangle's perimeter — for an L, T, U, or alcove-shaped room the true perimeter (including the notch's own edges) is always longer, so the skirting length is correspondingly larger. This is a deliberate, correct model (skirting is fixed along the true wall line), not an inflated figure or a bug — unlike the roll-flooring calculator, where strip layout deliberately stays on the bounding box (there, a different physical laying method justifies a different model).
The inward-offset area formula (see Formula) checks that the gap doesn't exceed the bounding rectangle's own two dimensions — for a thin leg (in an L, T, U, or alcove-shaped room) this is necessary but not sufficient: the outline could theoretically self-intersect at a narrower leg and a smaller gap than this check catches; that case is not modeled separately.
The default 5% waste figure applies only to straight laying, with planks parallel to the wall; diagonal laying, where every edge piece is cut at an angle, needs a higher waste percentage, and the calculator states this clearly in a warning. Plank count assumes the offcut left at the end of each row is reused to start the next row (shown in the drawing as joints staggered on a three-row cycle) — if offcuts aren't reused in real work, the actual requirement will be higher than the number the calculator shows. Pack coverage is the figure you supply, not a derived value — laminate is sold by pack area, and plank count per pack varies by product even at the same coverage, so confirm it against your chosen product's packaging.
The drawing's own expansion-gap boundary and plank layout are drawn relative to the room's bounding box, so they are schematic near a notch (an L/T/U/alcove/custom room shape) — the laid area, pack, and plank quantities above are still calculated from the room's exact geometry, not from the diagram. The drawing is also schematic in another sense: for a large room, the row/column count is decimated so the SVG stays legible.