Enter the room size, the roll width, the trim allowance, the pattern repeat and the increment the store cuts in. The price can be left blank (then no cost is calculated).
Table of Contents
-
What you can do on this page
-
What is this calculation used for?
-
How to Use
-
Formulas and figures
-
Symbols and terms
-
Good to know before you start
-
How to calculate it in Excel
-
How to calculate it in Google Sheets
-
How to calculate it in Python
-
How to write it in LaTeX and other math languages (copy and paste)
-
How to have ChatGPT do the calculation
-
DataChef Features
-
Related Features
-
NumberChef Calculators List
What you can do on this page
- Enter the room length and width and the roll width (sheet vinyl is usually 12 ft wide), and you get the number of strips, the length of each strip and the total length for running the roll lengthwise and widthwise. The page recommends the direction that needs less
- Measure in feet and inches by default, or switch "Units" to Metric to work in meters and centimeters
- Enter the trim allowance (the extra length for each strip) and the pattern repeat, and the extra length for pattern matching is added to each strip
- The length needed is rounded up to the increment the store cuts in (6 in, 1 ft or 1 yd) to give the length to buy, along with the offcut area and the waste rate
- Enter a price (per linear foot or per square foot), and the estimated cost for each direction is calculated too
- A plain-language explanation of the formulas, a layout drawing and copy-and-paste formulas for Excel, Google Sheets and Python are all on this page
What is this calculation used for?
Sheet vinyl is a popular DIY floor for kitchens, laundry rooms and basements. For a 15 ft × 13 ft room with a 12 ft wide roll, running it widthwise takes 2 strips × 13.5 ft = 27 ft, while running it lengthwise takes 2 strips × 15.5 ft = 31 ft. Pick the wrong direction and you buy 4 ft more.
Working out both directions before you buy saves money on material, and it also saves you from running short and buying more later from a different dye lot, whose color may not quite match.
Sheet vinyl also comes 13.2 ft (13 ft 2 in) wide, and carpet 15 ft wide. In the same 15 ft × 13 ft room, a 13.2 ft roll run lengthwise covers the room in one strip of 16 ft, with no seam. A 15 ft carpet run lengthwise also covers it in one piece. In a bedroom or a family room, where the feel and the look matter, being able to go seamless can decide which product you choose.
Change the roll width on this page to 13.2 or 15 and you can see right away whether one direction needs only one strip.
Flooring quotes often list carpet and sheet vinyl in square yards rather than in feet of roll. The material is bought as "roll width × length", so the quantity comes from strips × strip length, as in these formulas. For example, 27 ft of a 12 ft roll is \(27 \times 12 = 324\) ft², which is \(324 \div 9 = 36\) square yards.
Knowing the formulas, you can follow which layout the quote is based on and how much trim and pattern allowance it includes (a real quote also covers labor, floor preparation and removal of the old floor, so the quantity alone does not tell you whether the price is fair).
In a long, narrow space such as a 5 ft × 40 ft hallway, a 6 ft wide roll run down the length covers it in one strip of 41 ft with no seam. Running it across the hallway takes \(\lceil 40 \div 6 \rceil = 7\) strips × 5.5 ft = 38.5 ft, bought as 39 ft. That is a little shorter, but it makes 6 seams. When the lengths are close, stores and offices usually choose the direction by also weighing the number of seams and the installation work.
This page recommends the direction by the length to buy, so if you want fewer seams, also check "Strips (seams)" in the result.
Wood-look and tile-look sheet vinyl has a pattern repeat, such as 18 in, and to line up the pattern at a seam, each strip is rounded up to a multiple of the repeat. For a 15 ft room with the roll run lengthwise, a 15.5 ft strip for a solid color becomes 16.5 ft for a pattern, so 2 strips need 2 ft more.
If you calculate as if the product were solid and then buy a pattern, you may run short, so always enter the repeat for a patterned product.
Formulas and figures
Symbols and terms
Symbols
| \(a\) | a | The room side along the roll (ft). It is the room length when the roll runs lengthwise, and the width when it runs widthwise. Think of "a" for "along". |
| \(b\) | b | The room side across the roll (ft), the side covered by roll widths. It is the width when the roll runs lengthwise, and the length when it runs widthwise. |
| \(w\) | w | The roll width (ft), from "width". Sheet vinyl is usually 12 ft wide. |
| \(m\) | m | The trim allowance (ft), the total extra length per strip, from "margin". About 3 in at each end, 6 in (0.5 ft) in total, is typical. |
| \(p\) | p | The pattern repeat (ft), the length after which the pattern repeats along the roll, from "pattern". A solid color counts as 0. |
| \(n\) | n | The number of strips (how many roll widths side by side), from "number". Found with \(n = \lceil b \div w \rceil\). The number of seams is \(n - 1\). |
| \(l\) | l | The strip length (ft), from "length". For a solid color it is \(a + m\). For a pattern with two or more strips it is \(p \times \lceil (a + m) \div p \rceil\) (with one strip, even a pattern uses \(a + m\)). |
| \(M\) | M | The length needed (ft). \(M = n \times l\), the length before rounding up to the cutting step. |
| \(M'\) | M prime | The length to buy (ft). The length needed rounded up to the cutting step, which is the length you order at the store. |
| \(u\) | u | The cutting step (ft), from "unit". It is 1 for 1 ft steps and 3 for 1 yd steps. |
| \(S\) | S | The floor area (ft²), found from length × width. |
| \(E\) | E | The offcut area (ft²). The area bought (length to buy × roll width) minus the floor area. |
| \(r\) | r | The waste rate, the share of the area bought that becomes offcuts, from "rate". \(r = E \div (M' \times w)\). |
| \(c\) | c | The unit price (per linear ft or per ft²), from "cost". |
| \(Q\) | Q | The quantity that matches the price unit (the length to buy or the area bought), from "quantity". |
| \(T\) | T | The estimated cost (the flooring only, without adhesive or labor), from "total". |
| \(\lceil x \rceil\) | ceiling of x | The ceiling function: rounds up to the next whole number. (Examples: \(\lceil 1.08 \rceil = 2\), \(\lceil 2 \rceil = 2\)) |
Terms
| sheet vinyl | Vinyl flooring that comes in large sheets on a roll, with a printed wood or tile look on the surface, often with a cushioned backing. It is usually 12 ft wide and cut to the length you need. Popular for kitchens, bathrooms and laundry rooms. |
| broadloom carpet | Wall-to-wall carpet sold on wide rolls, usually 12 ft and also 15 ft wide, and cut to fit the room. A 15 ft roll covers many rooms without a seam. |
| commercial sheet flooring | Heavy-duty vinyl sheet flooring used in stores, offices, schools and hallways. It also comes on rolls, and the length you need is worked out the same way. |
| roll width | The width of the roll. Sheet vinyl is usually 12 ft (also 6 ft and 13.2 ft), and carpet 12 ft or 15 ft. If the room is narrower than the roll, one strip covers it without a seam. |
| seam | The joint between strips laid side by side when one roll width is not enough. There is one fewer seam than strips. Fewer seams look better and are easier to install. Seams are said to show less when they run in the same direction as the light from the main window. |
| trim allowance | The extra length, beyond the room length, kept for trimming the strip to the walls at both ends. It covers crooked walls and doorways. About 3 in at each end, 6 in in total, is typical. |
| pattern repeat | The length after which the pattern repeats along the roll, shown on the product as "pattern repeat: 18 in" or similar. When strips are laid side by side, each strip is rounded up to a multiple of this length to line up the pattern at the seams. A solid color counts as 0. |
| pattern matching | Laying the strips so the pattern runs on across the seams. The shift needed to line it up takes extra material. Not needed when one strip covers the room (no seam). |
| layout | Deciding which way the roll runs and where the strips are joined. Installers plan the layout before ordering and work out the length from it. "Lengthwise" and "widthwise" on this page are the two most basic layouts. |
| offcut | The part of the purchased roll that is cut away and not laid in the room. The extra width (the combined strip width minus the room width) is usually the largest part, followed by the trim and pattern allowances. Offcuts can often be reused in a small room such as a bathroom or a closet. |
| waste rate | The share of the area bought that ends up as offcuts. It tells you how well the direction and the roll width were chosen. |
| wall to wall | Measured from the inside face of one wall to the inside face of the opposite wall. Flooring is calculated from these inside measurements. Plans are often dimensioned to the center of the walls, so the inside measurement is shorter by the wall thickness. |
| linear foot | One foot of length cut from the roll at its full width. Stores that cut sheet vinyl and carpet to order often sell by the linear foot, and each store has its own cutting step. |
| square yard | A unit of area often used for carpet and sheet vinyl prices and quotes in the US. 1 sq yd = 3 ft × 3 ft = 9 ft². To get square yards from square feet, divide by 9. |
| dye lot | A batch of product made at the same time. Colors can differ slightly between dye lots, so it is best to buy all the flooring for a room at once. |
| rounding up | Changing a value with a decimal part to the next whole number. For the number of strips and the number of cutting steps, always round up so you do not run short. |
Good to know before you start
Here is what helps you use the calculation on this page with real understanding, not just by pressing the button.
| Area of a rectangle (Grades 3–4) |
|
| Converting units of length (Grades 4–5) |
|
| Multiplying and dividing decimals (Grades 5–6) |
|
| Rounding (Grades 3–4) |
|
| Percentages (Grades 6–7) |
|
How to calculate it in Excel
| Room side across the roll b (ft) | 13 |
| Roll width w (ft) | 12 |
| Number of strips n | =ROUNDUP(B1/B2,0) |
| Room side along the roll a (ft) | 15 |
| Trim allowance m (in) | 6 |
| Pattern repeat p (in, 0 if solid) | 0 |
| Strip length l (ft) | =IF(B3>0,B3/12*ROUNDUP((B1+B2/12)/(B3/12),0),B1+B2/12) |
| Number of strips n | 2 |
| Strip length l (ft) | 13.5 |
| Cutting step u (ft) | 1 |
| Length needed M (ft) | =B1*B2 |
| Length to buy M' (ft) | =ROUNDUP(B4/B3,0)*B3 |
| Length to buy M' (ft) | 27 |
| Roll width w (ft) | 12 |
| Floor area S (ft²) | 195 |
| Offcut area E (ft²) | =B1*B2-B3 |
| Waste rate r | =B4/(B1*B2) |
| Unit price c ($) | 18 |
| Quantity Q (ft or ft²) | 27 |
| Estimated cost T ($) | =B1*B2 |
"ROUNDUP(value, 0)" rounds up to a whole number (the ⌈ ⌉ in the formulas).
B3 in the first table shows 2 strips. The second table takes the trim allowance and pattern repeat in inches and turns them into feet with "/12", and the IF function rounds up to a multiple of the repeat only when the repeat is more than 0 (15.5 in the solid-color example, 16.5 if you enter a repeat of 18).
In the third table B4 and B5 show 27 (27 ft is a whole number of 1 ft steps). In the fourth table B4 shows 129 and B5 about 0.398 (39.8%), and B3 in the fifth table shows 486.
The first two tables use the lengthwise numbers (the 13 ft width is covered by roll widths, and each strip is the 15 ft length plus trim), and the tables from the third on use the widthwise numbers (2 strips × 13.5 ft = 27 ft). To get the widthwise strips and strip length, enter the length 15 in B1 of the first table and the width 13 in B1 of the second table (2 strips, 13.5 ft). If a patterned product needs only one strip (no seam), no pattern matching is needed, so set B3 (the pattern repeat) in the second table to 0.
How to calculate it in Google Sheets
| Room side across the roll b (ft) | 13 |
| Roll width w (ft) | 12 |
| Number of strips n | =ROUNDUP(B1/B2,0) |
| Room side along the roll a (ft) | 15 |
| Trim allowance m (in) | 6 |
| Pattern repeat p (in, 0 if solid) | 0 |
| Strip length l (ft) | =IF(B3>0,B3/12*ROUNDUP((B1+B2/12)/(B3/12),0),B1+B2/12) |
| Number of strips n | 2 |
| Strip length l (ft) | 13.5 |
| Cutting step u (ft) | 1 |
| Length needed M (ft) | =B1*B2 |
| Length to buy M' (ft) | =ROUNDUP(B4/B3,0)*B3 |
| Length to buy M' (ft) | 27 |
| Roll width w (ft) | 12 |
| Floor area S (ft²) | 195 |
| Offcut area E (ft²) | =B1*B2-B3 |
| Waste rate r | =B4/(B1*B2) |
| Unit price c ($) | 18 |
| Quantity Q (ft or ft²) | 27 |
| Estimated cost T ($) | =B1*B2 |
How to calculate it in Python
import math
room_length_ft = 15 # room length (ft)
room_width_ft = 13 # room width (ft)
roll_width_ft = 12 # roll width (ft). Sheet vinyl is usually 12 ft wide
margin_ft = 6 / 12 # trim allowance per strip (6 in, in feet)
repeat_ft = 0 # pattern repeat (ft). 0 for a solid color
sale_unit_ft = 1 # cutting step (ft). 1 for 1 ft steps
price_per_ft = 18 # price per linear foot ($)
floor_area_ft2 = room_length_ft * room_width_ft
def one_direction(along_ft, across_ft):
"""Amounts when the roll runs along along_ft and across_ft is covered by roll widths"""
strips = math.ceil(across_ft / roll_width_ft) # number of strips (rounded up)
strip_len_ft = along_ft + margin_ft # strip length with trim allowance
if repeat_ft > 0 and strips > 1:
strip_len_ft = repeat_ft * math.ceil(strip_len_ft / repeat_ft) # patterned with 2+ strips: round up to a multiple of the repeat (one strip has no seam, so no matching)
total_ft = strips * strip_len_ft # length needed
purchase_ft = math.ceil(round(total_ft / sale_unit_ft, 9)) * sale_unit_ft # rounded up to the cutting step
waste_ft2 = purchase_ft * roll_width_ft - floor_area_ft2 # offcut area
waste_rate = waste_ft2 / (purchase_ft * roll_width_ft) # waste rate
cost = price_per_ft * purchase_ft # estimated cost ($)
return strips, strip_len_ft, total_ft, purchase_ft, waste_ft2, waste_rate, cost
for name, along_ft, across_ft in (("Lengthwise", room_length_ft, room_width_ft), ("Widthwise", room_width_ft, room_length_ft)):
strips, strip_len_ft, total_ft, purchase_ft, waste_ft2, waste_rate, cost = one_direction(along_ft, across_ft)
print(f"{name}: {strips} strips × {strip_len_ft:.2f} ft = {total_ft:.2f} ft needed → buy {purchase_ft} ft, "
f"offcuts {waste_ft2:.1f} ft² ({waste_rate * 100:.1f}%), estimated cost ${cost:,.2f}")
How to write it in LaTeX and other math languages (copy and paste)
n = ⌈b ÷ w⌉
n = \left\lceil \frac{b}{w} \right\rceil
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>n</mi>
<mo>=</mo>
<mo>⌈</mo>
<mfrac><mi>b</mi><mi>w</mi></mfrac>
<mo>⌉</mo>
</mrow>
</math>
n = |~ b / w ~|
Ceiling[b/w]
n := ceil(b/w);
n = ceil(b/w);
n = ⌈b/w⌉
l = a + m (solid), l = p × ⌈(a + m) ÷ p⌉ (patterned)
l = a + m,\quad l = p \left\lceil \frac{a + m}{p} \right\rceil
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>l</mi>
<mo>=</mo>
<mi>a</mi><mo>+</mo><mi>m</mi>
<mo>,</mo>
<mi>l</mi>
<mo>=</mo>
<mi>p</mi>
<mo>⁢</mo>
<mo>⌈</mo>
<mfrac><mrow><mi>a</mi><mo>+</mo><mi>m</mi></mrow><mi>p</mi></mfrac>
<mo>⌉</mo>
</mrow>
</math>
l = a + m, l = p |~ (a + m) / p ~|
If[p > 0, p*Ceiling[(a + m)/p], a + m]
l := piecewise(p > 0, p*ceil((a + m)/p), a + m);
if p > 0, l = p*ceil((a + m)/p); else, l = a + m; end
l = a + m, l = p⌈(a + m)/p⌉
M = n × l, M' = ⌈M ÷ u⌉ × u
M = n l,\quad M' = \left\lceil \frac{M}{u} \right\rceil u
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>M</mi>
<mo>=</mo>
<mi>n</mi><mo>⁢</mo><mi>l</mi>
<mo>,</mo>
<msup><mi>M</mi><mo>′</mo></msup>
<mo>=</mo>
<mo>⌈</mo>
<mfrac><mi>M</mi><mi>u</mi></mfrac>
<mo>⌉</mo>
<mo>⁢</mo>
<mi>u</mi>
</mrow>
</math>
M = n l, M' = |~ M / u ~| u
{n*l, Ceiling[n*l/u]*u}
M := n*l; Mp := ceil(M/u)*u;
M = n*l; Mp = ceil(M/u)*u;
M = nl, M' = ⌈M/u⌉u
E = M' × w − S, r = E ÷ (M' × w)
E = M' w - S,\quad r = \frac{E}{M' w}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>E</mi>
<mo>=</mo>
<msup><mi>M</mi><mo>′</mo></msup><mo>⁢</mo><mi>w</mi>
<mo>−</mo>
<mi>S</mi>
<mo>,</mo>
<mi>r</mi>
<mo>=</mo>
<mfrac><mi>E</mi><mrow><msup><mi>M</mi><mo>′</mo></msup><mo>⁢</mo><mi>w</mi></mrow></mfrac>
</mrow>
</math>
E = M' w - S, r = E / (M' w)
{mp*w - s, (mp*w - s)/(mp*w)}
E := Mp*w - S; r := E/(Mp*w);
E = Mp*w - S; r = E/(Mp*w);
E = M'w − S, r = E/(M'w)
T = c × Q
T = c \times Q
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>T</mi>
<mo>=</mo>
<mi>c</mi>
<mo>×</mo>
<mi>Q</mi>
</mrow>
</math>
T = c * Q
c*q
T := c*Q;
T = c*Q;
T = c × Q
How to have ChatGPT do the calculation
You are a quantity calculation assistant for flooring jobs. Do the following calculation by actually running Python code, and base your answer only on the numbers from the execution result (do not answer by mental math or guessing). I am installing solid-color sheet vinyl, 12 ft wide, in a 15 ft × 13 ft room. The trim allowance is 6 in per strip, and the store cuts in 1 ft steps. For running the roll lengthwise (the 13 ft width is covered by roll widths) and widthwise (the 15 ft length is covered by roll widths), find each of the following: 1. The number of strips (room side across the roll ÷ roll width, rounded up) 2. The strip length (room side along the roll + trim allowance) 3. The length needed (strips × strip length) and the length to buy, rounded up to 1 ft steps 4. The offcut area (length to buy × roll width − floor area) and the waste rate Finally, tell me which direction needs the shorter length to buy. Show the formulas you used and the numbers from the execution result.
How to Use
-
1Enter your numbersType the numbers you want to calculate with into the input fields
-
2CalculatePress the "Calculate" button
-
3Check the resultThe result appears on the spot. The same page also explains the idea behind the calculation and the formula
DataChef Features
No technical knowledge required.
Intuitive and user-friendly operation.
Can be used without registering personal information.
Automatic file deletion by clicking "download".
and rapid file conversion.
No attribution required.
No need to contact us for commercial use permission.
