How we estimate
This page explains how the BIY app works out what you need to buy. It has two sections, because the two tools work from different sources: the Estimator, for building a house, and the Workshop, for things you build yourself.
Contents
Section 1 · Estimator
The Estimator in the BIY app and the numbers in this section come from the same source. Every table, every formula and every worked example below is read directly from our store data, so what you see here is exactly what the app uses. If a number is ever corrected, this page and the app change together.
Estimates are for planning only. Quantities are not rounded inside a calculation, so round up what you buy. Real needs vary with site conditions, workmanship and waste. Have a licensed professional confirm your plans before ordering or building.
Build It Yourself maintains these tables and formulas. Values marked † are calculated from the 40 kg figure using the method described on this page.
Cement bag size
Cement comes in 40 kg and 50 kg bags.
Each table lists both. In the formulas the chosen size is the word bag, so a column named
cement_40kg or cement_50kg is picked automatically.
† Marked values are calculated, not looked up: the 40 kg figure multiplied by the ratio between 50 kg and 40 kg cement for the same mixture class (concrete or mortar table above). The same method reproduces every 50 kg figure we have measured directly.
Concrete mixtures
Per cubic meter of concrete (concrete mixture table).
| Class | Proportion | Cement 40 kg bags | Cement 50 kg bags | Sand (cu. m.) | Gravel (cu. m.) |
|---|---|---|---|---|---|
| AA | 1 : 1.5 : 3 | 12.0 | 9.5 | 0.5 | 1.0 |
| A | 1 : 2 : 4 | 9.0 | 7.0 | 0.5 | 1.0 |
| B | 1 : 2.5 : 5 | 7.5 | 6.0 | 0.5 | 1.0 |
| C | 1 : 3 : 6 | 6.0 | 5.0 | 0.5 | 1.0 |
Mortar mixtures
Per cubic meter of mortar (mortar mixture table).
| Class | Proportion | Cement 40 kg bags | Cement 50 kg bags | Sand (cu. m.) |
|---|---|---|---|---|
| A | 1 : 2 | 18.0 | 14.5 | 1.0 |
| B | 1 : 3 | 12.0 | 9.5 | 1.0 |
| C | 1 : 4 | 9.0 | 7.0 | 1.0 |
| D | 1 : 5 | 7.5 | 6.0 | 1.0 |
Hollow-block walls
Per square meter of wall (block wall table). Cement depends on the mortar class (A to D) and the bag size.
| Block (cm) | Size | Blocks / sq. m. | Sand (cu. m.) | A · 40 kg | A · 50 kg | B · 40 kg | B · 50 kg | C · 40 kg | C · 50 kg | D · 40 kg | D · 50 kg |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 10 x 20 x 40 | 4 inch | 12.5 | 0.0435 | 0.792 | 0.638† | 0.522 | 0.41325† | 0.394 | 0.306444† | 0.328 | 0.2624† |
| 12.5 x 20 x 40 | 5 inch | 12.5 | 0.06395 | 1.159 | 0.933639† | 0.77 | 0.609583† | 0.5785 | 0.449944† | 0.4805 | 0.3844† |
| 15 x 20 x 40 | 6 inch | 12.5 | 0.0844 | 1.526 | 1.229278† | 1.018 | 0.805917† | 0.763 | 0.593444† | 0.633 | 0.5064† |
| 20 x 20 x 40 | 8 inch | 12.5 | 0.125 | 2.26 | 1.820556† | 1.5 | 1.1875† | 1.125 | 0.875† | 0.938 | 0.7504† |
Cement plaster
Per square meter, one side (plaster table).
| Thickness | Sand (cu. m.) | A · 40 kg | A · 50 kg | B · 40 kg | B · 50 kg | C · 40 kg | C · 50 kg | D · 40 kg | D · 50 kg |
|---|---|---|---|---|---|---|---|---|---|
| 8 mm | 0.008 | 0.144 | 0.116† | 0.096 | 0.076† | 0.072 | 0.056† | 0.06 | 0.048† |
| 12 mm | 0.012 | 0.216 | 0.174† | 0.144 | 0.114† | 0.108 | 0.084† | 0.09 | 0.072† |
| 16 mm | 0.016 | 0.288 | 0.232† | 0.192 | 0.152† | 0.144 | 0.112† | 0.12 | 0.096† |
| 20 mm | 0.02 | 0.36 | 0.29† | 0.24 | 0.19† | 0.18 | 0.14† | 0.15 | 0.12† |
| 25 mm | 0.025 | 0.45 | 0.3625† | 0.3 | 0.2375† | 0.225 | 0.175† | 0.188 | 0.1504† |
Tile adhesive
Area covered by one bag of regular tile adhesive, by adhesive thickness.
| Thickness | Sq. m. per bag |
|---|---|
| 3 mm | 5.0 |
| 6 mm | 2.6 |
| 10 mm | 1.5 |
Constants
| Constant | Value | Unit | Source |
|---|---|---|---|
Tile adhesive pieces per bag of cement in the tile bedtile_adhesive_per_cement_bag | 2.0 | pieces | Tile adhesive calculation, tile-bed formula |
Cement per cu. m. of sand-cement tile bed (40 kg bags)tile_bed_cement_bags_per_cubic_m_40kg | 12.0 | bags per cu. m. | Tile adhesive calculation, cement formula |
Cement per cu. m. of sand-cement tile bed (50 kg bags)tile_bed_cement_bags_per_cubic_m_50kg | 9.5 † | bags per cu. m. | derived |
Reference tables
Lookup tables that the calculations read row by row.
Quantity of cement, sand and gravel for slab and walls per sq. m. of area
Table 1-3
| Row | Thickness (cm) | Cement A 40 kg | Cement A 50 kg | Cement B 40 kg | Cement B 50 kg | Cement C 40 kg | Cement C 50 kg | Sand (cu. m.) | Gravel (cu. m.) | |
|---|---|---|---|---|---|---|---|---|---|---|
| 5.0 cm | 5.0 | 0.45 | 0.35 | 0.375 | 0.3 | 0.3 | 0.25 | 0.025 | 0.05 | |
| 7.5 cm | 7.5 | 0.675 | 0.525 | 0.563 | 0.45 | 0.45 | 0.375 | 0.0375 | 0.075 | |
| 10.0 cm | 10.0 | 0.9 | 0.7 | 0.75 | 0.6 | 0.6 | 0.5 | 0.05 | 0.1 | |
| 12.5 cm | 12.5 | 1.125 | 0.875 | 0.938 | 0.75 | 0.75 | 0.625 | 0.0625 | 0.125 | |
| 15.0 cm | 15.0 | 1.35 | 1.05 | 1.125 | 0.9 | 0.9 | 0.75 | 0.075 | 0.15 | |
| 17.5 cm | 17.5 | 1.575 | 1.225 | 1.313 | 1.05 | 1.05 | 0.875 | 0.0875 | 0.175 | |
| 20.0 cm | 20.0 | 1.8 | 1.4 | 1.5 | 1.2 | 1.2 | 1.0 | 0.1 | 0.2 | |
| 22.5 cm | 22.5 | 2.025 | 1.575 | 1.688 | 1.35 | 1.35 | 1.125 | 0.1125 | 0.225 | |
| 25.0 cm | 25.0 | 2.25 | 1.75 | 1.875 | 1.5 | 1.5 | 1.25 | 0.125 | 0.25 | |
| 27.5 cm | 27.5 | 2.475 | 1.925 | 2.063 | 1.65 | 1.65 | 1.375 | 0.1375 | 0.275 | |
| 30.0 cm | 30.0 | 2.7 | 2.1 | 2.25 | 1.8 | 1.8 | 1.5 | 0.15 | 0.3 |
Quantity of cement, sand and gravel per meter length of circular column
Table 1-5
| Row | Diameter (cm) | Cement A 40 kg | Cement B 40 kg | Cement A 50 kg | Cement B 50 kg | Sand (cu. m.) | Gravel (cu. m.) | |
|---|---|---|---|---|---|---|---|---|
| 25 cm | 25.0 | 0.442 | 0.368 | 0.344 | 0.294 | 0.025 | 0.05 | † Calculated, not looked up. 50 kg class A: 0.344 (= 0.442 x 0.7778); 50 kg class B: 0.294 (= 0.368 x 0.8000). |
| 30 cm | 30.0 | 0.636 | 0.53 | 0.495 | 0.424 | 0.035 | 0.07 | † Calculated, not looked up. 50 kg class A: 0.495 (= 0.636 x 0.7778); class B: 0.424 (= 0.53 x 0.8000); gravel: 0.07 (= 2 x sand 0.035, as in every other row). |
| 35 cm | 35.0 | 0.866 | 0.722 | 0.673 | 0.577 | 0.048 | 0.096 | |
| 40 cm | 40.0 | 1.131 | 0.942 | 0.88 | 0.754 | 0.063 | 0.126 | |
| 50 cm | 50.0 | 1.767 | 1.473 | 1.374 | 1.178 | 0.098 | 0.196 | |
| 55 cm | 55.0 | 2.138 | 1.782 | 1.663 | 1.425 | 0.119 | 0.238 | |
| 60 cm | 60.0 | 2.545 | 2.121 | 1.979 | 1.696 | 0.141 | 0.282 | |
| 65 cm | 65.0 | 2.986 | 2.488 | 2.323 | 1.991 | 0.166 | 0.332 | |
| 70 cm | 70.0 | 3.464 | 2.886 | 2.694 | 2.309 | 0.192 | 0.384 | |
| 75 cm | 75.0 | 3.976 | 3.313 | 3.093 | 2.651 | 0.221 | 0.442 | |
| 80 cm | 80.0 | 4.524 | 3.77 | 3.519 | 3.016 | 0.251 | 0.502 | |
| 85 cm | 85.0 | 5.107 | 4.256 | 3.972 | 3.405 | 0.284 | 0.568 | |
| 90 cm | 90.0 | 5.726 | 4.771 | 4.453 | 3.817 | 0.318 | 0.636 | |
| 100 cm | 100.0 | 7.069 | 5.89 | 5.498 | 4.712 | 0.393 | 0.786 |
Quantity of cement, sand and gravel per concrete pipe
Table 1-6
| Row | Outer label | Inner label | Outer (cm) | Inner (cm) | Cement A 40 kg | Cement B 40 kg | Sand (cu. m.) | Gravel (cu. m.) | |
|---|---|---|---|---|---|---|---|---|---|
| 21 cm | 21 cm | 15 cm | 21.0 | 15.0 | 0.152 | 0.127 | 0.009 | 0.018 | |
| 26 cm | 26 cm | 20 cm | 26.0 | 20.0 | 0.195 | 0.163 | 0.011 | 0.022 | |
| 33 cm | 33 cm | 25 cm | 33.0 | 25.0 | 0.328 | 0.274 | 0.018 | 0.037 | |
| 39 cm | 39 cm | 30 cm | 39.0 | 30.0 | 0.436 | 0.363 | 0.025 | 0.05 | |
| 50 cm | 50 cm | 40 cm | 50.0 | 40.0 | 0.635 | 0.53 | 0.036 | 0.072 | |
| 60 cm | 60 cm | 50 cm | 60.0 | 50.0 | 0.779 | 0.65 | 0.044 | 0.088 | |
| 78 cm | 78 cm | 60 cm | 78.0 | 60.0 | 1.755 | 1.463 | 0.098 | 0.196 | |
| 90 cm | 90 cm | 70 cm | 90.0 | 70.0 | 2.26 | 1.883 | 0.126 | 0.252 | |
| 100 cm | 100 cm | 80 cm | 100.0 | 80.0 | 2.538 | 2.115 | 0.141 | 0.282 | |
| 110 cm | 110 cm | 90 cm | 110.0 | 90.0 | 2.826 | 2.355 | 0.157 | 0.314 | |
| 120 cm | 120 cm | 100 cm | 120.0 | 100.0 | 3.11 | 2.595 | 0.173 | 0.346 | |
| 144 cm | 144 cm | 120 cm | 144.0 | 120.0 | 4.482 | 3.735 | 0.249 | 0.498 | |
| 174 cm | 174 cm | 150 cm | 174.0 | 150.0 | 5.5 | 4.583 | 0.306 | 0.612 |
Quantity of cement and sand per one hundred blocks
Table 2-3
| Row | Cement A 40 kg | Cement B 40 kg | Cement C 40 kg | Cement D 40 kg | Sand (cu. m.) | |
|---|---|---|---|---|---|---|
| 10 x 20 x 40 | 6.336 | 4.176 | 3.152 | 2.624 | 0.348 | |
| 15 x 20 x 40 | 12.15 | 8.104 | 6.072 | 5.064 | 0.675 | |
| 20 x 20 x 40 | 18.072 | 12.0 | 9.0 | 7.504 | 1.0 |
Quantity of cement, sand and gravel for CHB footing per meter length
Table 2-5
| Row | Cement A 40 kg | Cement B 40 kg | Cement C 40 kg | Sand (cu. m.) | Gravel (cu. m.) | |
|---|---|---|---|---|---|---|
| 10 x 30 | 0.27 | 0.225 | 0.18 | 0.015 | 0.03 | |
| 10 x 35 | 0.315 | 0.263 | 0.21 | 0.018 | 0.035 | |
| 10 x 40 | 0.36 | 0.3 | 0.24 | 0.02 | 0.04 | |
| 10 x 50 | 0.45 | 0.375 | 0.3 | 0.025 | 0.05 | |
| 15 x 40 | 0.54 | 0.45 | 0.36 | 0.03 | 0.06 | |
| 15 x 45 | 0.612 | 0.51 | 0.48 | 0.034 | 0.068 | |
| 15 x 50 | 0.675 | 0.563 | 0.55 | 0.038 | 0.076 | |
| 15 x 60 | 0.81 | 0.675 | 0.54 | 0.045 | 0.09 |
Quantity of reinforcing steel bars in a one-way RC slab (bars per sq. m.)
Table 3-10
| Row | Spacing (cm) | Bars 6 00m | Bars 7 50m | Bars 9 00m | Bars 12 00m | |
|---|---|---|---|---|---|---|
| 10 cm | 10.0 | 3.764 | 2.937 | 2.421 | 1.769 | |
| 12.5 cm | 12.5 | 3.062 | 2.381 | 1.934 | 1.427 | |
| 15 cm | 15.0 | 2.584 | 2.004 | 1.636 | 1.197 | |
| 17.5 cm | 17.5 | 2.232 | 1.726 | 1.407 | 1.033 | |
| 20 cm | 20.0 | 1.98 | 1.528 | 1.258 | 0.914 | |
| 22.5 cm | 22.5 | 1.786 | 1.369 | 1.109 | 0.81 | |
| 25 cm | 25.0 | 1.627 | 1.25 | 1.014 | 0.736 |
Quantity of tie wire on a one-way reinforced concrete slab (kg per sq. m.)
Table 3-11
| Row | Spacing (cm) | kg 6 00m at 0 3 | kg 6 00m at 0 4 | kg 7 50m at 0 3 | kg 7 50m at 0 4 | kg 9 00m at 0 3 | kg 9 00m at 0 4 | kg 12 00m at 0 3 | |
|---|---|---|---|---|---|---|---|---|---|
| 10 cm | 10.0 | 0.474 | 0.632 | 0.462 | 0.616 | 0.46 | 0.614 | 0.448 | |
| 12.5 cm | 12.5 | 0.316 | 0.422 | 0.307 | 0.409 | 0.295 | 0.394 | 0.293 | |
| 15 cm | 15.0 | 0.228 | 0.303 | 0.217 | 0.289 | 0.214 | 0.285 | 0.207 | |
| 17.5 cm | 17.5 | 0.168 | 0.224 | 0.162 | 0.216 | 0.158 | 0.21 | 0.153 | |
| 20 cm | 20.0 | 0.132 | 0.175 | 0.126 | 0.168 | 0.125 | 0.167 | 0.12 | |
| 22.5 cm | 22.5 | 0.11 | 0.147 | 0.102 | 0.135 | 0.099 | 0.132 | 0.095 | |
| 25 cm | 25.0 | 0.089 | 0.118 | 0.086 | 0.114 | 0.081 | 0.108 | 0.077 |
Commercial lengths of rebar (m)
Table REBAR
| Row | Length m | |
|---|---|---|
| 6 m | 6.0 | |
| 7.5 m | 7.5 | |
| 9 m | 9.0 | |
| 10.5 m | 10.5 | |
| 12 m | 12.0 |
Calculations and formulas
Each calculation lists what you enter, then the steps in order. A step marked step is an intermediate figure; result steps are the quantities you get. Quantities are not rounded inside a calculation.
Concrete
Footing — Square or rectangular footings.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
AA | Concrete mix proportion (concrete mixture table). | |
length | Footing length | number | m | ||
width | Footing width | number | m | ||
thickness | Footing thickness | number | m | ||
qty | Quantity of footings | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(length, width, thickness, qty) | Length x width x thickness x number of footings. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Wall footing — Continuous footing under a wall.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
AA | Concrete mix proportion (concrete mixture table). | |
length | Length or perimeter | number | m | ||
width | Width | number | m | ||
thickness | Thickness | number | m | ||
qty | Quantity of wall footings | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(length, width, thickness, qty) | Length x width x thickness x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Footing tie beam — Beam tying the footings together.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
A | Concrete mix proportion (concrete mixture table). | |
length | Beam length | number | m | ||
width | Beam width | number | m | ||
height | Beam height | number | m | ||
qty | Quantity of beams | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(length, width, height, qty) | Length x width x height x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Girder / beam — Main beams.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
AA | Concrete mix proportion (concrete mixture table). | |
length | Beam length | number | m | ||
width | Beam width | number | m | ||
height | Beam height | number | m | ||
qty | Quantity of beams | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(length, width, height, qty) | Length x width x height x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Lintel beam — Beam over doors and windows.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
AA | Concrete mix proportion (concrete mixture table). | |
length | Lintel beam length | number | m | ||
width | Lintel beam width | number | m | ||
height | Lintel beam height | number | m | ||
qty | Quantity of lintel beams | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(length, width, height, qty) | Length x width x height x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Column — Rectangular columns.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
A | Concrete mix proportion (concrete mixture table). | |
length | Column length | number | m | ||
width | Column width | number | m | ||
height | Column height | number | m | ||
qty | Quantity of columns | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(length, width, height, qty) | Length x width x height x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Stiffener column — Small columns that stiffen a wall.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
A | Concrete mix proportion (concrete mixture table). | |
length | Column length | number | m | ||
width | Column width | number | m | ||
height | Column height | number | m | ||
qty | Quantity of columns | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(length, width, height, qty) | Length x width x height x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Slab — Floor or roof slab, by thickness and area.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
AA | Concrete mix proportion (concrete mixture table). | |
thickness_cm | Slab thickness | number | cm | 12.5 | |
area | Slab area | number | sq. m. | ||
qty | Quantity of slabs | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | thickness_cm / 100 * area * qty | Thickness in meters x area x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Reinforced concrete wall — Concrete wall, by thickness and area.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
A | Concrete mix proportion (concrete mixture table). | |
thickness_cm | Wall thickness | number | cm | 30 | |
area | Wall area | number | sq. m. | ||
qty | Quantity of walls | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | thickness_cm / 100 * area * qty | Thickness in meters x area x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Stair landing — Landing slab of a staircase.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
B | Concrete mix proportion (concrete mixture table). | |
thickness_cm | Landing thickness | number | cm | 10 | |
area | Landing area | number | sq. m. | ||
qty | Quantity of landings | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | thickness_cm / 100 * area * qty | Thickness in meters x area x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Stairs — Stair flight with stringer (slab under the steps).
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
A | Concrete mix proportion (concrete mixture table). | |
steps | Number of steps | number | steps | ||
riser | Riser height | number | m | ||
tread | Tread run | number | m | ||
width | Stair width | number | m | ||
stringer | Stringer thickness | number | m | ||
qty | Quantity of stairs | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | (SQRT(riser^2 + tread^2) * steps * stringer * width + 0.5 * riser * tread * width * steps) * qty | Slanted stringer: sloping length of one step x steps x stringer thickness x width. Plus the triangular steps: half x riser x tread x width x steps. All multiplied by the quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Septic tank — Walls plus top and bottom slabs, as volumes you already have.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
AA | Concrete mix proportion (concrete mixture table). | |
walls_volume | Walls volume | number | cu. m. | ||
top_volume | Top slab volume | number | cu. m. | ||
bottom_volume | Bottom slab volume | number | cu. m. | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | walls_volume + top_volume + bottom_volume | Walls + top slab + bottom slab. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Concrete gutter — Gutter, from its cross-section and length.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
C | Concrete mix proportion (concrete mixture table). | |
area | Cross-sectional area | number | sq. m. | ||
length | Length | number | m | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(area, length) | Cross-sectional area x length. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Concrete saddle — Saddle, from its cross-section and thickness.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
AA | Concrete mix proportion (concrete mixture table). | |
area | Cross-sectional area | number | sq. m. | ||
thickness | Saddle thickness | number | m | ||
qty | Quantity | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | PRODUCT(area, thickness, qty) | Cross-sectional area x thickness x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Concrete by volume — You already know the volume; get the materials.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
A | Concrete mix proportion (concrete mixture table). | |
volume | Volume | number | cu. m. | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Slab or wall (area method) — Materials per sq. m. from the slab and wall table.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick one: A, B, C | A | The slab and wall table covers classes A, B and C. | |
thickness | Thickness | pick from table 1-3 |
7.5 cm | ||
area | Area | number | sq. m. | ||
qty | Quantity | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | LOOKUP("1-3", thickness, "thickness_cm") / 100 * area * qty | Thickness in meters (from the slab and wall table) x area x quantity. |
Cementcement | bags · result | LOOKUP("1-3", thickness, "cement_" & mix & "_" & bag & "kg") * area * qty | Bags per sq. m. for the thickness, class and bag size (slab and wall table) x area x quantity. |
Sandsand | cu. m. · result | LOOKUP("1-3", thickness, "sand_cum") * area * qty | Sand per sq. m. (slab and wall table) x area x quantity. |
Gravelgravel | cu. m. · result | LOOKUP("1-3", thickness, "gravel_cum") * area * qty | Gravel per sq. m. (slab and wall table) x area x quantity. |
Circular column — Round column, per meter length (circular column table).
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick one: A, B | A | The circular column table covers classes A and B. | |
diameter | Column diameter | pick from table 1-5 |
60 cm | ||
height | Column height | number | m | ||
qty | Quantity of columns | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | 0.7854 * (LOOKUP("1-5", diameter, "diameter_cm") / 100) ^ 2 * height * qty | 0.7854 x diameter squared (in meters) x height x quantity. |
Cementcement | bags · result | LOOKUP("1-5", diameter, "cement_" & mix & "_" & bag & "kg") * height * qty | Bags per meter of column (circular column table) x height x quantity. |
Sandsand | cu. m. · result | LOOKUP("1-5", diameter, "sand_cum") * height * qty | Sand per meter (circular column table) x height x quantity. |
Gravelgravel | cu. m. · result | LOOKUP("1-5", diameter, "gravel_cum") * height * qty | Gravel per meter (circular column table) x height x quantity. |
Concrete pipe — Pipe wall volume from outer and inner diameter (pipe table).
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mix | Mixture class | pick from table est_concrete_mix |
A | Concrete mix proportion (concrete mixture table). | |
outer | Outer diameter | pick from table 1-6 |
110 cm | ||
inner | Inner diameter | pick from table 1-6 |
90 cm | ||
qty | Quantity of pipes | number | pcs | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total volumevolume | cu. m. · step | (0.7854 * (LOOKUP("1-6", outer, "outer_cm") / 100) ^ 2 - 0.7854 * (LOOKUPBY("1-6", "inner_label", inner, "inner_cm") / 100) ^ 2) * qty | Area of the outer circle minus the inner circle (0.7854 x diameter squared, in meters) x quantity. |
Cementcement | bags · result | volume * LOOKUP("est_concrete_mix", mix, "cement_" & bag & "kg") | Volume multiplied by the bags of cement per cu. m. for the chosen mix class and bag size. |
Sandsand | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "sand_cum") | Volume multiplied by the sand per cu. m. for the mix class. |
Gravelgravel | cu. m. · result | volume * LOOKUP("est_concrete_mix", mix, "gravel_cum") | Volume multiplied by the gravel per cu. m. for the mix class. |
Masonry
Hollow-block wall — Blocks and mortar for a wall (block wall table).
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mortar | Mortar mixture class | pick one: A, B, C, D | C | Mortar proportion (mortar mixture table). | |
chb | Block size (cm) | pick from table est_chb_size |
10 x 20 x 40 | ||
length | Wall length | number | m | ||
height | Wall height | number | m | ||
deductions | Deductions to wall area | number | sq. m. | 0 | Doors and windows. |
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total wall areaarea | sq. m. · step | length * height - deductions | Length x height, minus the area of doors and windows. |
Cementcement | bags · result | area * LOOKUP("est_chb_size", chb, "cement_" & mortar & "_" & bag & "kg") | Wall area x bags of cement per sq. m. for the block size, mortar class and bag size (block wall table). |
Sandsand | cu. m. · result | area * LOOKUP("est_chb_size", chb, "sand_cum_per_sqm") | Wall area x sand per sq. m. (block wall table). |
Hollow blocksblocks | pcs · result | area * LOOKUP("est_chb_size", chb, "pieces_per_sqm") | Wall area x blocks per sq. m. (12.5). Not rounded; round up when buying. |
Cement plaster — Plaster over a wall (plaster table).
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
mortar | Mortar mixture class | pick one: A, B, C, D | C | Mortar proportion (mortar mixture table). | |
thickness | Plaster thickness | pick from table est_plaster_thickness |
12 mm | ||
sides | Sides to plaster | number | side/s | 1 | 1 or 2. |
length | Surface length | number | m | ||
height | Surface height | number | m | ||
deductions | Deductions to surface area | number | sq. m. | 0 | |
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total surface areaarea | sq. m. · step | sides * length * height - deductions | Sides x length x height, minus deductions. |
Cementcement | bags · result | area * LOOKUP("est_plaster_thickness", thickness, "cement_" & mortar & "_" & bag & "kg") | Area x bags of cement per sq. m. for the thickness, mortar class and bag size (plaster table). |
Sandsand | cu. m. · result | area * LOOKUP("est_plaster_thickness", thickness, "sand_cum_per_sqm") | Area x sand per sq. m. (plaster table). |
Tiling
Tile adhesive — Adhesive, or cement and sand, for floor and wall tiles.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
floor_area | Floor area | number | sq. m. | ||
wall_area | Wall area | number | sq. m. | 0 | |
tile_cm | Tile size (one side) | pick one: 30, 40, 50, 60 | cm | 60 | Square tiles. |
thickness | Adhesive thickness | pick from table est_tile_coverage |
10 mm | ||
bag | Cement bag size | pick one: 40, 50 | kg | 40 | Chosen in the app. |
Steps
| Step | Gives | Formula | In plain words |
|---|---|---|---|
Total areatotal_area | sq. m. · step | floor_area + wall_area | Floor area + wall area. |
Number of tilestiles | pcs · result | ROUNDUP(total_area / ((tile_cm / 100) * (tile_cm / 100)), 0) | Total area divided by the area of one tile, rounded up. |
Tile adhesive (bagged)adhesive | bags · result | total_area / LOOKUP("est_tile_coverage", thickness, "sqm_per_bag") | Total area divided by the area one bag covers at the chosen thickness. |
Cement (sand-cement alternative)bed_cement | bags · result | total_area * (LOOKUP("est_tile_coverage", thickness, "thickness_mm") / 1000) * CONSTANT("tile_bed_cement_bags_per_cubic_m_" & bag & "kg") | Total area x thickness in meters x bags of cement per cu. m. of tile bed. |
Sand (sand-cement alternative)bed_sand | cu. m. · result | total_area * (LOOKUP("est_tile_coverage", thickness, "thickness_mm") / 1000) | Total area x thickness in meters. |
Tile adhesive (with the cement alternative)adhesive_pcs | pcs · result | bed_cement * CONSTANT("tile_adhesive_per_cement_bag") | Bags of cement x tile adhesive pieces per bag of cement. |
Steel
Rebar cutting list — Which commercial rebar length wastes the least for a cut length.
You enter
| Name | Label | Kind | Unit | Default | Notes |
|---|---|---|---|---|---|
cut_length | Cut length | number | m | 1.4 |
Steps
The app tries every commercial rebar length, counts how many pieces of the cut length fit in each, and picks the length that leaves the least waste.
Formula language
- Numbers, text in "quotes", names of inputs and earlier steps.
- Operators:
+ - * / ^,&joins text, comparisons= <> < > <= >=. PRODUCT,SUM,MIN,MAX,ABS,SQRT,COUNT,IF,ROUNDUP,ROUNDDOWN.LOOKUP(table, row, column)reads a value from a table row.LOOKUPBY(table, column, value, result)finds the row by a column value instead.CONSTANT(name)reads a constant.bagis the chosen cement bag size (40 or 50).
Worked examples
Each example has a known-good answer. The BIY app checks every one of them against the current numbers; if any disagree, the app flags the estimate instead of showing it.
| Calculation | Example | Inputs | Expected |
|---|---|---|---|
| concrete_volume | Class A, 3.768 cu. m. (40 kg bags) | mix=A, volume=3.768 | cement=33.912, sand=1.884, gravel=3.768 |
| concrete_volume | Class A, 3.768 cu. m. (50 kg bags) | mix=A, volume=3.768 | cement=26.376, sand=1.884, gravel=3.768 |
| footing | Class A, 1.5 x 1.2 x 0.4 m, 12 pcs (40 kg bags) | mix=A, length=1.5, width=1.2, thickness=0.4, qty=12 | volume=8.64, cement=77.76, sand=4.32, gravel=8.64 |
| footing | Class A, 1.5 x 1.2 x 0.4 m, 12 pcs (50 kg bags) | mix=A, length=1.5, width=1.2, thickness=0.4, qty=12 | volume=8.64, cement=60.48, sand=4.32, gravel=8.64 |
| slab_wall_by_area | Class B, 7.5 cm, 23 sq. m. (40 kg bags) | mix=B, thickness=7.5 cm, area=23, qty=1 | volume=1.725, cement=12.949, sand=0.8625, gravel=1.725 |
| slab_wall_by_area | Class B, 7.5 cm, 23 sq. m. (50 kg bags) | mix=B, thickness=7.5 cm, area=23, qty=1 | volume=1.725, cement=10.35, sand=0.8625, gravel=1.725 |
| concrete_stairs | Class A, 7 steps, 0.2 / 0.3 / 1.2 / 0.15 m (40 kg bags) | mix=A, steps=7, riser=0.2, tread=0.3, width=1.2, stringer=0.15, qty=1 | volume=0.7063, cement=6.3567, sand=0.3531, gravel=0.7063 |
| concrete_stairs | Class A, 7 steps, 0.2 / 0.3 / 1.2 / 0.15 m (50 kg bags) | mix=A, steps=7, riser=0.2, tread=0.3, width=1.2, stringer=0.15, qty=1 | volume=0.7063, cement=4.9441, sand=0.3531, gravel=0.7063 |
| circular_column | Class A, 60 cm, 2 m high, 3 pcs (40 kg bags) | mix=A, diameter=60 cm, height=2, qty=3 | volume=1.6965, cement=15.27, sand=0.846, gravel=1.692 |
| circular_column | Class A, 60 cm, 2 m high, 3 pcs (50 kg bags) | mix=A, diameter=60 cm, height=2, qty=3 | volume=1.6965, cement=11.874, sand=0.846, gravel=1.692 |
| concrete_pipe | Class A, 110 / 90 cm, 1 pc (40 kg bags) | mix=A, outer=110 cm, inner=90 cm, qty=1 | volume=0.3142, cement=2.8274, sand=0.1571, gravel=0.3142 |
| concrete_pipe | Class A, 110 / 90 cm, 1 pc (50 kg bags) | mix=A, outer=110 cm, inner=90 cm, qty=1 | volume=0.3142, cement=2.1991, sand=0.1571, gravel=0.3142 |
| tile_adhesive | 32 sq. m. floor + 9 sq. m. wall, 60 x 60, 10 mm (40 kg bags) | floor_area=32, wall_area=9, tile_cm=60, thickness=10 mm | total_area=41, tiles=114, adhesive=27.3333, bed_cement=4.92, bed_sand=0.41, adhesive_pcs=9.84 |
| wall_footing | Class AA, 24 x 0.4 x 0.2 m, 1 pc (40 kg) | mix=AA, length=24, width=0.4, thickness=0.2, qty=1 | volume=1.92, cement=23.04, sand=0.96, gravel=1.92 |
| footing_tie_beam | Class A, 3 x 0.2 x 0.3 m, 8 pcs (40 kg) | mix=A, length=3, width=0.2, height=0.3, qty=8 | volume=1.44, cement=12.96, sand=0.72, gravel=1.44 |
| girder_beam | Class AA, 4 x 0.25 x 0.4 m, 6 pcs (40 kg) | mix=AA, length=4, width=0.25, height=0.4, qty=6 | volume=2.4, cement=28.8, sand=1.2, gravel=2.4 |
| lintel_beam | Class AA, 2 x 0.15 x 0.2 m, 10 pcs (40 kg) | mix=AA, length=2, width=0.15, height=0.2, qty=10 | volume=0.6, cement=7.2, sand=0.3, gravel=0.6 |
| concrete_column | Class A, 0.3 x 0.3 x 3 m, 8 pcs (40 kg) | mix=A, length=0.3, width=0.3, height=3, qty=8 | volume=2.16, cement=19.44, sand=1.08, gravel=2.16 |
| stiffener_column | Class A, 0.15 x 0.15 x 2.8 m, 12 pcs (40 kg) | mix=A, length=0.15, width=0.15, height=2.8, qty=12 | volume=0.756, cement=6.804, sand=0.378, gravel=0.756 |
| concrete_slab | Class AA, 12.5 cm, 30 sq. m. (40 kg) | mix=AA, thickness_cm=12.5, area=30, qty=1 | volume=3.75, cement=45.0, sand=1.875, gravel=3.75 |
| concrete_wall | Class A, 30 cm, 12 sq. m. (40 kg) | mix=A, thickness_cm=30, area=12, qty=1 | volume=3.6, cement=32.4, sand=1.8, gravel=3.6 |
| stair_landing | Class B, 10 cm, 4 sq. m. (40 kg) | mix=B, thickness_cm=10, area=4, qty=2 | volume=0.8, cement=6.0, sand=0.4, gravel=0.8 |
| septic_tank | Class AA, 6 + 2 + 2 cu. m. (40 kg) | mix=AA, walls_volume=6, top_volume=2, bottom_volume=2 | volume=10, cement=120.0, sand=5.0, gravel=10 |
| concrete_gutter | Class C, 0.04 sq. m. x 12 m (40 kg) | mix=C, area=0.04, length=12 | volume=0.48, cement=2.88, sand=0.24, gravel=0.48 |
| concrete_saddle | Class AA, 0.5 sq. m. x 0.1 m, 3 pcs (40 kg) | mix=AA, area=0.5, thickness=0.1, qty=3 | volume=0.15, cement=1.8, sand=0.075, gravel=0.15 |
| wall_footing | Class AA, 24 x 0.4 x 0.2 m, 1 pc (50 kg) | mix=AA, length=24, width=0.4, thickness=0.2, qty=1 | volume=1.92, cement=18.24, sand=0.96, gravel=1.92 |
| footing_tie_beam | Class A, 3 x 0.2 x 0.3 m, 8 pcs (50 kg) | mix=A, length=3, width=0.2, height=0.3, qty=8 | volume=1.44, cement=10.08, sand=0.72, gravel=1.44 |
| girder_beam | Class AA, 4 x 0.25 x 0.4 m, 6 pcs (50 kg) | mix=AA, length=4, width=0.25, height=0.4, qty=6 | volume=2.4, cement=22.8, sand=1.2, gravel=2.4 |
| lintel_beam | Class AA, 2 x 0.15 x 0.2 m, 10 pcs (50 kg) | mix=AA, length=2, width=0.15, height=0.2, qty=10 | volume=0.6, cement=5.7, sand=0.3, gravel=0.6 |
| concrete_column | Class A, 0.3 x 0.3 x 3 m, 8 pcs (50 kg) | mix=A, length=0.3, width=0.3, height=3, qty=8 | volume=2.16, cement=15.12, sand=1.08, gravel=2.16 |
| stiffener_column | Class A, 0.15 x 0.15 x 2.8 m, 12 pcs (50 kg) | mix=A, length=0.15, width=0.15, height=2.8, qty=12 | volume=0.756, cement=5.292, sand=0.378, gravel=0.756 |
| concrete_slab | Class AA, 12.5 cm, 30 sq. m. (50 kg) | mix=AA, thickness_cm=12.5, area=30, qty=1 | volume=3.75, cement=35.625, sand=1.875, gravel=3.75 |
| concrete_wall | Class A, 30 cm, 12 sq. m. (50 kg) | mix=A, thickness_cm=30, area=12, qty=1 | volume=3.6, cement=25.2, sand=1.8, gravel=3.6 |
| stair_landing | Class B, 10 cm, 4 sq. m. (50 kg) | mix=B, thickness_cm=10, area=4, qty=2 | volume=0.8, cement=4.8, sand=0.4, gravel=0.8 |
| septic_tank | Class AA, 6 + 2 + 2 cu. m. (50 kg) | mix=AA, walls_volume=6, top_volume=2, bottom_volume=2 | volume=10, cement=95.0, sand=5.0, gravel=10 |
| concrete_gutter | Class C, 0.04 sq. m. x 12 m (50 kg) | mix=C, area=0.04, length=12 | volume=0.48, cement=2.4, sand=0.24, gravel=0.48 |
| concrete_saddle | Class AA, 0.5 sq. m. x 0.1 m, 3 pcs (50 kg) | mix=AA, area=0.5, thickness=0.1, qty=3 | volume=0.15, cement=1.425, sand=0.075, gravel=0.15 |
| chb_wall | 4 inch block, class C, 10 x 2.4 m, 3 sq. m. deducted (40 kg) | mortar=C, chb=10 x 20 x 40, length=10, height=2.4, deductions=3 | area=21.0, cement=8.274, sand=0.9135, blocks=262.5 |
| chb_wall | 6 inch block, class B, 8 x 3 m (40 kg) | mortar=B, chb=15 x 20 x 40, length=8, height=3, deductions=0 | area=24, cement=24.432, sand=2.0256, blocks=300.0 |
| chb_wall | 4 inch block, class C, 10 x 2.4 m, 3 sq. m. deducted (50 kg) | mortar=C, chb=10 x 20 x 40, length=10, height=2.4, deductions=3 | area=21.0, cement=6.4353, sand=0.9135, blocks=262.5 |
| chb_wall | 6 inch block, class B, 8 x 3 m (50 kg) | mortar=B, chb=15 x 20 x 40, length=8, height=3, deductions=0 | area=24, cement=19.342, sand=2.0256, blocks=300.0 |
| cement_plaster | 12 mm, class C, 2 sides, 10 x 2.4 m (40 kg) | mortar=C, thickness=12 mm, sides=2, length=10, height=2.4, deductions=3 | area=45.0, cement=4.86, sand=0.54 |
| cement_plaster | 25 mm, class A, 1 side, 5 x 3 m (40 kg) | mortar=A, thickness=25 mm, sides=1, length=5, height=3, deductions=0 | area=15, cement=6.75, sand=0.375 |
| cement_plaster | 12 mm, class C, 2 sides, 10 x 2.4 m (50 kg) | mortar=C, thickness=12 mm, sides=2, length=10, height=2.4, deductions=3 | area=45.0, cement=3.78, sand=0.54 |
| cement_plaster | 25 mm, class A, 1 side, 5 x 3 m (50 kg) | mortar=A, thickness=25 mm, sides=1, length=5, height=3, deductions=0 | area=15, cement=5.4375, sand=0.375 |
| tile_adhesive | 32 + 9 sq. m., 60 x 60, 10 mm (50 kg bags) | floor_area=32, wall_area=9, tile_cm=60, thickness=10 mm | total_area=41, tiles=114, adhesive=27.3333, bed_cement=3.895, bed_sand=0.41, adhesive_pcs=7.79 |
| rebar_cut | Cut length 1.4 m | cut_length=1.4 | best_length_m=6.0, best_waste_m=0.4, best_pieces=4 |
Materials
The quantities above are in these units. Pricing and product links are not part of the calculation.
| Material | Unit |
|---|---|
| Cement | bags |
| Concrete hollow block 4" | pcs |
| Concrete hollow block 5" | pcs |
| Concrete hollow block 6" | pcs |
| Concrete hollow block 8" | pcs |
| Gravel | cu. m. |
| Reinforcing bar | pcs |
| Sand | cu. m. |
| Tile adhesive (bagged) | bags |
| Tile adhesive (tile-bed mix) | pcs |
| Tiles | pcs |
Section 2 · Workshop
The Workshop is for things you build yourself: a shelf, a cabinet, a table, a gate. It works out the parts, how to cut them from the plywood or boards we sell, and the other supplies the job needs. These formulas are separate from the Estimator's formulas for the house, which come from BIY's own workbook. Everything here is an estimate for budgeting and shopping. Check the final quantities against your own plan before you buy.
Supply formulas
Every number below is read directly from our store data, the same data the app uses, so this table and the app cannot disagree. For hinges, handles, glue, finish, wall fixings and nails we use the rules of the open-source project WoodworkingShop by Ryair (MIT licence), rewritten for the app. Where a rule is ours, the source column says "BIY rule". A supply can use the result of the one before it by its key, and a supply that does not apply counts as 0.
| Supply | Unit | Applies when | How many | In plain words | Searched in our store as | Source |
|---|---|---|---|---|---|---|
| Doors and hinges | ||||||
Cabinet hingehinge |
pcs | doors>0 |
doors*IF(door_height<=600,2,IF(door_height<=1200,3,IF(door_height<=1800,4,IF(door_height<=2200,5,6)))) |
Hinges per door by the height of the door: 2 up to 600 mm, 3 up to 1,200, 4 up to 1,800, 5 up to 2,200, otherwise 6. | concealed hinge 35mm or: cabinet hinge, hinge |
WoodworkingShop src/engine/geometry/dimensions.ts (computeHingesPerDoor); WoodworkingShop src/engine/hardware/hardware.ts |
Hinge mounting platehinge_plate |
pcs | doors>0 |
hinge |
One plate for each hinge. | hinge mounting plate or: hinge plate |
WoodworkingShop src/engine/hardware/hardware.ts |
Door handledoor_handle |
pcs | doors>0 |
doors |
One handle for each door. | cabinet handle or: pull handle, cabinet knob |
WoodworkingShop src/engine/hardware/hardware.ts |
Door bumper paddoor_bumper |
pcs | doors>0 |
doors*CONSTANT("bumper_pads_per_door") |
Two pads for each door. | bumper pad or: rubber bumper, furniture glide |
WoodworkingShop src/engine/hardware/hardware.ts |
| Drawers | ||||||
Drawer slide, pairdrawer_slide |
pairs | drawers>0 |
drawers |
One pair for each drawer; the longest standard slide that fits the depth minus 50 mm. | drawer slide or: drawer guide |
WoodworkingShop src/engine/hardware/hardware.ts |
Drawer handledrawer_handle |
pcs | drawers>0 |
drawers |
One handle for each drawer. | cabinet handle or: pull handle, cabinet knob |
WoodworkingShop src/engine/hardware/hardware.ts |
| Screws and nails | ||||||
Wood screwwood_screw |
pcs | 1 |
joints*(CONSTANT("assembly_screws_per_join")+CONSTANT("camlock_screws_per_join"))+CONSTANT("base_screws")+IF(height>CONSTANT("tall_height_mm"),CONSTANT("tall_extra_screws"),0) |
The repo's counts: 12 assembly screws and 4 in place of cam locks for each panel join, 8 base screws, and 4 more for a unit taller than 1,200 mm. Screw length = thickness of the piece fixed + 25 mm (BIY rule). | wood screw or: screw |
WoodworkingShop src/engine/hardware/hardware.ts (assembly screws, confirmat screws and cam locks, converted to wood screws) |
Back panel nailback_nail |
pcs | has_back>0 |
ROUNDUP(back_perimeter_mm/CONSTANT("back_nail_spacing_mm"),0) |
One nail every 150 mm around the edge of the back panel. | common nail 1 in or: wire nail |
WoodworkingShop src/engine/hardware/hardware.ts |
| Wall fixing | ||||||
Wall bracketwall_bracket |
pcs | height>CONSTANT("tall_height_mm") |
IF(width>=CONSTANT("wall_bracket_wide_width_mm"),4,2) |
4 brackets for a unit 800 mm wide or more, otherwise 2. Used when the unit is taller than 1,200 mm. | angle bracket or: L bracket, corner brace, shelf bracket |
WoodworkingShop src/engine/hardware/hardware.ts (L-brackets); BIY rule for when it applies |
Wall plugwall_plug |
pcs | IF(height>CONSTANT("tall_height_mm"),1,IF(wall_run_mm>0,1,0)) |
IF(height>CONSTANT("tall_height_mm"),2*wall_bracket,0)+IF(wall_run_mm>0,ROUNDUP(wall_run_mm/CONSTANT("wall_fixing_spacing_mm"),0)+1,0) |
2 plugs for each bracket; for a cleat or rack, one about every 300 mm along the wall plus one. | wall plug 8mm or: wall plug, plastic anchor, tox |
WoodworkingShop src/engine/hardware/hardware.ts (wall screw + dowel); BIY rule for cleats and racks |
Wall screwwall_screw |
pcs | IF(wall_plug>0,1,0) |
wall_plug |
One wall screw for each wall plug. | wood screw 3 in or: screw |
WoodworkingShop src/engine/hardware/hardware.ts (wall screw + dowel) |
| Cabinet parts | ||||||
Shelf pinshelf_pin |
pcs | adjustable_shelves>0 |
adjustable_shelves*CONSTANT("shelf_pins_per_shelf") |
4 pins for each adjustable shelf. | shelf support pin 5mm or: shelf pin |
WoodworkingShop src/engine/hardware/hardware.ts |
Leveller footleveller_foot |
pcs | floor_standing>0 |
CONSTANT("leveller_feet") |
Four feet for a cabinet standing on the floor. | adjustable furniture leg or: leveller, plinth foot |
WoodworkingShop src/engine/hardware/hardware.ts |
Corner bracecorner_brace |
pcs | is_carcass>0 |
CONSTANT("corner_braces") |
Four braces for a box of panels. | corner brace or: flat corner brace |
WoodworkingShop src/engine/hardware/hardware.ts |
Edge bandingedge_banding |
m | edge_run_m>0 |
edge_run_m |
The visible edge: twice the width plus the height. | PVC edging or: edge banding |
WoodworkingShop src/engine/hardware/hardware.ts |
Hanging railhanging_rail |
pcs | has_hanging_rail>0 |
has_hanging_rail |
A wardrobe has one hanging rail. | closet rod or: hanging rail, clothes rod |
BIY rule |
| Gate | ||||||
Gate hingegate_hinge |
pcs | is_gate>0 |
3 |
Three hinges on the hinge side of a gate. | bearing hinge 4 in or: gate hinge, heavy hinge |
BIY rule |
Gate latchgate_latch |
pcs | is_gate>0 |
1 |
One latch. | barrel bolt or: gate latch, tower bolt |
BIY rule |
| Glue, finish and sanding | ||||||
Wood gluewood_glue |
bottles | 1 |
MAX(1,ROUNDUP(glue_area_mm2/1000000/CONSTANT("glue_pva_spread_m2_per_l")*1000*CONSTANT("glue_waste_factor")/CONSTANT("glue_bottle_ml"),0)) |
Glued area / 180 m2 per litre, plus 15% for waste, in 237 mL bottles; at least one bottle, as in the repo's list. | wood glue or: carpenter glue, pva glue |
WoodworkingShop src/engine/calculators/glue-coverage.ts; WoodworkingShop src/engine/hardware/hardware.ts |
Paintfinish_paint |
litres | 1 |
finish_area_m2*CONSTANT("finish_coats_paint")/CONSTANT("finish_coverage_paint_m2_per_l") |
Area x 2 coats / 12 m2 per litre. | enamel paint or: paint, boysen, enamel |
WoodworkingShop src/engine/calculators/finish-calculator.ts |
Sandpapersandpaper |
sheets | 1 |
CONSTANT("sandpaper_sheets") |
The repo lists one assorted pack; BIY uses 3 sheets, one of each grit. | sandpaper or: sanding paper |
WoodworkingShop src/engine/hardware/hardware.ts; BIY rule for the count |
| Boards | ||||||
Sheet boardsheet_board |
sheets | sheets>0 |
sheets |
One 4 x 8 ft sheet each, in the thickness picked on the Measure tab. Ordinary plywood comes first; marine plywood, plyboard and laminated MDF of the same thickness are offered under Swap. | plywood ordinary or: plywood marine, plyboard, mdf laminated, laminated mdf |
BIY rule |
| Lumber | ||||||
Lumber 1" x 2" x 8 ftlumber_1x2_8 |
pcs | boards_1x2_8>0 |
boards_1x2_8 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 1x2x8 or: coco lumber 1x2x8, pine wood 1x2x8 |
BIY rule |
Lumber 1" x 2" x 10 ftlumber_1x2_10 |
pcs | boards_1x2_10>0 |
boards_1x2_10 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 1x2x10 or: coco lumber 1x2x10, pine wood 1x2x10 |
BIY rule |
Lumber 1" x 2" x 12 ftlumber_1x2_12 |
pcs | boards_1x2_12>0 |
boards_1x2_12 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 1x2x12 or: coco lumber 1x2x12, pine wood 1x2x12 |
BIY rule |
Lumber 2" x 2" x 8 ftlumber_2x2_8 |
pcs | boards_2x2_8>0 |
boards_2x2_8 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x2x8 or: coco lumber 2x2x8, pine wood 2x2x8 |
BIY rule |
Lumber 2" x 2" x 10 ftlumber_2x2_10 |
pcs | boards_2x2_10>0 |
boards_2x2_10 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x2x10 or: coco lumber 2x2x10, pine wood 2x2x10 |
BIY rule |
Lumber 2" x 2" x 12 ftlumber_2x2_12 |
pcs | boards_2x2_12>0 |
boards_2x2_12 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x2x12 or: coco lumber 2x2x12, pine wood 2x2x12 |
BIY rule |
Lumber 2" x 3" x 8 ftlumber_2x3_8 |
pcs | boards_2x3_8>0 |
boards_2x3_8 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x3x8 or: coco lumber 2x3x8, pine wood 2x3x8 |
BIY rule |
Lumber 2" x 3" x 10 ftlumber_2x3_10 |
pcs | boards_2x3_10>0 |
boards_2x3_10 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x3x10 or: coco lumber 2x3x10, pine wood 2x3x10 |
BIY rule |
Lumber 2" x 3" x 12 ftlumber_2x3_12 |
pcs | boards_2x3_12>0 |
boards_2x3_12 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x3x12 or: coco lumber 2x3x12, pine wood 2x3x12 |
BIY rule |
Lumber 2" x 4" x 8 ftlumber_2x4_8 |
pcs | boards_2x4_8>0 |
boards_2x4_8 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x4x8 or: coco lumber 2x4x8, pine wood 2x4x8 |
BIY rule |
Lumber 2" x 4" x 10 ftlumber_2x4_10 |
pcs | boards_2x4_10>0 |
boards_2x4_10 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x4x10 or: coco lumber 2x4x10, pine wood 2x4x10 |
BIY rule |
Lumber 2" x 4" x 12 ftlumber_2x4_12 |
pcs | boards_2x4_12>0 |
boards_2x4_12 |
Boards for the frame, from the cutting plan: pine wood or coco lumber, whichever the store has at the best price. | lumber 2x4x12 or: coco lumber 2x4x12, pine wood 2x4x12 |
BIY rule |
Fixed numbers
| Number | Value | Unit | Source |
|---|---|---|---|
Assembly screws per panel joinassembly_screws_per_join |
12.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
Back panel nail spacingback_nail_spacing_mm |
150.0 | mm | WoodworkingShop src/engine/hardware/hardware.ts |
Base screws for a carcassbase_screws |
8.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
Door bumper pads per doorbumper_pads_per_door |
2.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
Screws per panel join in place of cam lockscamlock_screws_per_join |
4.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
Corner braces per cabinetcorner_braces |
4.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
Edge banding roll lengthedge_roll_m |
50.0 | m | WoodworkingShop src/engine/hardware/hardware.ts |
Oil coatsfinish_coats_oil |
2.0 | coats | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Paint coatsfinish_coats_paint |
2.0 | coats | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Primer coatsfinish_coats_primer |
1.0 | coats | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Stain coatsfinish_coats_stain |
2.0 | coats | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Varnish coatsfinish_coats_varnish |
3.0 | coats | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Oil coveragefinish_coverage_oil_m2_per_l |
12.0 | m2 per litre per coat | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Paint coveragefinish_coverage_paint_m2_per_l |
12.0 | m2 per litre per coat | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Primer coveragefinish_coverage_primer_m2_per_l |
8.0 | m2 per litre per coat | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Stain coveragefinish_coverage_stain_m2_per_l |
10.0 | m2 per litre per coat | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Varnish coveragefinish_coverage_varnish_m2_per_l |
6.0 | m2 per litre per coat | WoodworkingShop src/engine/calculators/finish-calculator.ts |
Wood glue bottleglue_bottle_ml |
237.0 | mL | BIY rule |
PVA glue spread rateglue_pva_spread_m2_per_l |
180.0 | m2 per litre | WoodworkingShop src/engine/calculators/glue-coverage.ts |
Glue waste factorglue_waste_factor |
1.15 | x | WoodworkingShop src/engine/calculators/glue-coverage.ts |
Leveller feet per cabinetleveller_feet |
4.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
Sandpaper sheets per projectsandpaper_sheets |
3.0 | sheets | BIY rule |
A screw must go this far into the second piecescrew_penetration_mm |
25.0 | mm | BIY rule |
Shelf pins per adjustable shelfshelf_pins_per_shelf |
4.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
Extra screws for a tall unittall_extra_screws |
4.0 | pcs | WoodworkingShop src/engine/hardware/hardware.ts |
A unit taller than this is fixed to the walltall_height_mm |
1200.0 | mm | WoodworkingShop src/engine/hardware/hardware.ts |
A unit this wide or wider takes 4 wall bracketswall_bracket_wide_width_mm |
800.0 | mm | WoodworkingShop src/engine/hardware/hardware.ts |
A wall plug about everywall_fixing_spacing_mm |
300.0 | mm | BIY rule |
Values the app gives to the formulas
The app works these out from the sizes you type and the design you pick, then runs the formulas above on them.
| Value | Unit | What it is |
|---|---|---|
Adjustable shelvesadjustable_shelves |
pcs | 0: the designs use fixed shelves. |
Back panel edge lengthback_perimeter_mm |
mm | Twice height plus width; 0 without a back. |
Boards 1x2 x 10 ftboards_1x2_10 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 1x2 x 12 ftboards_1x2_12 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 1x2 x 8 ftboards_1x2_8 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x2 x 10 ftboards_2x2_10 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x2 x 12 ftboards_2x2_12 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x2 x 8 ftboards_2x2_8 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x3 x 10 ftboards_2x3_10 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x3 x 12 ftboards_2x3_12 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x3 x 8 ftboards_2x3_8 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x4 x 10 ftboards_2x4_10 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x4 x 12 ftboards_2x4_12 |
pcs | The boards of this section and length the cutting plan needs. |
Boards 2x4 x 8 ftboards_2x4_8 |
pcs | The boards of this section and length the cutting plan needs. |
Depthdepth |
mm | The depth typed on the Measure tab. |
Door heightdoor_height |
mm | 0 when there are no doors. |
Doorsdoors |
pcs | One door under 600 mm wide, otherwise two; none for open designs. |
Drawersdrawers |
pcs | None of the current designs has drawers. |
Visible edge lengthedge_run_m |
m | The repo's visible carcass edge: 2 x (width + height). |
Area to finishfinish_area_m2 |
m2 | Both faces and the edges of every piece (the repo's method). |
Thickness of the piece fixedfix_thickness |
mm | The plywood thickness, or 50 for lumber. |
Stands on the floorfloor_standing |
0 or 1 | |
Glued areaglue_area_mm2 |
mm2 | The faces that meet at every joint. |
Has a back panelhas_back |
0 or 1 | |
Has a hanging railhas_hanging_rail |
0 or 1 | |
Heightheight |
mm | The height typed on the Measure tab. |
Is a box of panelsis_carcass |
0 or 1 | |
Is a gateis_gate |
0 or 1 | |
Panel joinsjoints |
pcs | The repo's count: 4 + shelves for a cabinet; the number of frame joints for lumber designs. |
Sheetssheets |
pcs | The sheets of plywood, plyboard or MDF the cutting plan needs. |
Shelvesshelves |
pcs | The shelves (or the count the design asks for). |
Plywood thicknessthickness |
mm | The plywood thickness picked. |
Length fixed along a wallwall_run_mm |
mm | The width of a cleat or rack; 0 for other designs. |
Widthwidth |
mm | The width typed on the Measure tab. |
What BIY adds
- Cutting plans. Plywood parts are placed on 1,220 × 2,440 mm sheets with a 4 mm saw cut between them. "Straight cuts" runs every cut from edge to edge; "Save more material" packs the pieces tighter and is used only when it saves a sheet or leaves a clearly bigger offcut. Lumber parts are cut from the 8, 10 and 12 ft boards we sell, longest first, choosing the board length that wastes least.
- Shelf and table-top sag. The standard beam formula, 5 × load × span⁴ ÷ (384 × stiffness × section stiffness), checked against span ÷ 360. We use a plywood stiffness of 6,500 N/mm², a little lower than the 8,300 N/mm² WoodworkingShop uses, so the warnings lean cautious. Loads: 15 kg for every metre of a book shelf, 25 kg for every metre of a desk top. These are still set in the app, not in the table above.
- Sizes of parts. The sizes of the sides, tops, shelves, doors, aprons, rails and pickets are our own design for each project.
How a supply is matched to what we sell
The formulas give an amount and, for screws, plugs, hinges and slides, a size. The app then searches our store with the words in the "Searched in our store as" column, the same search you use in the app. Every variant that comes back is scored: how many of the words its title, type and tags have, whether the size written in its title fits (a screw must be long enough, a plug the right width), and whether it is sold by the piece or in a pack with a count. A product with a word it must not have, such as a metal screw for wood, is left out. The best match is shown first, with the others one tap away under "Swap". A supply nothing in our store fits is listed as "Not in our store yet", so you still see how many you need. The sheets and boards are found the same way: the cutting plan says how many, and the search finds them by kind and thickness (ordinary or marine plywood, plyboard or laminated MDF; a nominal 3/4 in sheet is sold as 18 mm) or by section and length (pine wood or coco lumber, whichever costs less comes first).
Materials and units
| Material | Unit |
|---|---|
| Door handle | pcs |
| Gate latch | pcs |
| Cabinet hinge | pcs |
| Pine wood 1" × 2" × 10 ft | pcs |
| Pine wood 1" × 2" × 12 ft | pcs |
| Pine wood 1" × 2" × 8 ft | pcs |
| Coco lumber 2" × 2" × 10 ft | pcs |
| Coco lumber 2" × 2" × 12 ft | pcs |
| Coco lumber 2" × 2" × 8 ft | pcs |
| Coco lumber 2" × 3" × 10 ft | pcs |
| Coco lumber 2" × 3" × 12 ft | pcs |
| Coco lumber 2" × 3" × 8 ft | pcs |
| Coco lumber 2" × 4" × 10 ft | pcs |
| Coco lumber 2" × 4" × 8 ft | pcs |
| Plywood 1/2" | sheets |
| Plywood 1/4" | sheets |
| Plywood 3/4" | sheets |
| Wall bracket | pcs |
| Wall plug | pcs |
| Hanging rail | pcs |
| Wood screw 2" | pcs |
| Wood screw 1½" | pcs |
| Wood screw 3" | pcs |
| Paint for wood | litres |
| Wood glue (PVA) | bottles |
| Hinge mounting plate | pcs |
Quantities are rounded up to whole items. If a supply is not sold yet, the app still tells you how many you need so you can find it elsewhere.
WoodworkingShop is Copyright (c) 2026 Ryair and is used under the MIT licence (licence text).