A SketchUp cost estimate is a quantity takeoff multiplied by rates: the model supplies the quantities and you supply the prices. In SheetUp, our extension for SketchUp 2022 and newer, the estimate is one table of rows that you add by hand. A row is a custom item or points at one component, one material or one tag; it takes a measure (each, length, width, height, area, volume or weight), multiplies it by a Factor and a Price, and adds waste and tax: Total = Qty x Factor x Price x (1 + Waste/100) x (1 + Tax/100). The grand total is the last row of the table. This guide reads the arithmetic from the extension’s source, works one complete example to the cent, lists the mistakes that distort a total and says what an estimate drawn from geometry cannot know.
From model quantities to a priced estimate
Two jobs sit under the word “estimate”. The takeoff (the bill of quantities, BoQ, in UK usage) answers how much: how many windows, how many square metres of cladding, how many cubic metres of slab. Pricing answers what it costs: a rate per unit, an allowance for waste, tax. SketchUp’s Generate Report can list component quantities and attributes such as Price, which belongs to the component definition, and save a CSV (SketchUp help). It strains when the price follows a measure rather than a count, such as wood cladding priced per m², the question a forum poster asked in 2020 (SketchUp forum). A row separates the measure (Per) from the rate (Price) for that case.
Every rate and factor is an assumption. The US Government Accountability Office’s estimating guide, written for government programs rather than buildings, defines assumptions as “a set of judgments about past, present, or future conditions postulated as true in the absence of positive proof” and lists, among the reasons to record them, that the estimate can be reconstructed when the original estimators are no longer available (GAO-20-195G, p. 71). SheetUp has no comment field, so keep that record in a notes column in Excel after you export.
What a row contains
| Column | Meaning |
|---|---|
| Code | Generated from the name (CMP-GROUND-SLAB-01, MAT-CONCRETE-01, TAG-WALLS-01, CUS-01), with a counter when two collide. The prefix says what kind of row it is: CMP component, MAT material, TAG tag, CUS custom. You can edit the code; clearing it generates it again. |
| Name | On a model row, the live name of the component, tag (Untagged for the default tag) or material. Editing it renames the real component, tag or material in the SketchUp scene, in one undo step. On a custom row it is just text. |
| Qty | Measured from the model for component, material and tag rows and shown with its unit; it is read-only there. Typed on a custom row and never converted; a negative quantity is a credit. |
| Per | What the price is per. On a model row it is a dropdown that is never typed: Each, Length, Width, Height, Area, Volume or Weight, each with the unit of the current system. A material row offers Area and Each (faces). On a custom row it is a free unit label such as lump sum, weeks or nr. A new component or tag row starts on Each and a material row on Area; a measure such as volume is never chosen for you. |
| Factor | Multiplies the quantity before pricing. Default 1; any number from 0 up, and 0 gives a total of 0. Use it for repeats that are not modeled, such as two layers of plasterboard. |
| Price | Your rate per display unit of Per (per m³ or per ft³, as set by the Metric / Imperial switch). On a custom row, per the unit you typed. Blank or 0 gives a total of 0 and the row counts as unpriced. |
| Waste %, Tax % | Percentages, not fractions: 7 means 7 %, accepted from 0 to 1000. Blank means the default from Settings, which the cell shows greyed. Waste is applied first, then tax on the result. |
| Total | The row’s money from the formula above. The last row of the table holds the grand total. |
| Density | kg/m³ (lb/ft³ in Imperial), used only when Per is Weight. Blank reads auto: a built-in table matched by material name. |
| Count, W x H x L, Total length, Area, Volume, Weight | What was measured for the row, read-only. W x H x L appears on component rows only. Hide any column with the Columns button; hidden columns are remembered in the model and still exported. |
The same formula runs on every row:
subtotal = qty x factor x pricewaste = subtotal x waste / 100tax = (subtotal + waste) x tax / 100total = subtotal + waste + tax
The Total row at the bottom of the table adds the exact row values and rounds only for display, so it can differ by a cent from the sum of the rounded row totals (the worked example shows one). The app shows that one figure; the split into subtotal, waste and tax is in the totals block of the Excel export.
What a row points at
- Custom. Free text: you type the name, quantity, unit and price. Use it for preliminaries, allowances, labour that is not modeled, or a credit.
- Component. One component, identified by tag and name. SheetUp measures the component as a whole: its own geometry plus everything nested inside it, rolled up through the instance transforms, times the number of instances. A container without faces of its own, such as a window group of glazing, sill and head, measures as the sum of its parts. Count is the number of instances; width, height and length come from the component’s bounding box.
- Material. One material. The quantity is the area of every face painted with it (an unpainted face takes the material of the nearest painted ancestor instance), or the number of faces with Per set to Each.
- Tag. A tag. The quantity is the sum of the own geometry of every component on that tag. A part nested in a component of the same tag is counted once, as its own component, never again inside its container.
Nothing is deducted from a parent row: a Component row and a row for one of its parts count that part twice, and the Code prefix is how you see it. A component, material or tag that has left the model keeps its row, reads “not found in this model” and has quantity 0 until you point the row at another item with Change source.
What each Per measures
| Per | What the model supplies | Watch for |
|---|---|---|
| Each | Instances of the component (tag row: instances of its components, containers included; material row: faces). | A named group counts as a component, so name what you want counted. |
| Length | The largest bounding-box dimension of each instance, added up over the instances; summed over the components of a tag. | Suits a beam or a rail. A material has no length. |
| Width, Height | The component’s bounding-box width (its smallest dimension) or height (the middle one), times the number of instances; summed over the components of a tag. | Dimensions are sorted by size, so rotating the component does not change them. They are bounding-box sizes, not areas. |
| Area | The exact surface area of all faces, at the placed scale. | Both sides and the edges of a solid wall are in it, and an opening cut into a wall is not subtracted. See how surface area is calculated. |
| Volume | Volume of a closed solid. | Open geometry falls back to its bounding-box volume and the Volume cell is marked with ≈. |
| Weight | Volume times a density: the row’s Density cell if you typed one, else a built-in table matched by material name. | No density means weight 0, so a Weight row totals 0; type a Density on the row. |
How these measures become a material list is covered in calculating material quantities in SketchUp.
Build the estimate in SheetUp
- Tag the model and name your groups and components: a component is identified by its tag and its name.
- Open SheetUp. The table starts empty: nothing is listed or measured for you. SheetUp reads an index of the model (names, tags and counts, no faces) only when you open a pick-list, and measures only what a row points at.
- Press Add row, the button at the bottom left of the window. One popover opens above it with Custom row, Component…, Material…, Tag… and, when objects are selected in SketchUp, From selection. A custom row is added at once. The other three open a searchable list of everything of that kind in the model; clicking an entry only ticks it, and Add N selected adds the ticked entries, in one undo step. Select all results ticks the entries that match the current search: type window, select all, add. From selection adds one Component row per distinct component selected.
- On each row set Per (click the cell and choose from the list), Price and, if needed, Factor. Add Waste % and Tax % on the row, or leave them blank to take the defaults from Settings. Cells are edited in place. Right-click a row for Duplicate line, Delete line, Move up, Move down and Change source….
- Read the Total row. Qty reads “measuring…” until every row is measured, and quantities are measured again by themselves a moment (about 1.5 seconds) after the model changes. Selecting objects in SketchUp highlights the rows whose component or tag matches; the search box filters rows by code, name, source or tag.
- Check what the cells say: “not found in this model” on a Qty cell, ≈ in front of an estimated volume, none in the Weight column.
- Set currency, number format and decimals in Settings, then export.
A worked example: a small garden room
The model has a 6.0 m x 4.0 m x 0.15 m slab (one closed solid, 3.6 m³) in a component named Slab; four wall panels 2.6 m high and 0.12 m thick, two 6.0 m long and two 4.0 m long, each a closed solid without openings and each a group or component on a tag called Walls (6.24 m³ together); the exterior faces of the walls painted with a material named Cedar cladding and the interior faces with Plasterboard (four faces each, 15.6 + 15.6 + 10.4 + 10.4 = 52.0 m², corner overlaps ignored); and three instances of a component named Window 1200×900. Rates, waste and tax are invented for the example. In Settings the currency is EUR, the default Waste is 0 and the default Tax is 8; no row has a Tax of its own, so every row takes 8. Per was changed from Each to Volume on the Slab and Walls rows. The Walls rate is for the frame and insulation only; the finishes have their own rows. The grid shows the euro sign before each amount; the table below leaves it out.
| Code | Per | Qty | Factor | Price | Waste % | Tax % | Total |
|---|---|---|---|---|---|---|---|
| CMP-SLAB-01 | Volume (m³) | 3.60 m³ | 1 | 145.00 | 5 | 8 | 591.95 |
| TAG-WALLS-01 | Volume (m³) | 6.24 m³ | 1 | 310.00 | 7 | 8 | 2,235.39 |
| MAT-CEDAR-CLADDING-01 | Area (m²) | 52.00 m² | 1 | 72.00 | 12 | 8 | 4,528.74 |
| MAT-PLASTERBOARD-01 | Area (m²) | 52.00 m² | 2 | 9.500 | 10 | 8 | 1,173.74 |
| CMP-WINDOW-1200X900-01 | Each | 3 | 1 | 420.00 | 0 | 8 | 1,360.80 |
| CUS-SITE-PRELIMINARIES-01 | lump sum | 1 | 1 | 1,850.00 | 0 | 8 | 1,998.00 |
| Total | 11,888.63 | ||||||
By hand, each row as subtotal + waste + tax:
- CMP-SLAB-01. 3.6 x 1 x 145.00 = 522.00; waste 5 % = 26.10; tax 8 % of 548.10 = 43.848. Total 591.948, shown as 591.95.
- TAG-WALLS-01. Volume 2 x (6.0 x 2.6 x 0.12) + 2 x (4.0 x 2.6 x 0.12) = 3.744 + 2.496 = 6.24 m³. 6.24 x 310.00 = 1,934.40; waste 7 % = 135.408; tax 8 % of 2,069.808 = 165.58464. Total 2,235.39264, shown as 2,235.39.
- MAT-CEDAR-CLADDING-01. 52.0 x 72.00 = 3,744.00; waste 12 % = 449.28; tax 8 % of 4,193.28 = 335.4624. Total 4,528.7424, shown as 4,528.74.
- MAT-PLASTERBOARD-01. Two layers, Factor 2: 52.0 x 2 x 9.50 = 988.00; waste 10 % = 98.80; tax 8 % of 1,086.80 = 86.944. Total 1,173.744, shown as 1,173.74. Qty stays 52.00 m² and the Price cell reads 9.500, because a per-measure price keeps four significant digits; the factor is not in the quantity.
- CMP-WINDOW-1200X900-01. Per Each, 3 x 1 x 420.00 = 1,260.00; no waste; tax 100.80. Total 1,360.80.
- CUS-SITE-PRELIMINARIES-01. A custom row with the unit lump sum: 1 x 1 x 1,850.00 = 1,850.00; no waste; tax 148.00. Total 1,998.00.
The Total row adds the exact values. Subtotal 522.00 + 1,934.40 + 3,744.00 + 988.00 + 1,260.00 + 1,850.00 = 10,298.40. Waste 26.10 + 135.408 + 449.28 + 98.80 = 709.588. Tax 43.848 + 165.58464 + 335.4624 + 86.944 + 100.80 + 148.00 = 880.63904. Total 10,298.40 + 709.588 + 880.63904 = 11,888.62704, shown as 11,888.63. The six rounded row totals add up to 11,888.62, one cent less, because each row is rounded on its own and the Total row is not. The totals block of the Excel export shows the split: Subtotal 10,298.40, Waste 709.59, Tax 880.64, which add to the same 11,888.63.
Units, currency and number format
Settings holds the Metric / Imperial switch (ft, ft², ft³, lb), the default Waste % and Tax %, the currency, the number format and the decimals. Prices are typed and shown per display unit and stored per metric unit, so switching units re-expresses quantities and rates and never changes a total: the 145.00 per m³ slab rate reads 4.106 per ft³ in Imperial, the slab quantity reads 127.13 ft³, and the row still totals 591.95. The currency list is USD, EUR, GBP, CAD, AUD, NZD, CHF, SEK, NOK, DKK, JPY and SGD, and the number formats are 1,234.50 and 1.234,50. The currency is a label: it sets the symbol and the money decimals (JPY 0, the others 2) and converts nothing. Decimals (0 to 4) sets the places of quantities.
Excel and back
The Export menu offers Excel (.xlsx), HTML report and CSV, then Copy to clipboard, Print and Import lines. An export can ask you to sign in with a free 3dshouse account and counts against the free exports of the licence; Copy, Print and Import do not.
- XLSX is one flat sheet named Estimate, one row per estimate row, with 20 columns: Code, Name, Source type, Tag, Count, Width, Height, Length, Total length, Area, Volume, Weight, Qty, Per, Factor, Price, Waste %, Tax %, Total and Density. Cells are numbers and units are in the headers; Source type (Custom, Component, Material or Tag) appears in the export only. The Total of each row and the totals block under the table (Lines, Lines priced, Subtotal, Waste, Tax, Total) are live Excel formulas with cached values, so a change to Qty, Factor, Price, Waste % or Tax % in Excel recalculates. The header row is frozen and an autofilter covers the table. The file keeps exact numbers and the cell format rounds them: the Walls total is stored as 2,235.39264 and shown as 2,235.39.
- CSV carries the same columns as rounded values, with no formulas and no totals block; a comma as decimal separator switches the delimiter to a semicolon. HTML carries the table and the totals.
- Grouping and presenting is left to Excel. SheetUp has no report views: to total by tag or by material, use a pivot table on Source type, Tag and Name. The spreadsheet side is described in exporting a material list from SketchUp to Excel.
- Import lines reads an exported XLSX or CSV back, replacing all rows or appending, as you choose. Model items are matched by tag and name and unknown ones become “not found” rows. Quantities of model rows are always measured again; a custom row keeps its typed quantity and price.
The estimate is stored in the model file, so it travels with the .skp.
Common mistakes
- A percentage entered as a fraction. Waste 0.07 and tax 0.08 mean 0.07 % and 0.08 %: on the Walls row, 2,235.39 becomes 1,937.30, a shortfall of 298.09. Type 7, not 0.07.
- Pricing an item twice with a component row and a tag row. Both measure the same geometry and both totals enter the Total row. Put each cost on one level.
- Pricing a surface twice with a wall row and a material row. If the Walls rate already included the cedar, the cladding row would price the same wall again. Give each row one scope: here Walls is the frame and insulation, the cladding row only the cladding.
- Area read as wall area. It counts both sides and the edges, and openings are not deducted. For one face of a wall use a material row, or allow for the difference in the price.
- Changing Per after typing a price. The number stays and the unit changes: 310 per m³ becomes 310 per m². Retype the price after changing Per.
- A rate typed under the wrong unit system. The Price cell means per display unit. Typing a per-m³ rate while Settings says Imperial prices per ft³. Check the unit shown next to Qty.
- A Weight row with no density. Weight is 0, so the row totals 0; type a Density on the row (the cell reads auto until you do).
- Typing over a Name cell to relabel a row. On a model row it renames the real component, tag or material in the scene. To label a cost that is not in the model, use a custom row.
What a model-based estimate does not cover
The result is as good as the model and your rates. SheetUp measures what is modeled and applies the arithmetic above. It does not include:
- Anything not modeled: fixings, services, undrawn finishes, temporary works. Mis-tagged or non-manifold geometry is not corrected, volume and weight are exact only for closed solids, and there is no deduction for holes.
- Site conditions: access, ground, demolition, working height, logistics. Put them in the rates or in a custom row.
- Labour productivity. A price is one number; whether it came from a crew rate, a quote or a past job is yours to record, in Excel after the export. The tool applies no productivity or crew model.
- Prices. There is no price database; every rate is typed.
- Risk and contingency. A row has waste and tax only and computes no percentage allowances. The GAO guide treats contingency as the outcome of a risk analysis, “calculated by comparing the point estimate with that of the simulation result at a desired level of confidence” (p. 145), and notes that “there are no set rules as to what level of contingency is sufficient” (p. 158). Decide it separately and add it as a custom row or after the export.
- Profile Builder objects and PDF output. Profile Builder is not supported and there is no PDF export.
Treat the output as a takeoff-based estimate for checking and pricing a design, not as a tender price.
Sources
- GAO-20-195G, Cost Estimating and Assessment Guide (March 2020; pages 71, 145 and 158 read on 2026-11-09); GAO product page
- SketchUp help: Using SketchUp’s Generate Report Service (opened 2026-11-09)
- SketchUp forum: plugin for cost estimate for interior design (July 2020 thread, opened 2026-11-09)
- SheetUp behavior: read from the extension source and documentation on 2026-11-10 (row math, measures, grid, Settings, export and import code).
FAQ
How do I do cost estimating in SketchUp?
Take the quantities from the model, then multiply them by your own rates. SketchUp’s Generate Report can list component quantities and a Price attribute and save a CSV (SketchUp help). An extension such as SheetUp works from rows you add yourself: each row points at a component, a material or a tag (or is typed by hand), measures it, and multiplies the quantity by a factor and a price, with waste and tax. The Total row at the bottom of the table adds the rows.
Can I price a SketchUp model per square metre or per cubic metre?
Yes, if the tool can price by a measure other than a count. On a SheetUp row, Per is a list: Each, Length, Width, Height, Area, Volume or Weight, each shown with the unit of the current system, and the price is per that unit (per m², per m³, per ft² and so on, as set in Settings). Pricing wood cladding per m² is the question a SketchUp forum poster asked in 2020 (SketchUp forum).
Is there a SketchUp cost estimating plugin that exports to Excel?
Several exist; this page uses SheetUp. It exports one flat sheet named Estimate, one row per estimate row, in which each row total and the totals block are live Excel formulas, so a change to Qty, Factor, Price, Waste % or Tax % in Excel recalculates. It also exports CSV and HTML, and imports rows back from an exported file.
How is waste added in a SketchUp cost estimate?
As a percentage on the row: total = qty x factor x price x (1 + waste / 100) x (1 + tax / 100). Enter 5 for 5 %, not 0.05. The Qty column stays the measured quantity; waste raises the money only. A Waste % left blank on a row takes the default set in Settings.
Free: limited to 3 exports a day
Pro: unlimited, guaranteed to work, priority support
- BevelUp — round or chamfer edges into real geometry, in one click
- Decimify — reduce the polygon count of a heavy model
- Tracepen — trace an image into SketchUp faces
- TileUp — turn a face into real 3D tiles, with a take-off
- Texturic — make seamless tile textures with PBR maps
- SheetUp — turn a SketchUp model into a bill of quantities and cost estimate

