What the tool does
You open an IFC file exported from Revit, Archicad, Tekla, Vectorworks, BricsCAD or any other BIM program. The tool lists every building element (walls, slabs, columns, beams, doors, windows, stairs, roofs and so on), reads its material, storey and quantities, and adds them up. You then choose a unit for each line, type a unit price and download the result as an XLSX bill of quantities.
The file is read by a WebAssembly build of the open-source web-ifc library inside your browser. It is not sent to a server, so confidential project models can be checked here.
Where it fits in a project
Quantity takeoff sits between design and cost. Once the design model is coordinated, an estimator measures how much of each material the building needs, multiplies by unit rates and produces a cost estimate. Doing this by hand from 2D drawings takes days. Desktop takeoff software that reads models costs thousands of dollars a year per seat. This tool covers the first pass: a quick bill from the model that you can compare with your own measurement, check a design option against a budget, or hand to a contractor as a starting point.
How each quantity is chosen
IFC defines standard quantity sets called base quantities, for example Qto_WallBaseQuantities and Qto_SlabBaseQuantities. Most BIM programs can write them when exporting. The tool uses them first, because they follow the authoring program's own rules for joins and openings. When an element has no quantity set, the tool measures its geometry instead and marks the line as such.
| Unit | First choice | If missing |
|---|---|---|
| m³ | NetVolume, then GrossVolume | Volume of the element's closed mesh |
| m² | Walls: NetSideArea, then GrossSideArea. Doors and windows: Area. Slabs, roofs, coverings: NetArea, then GrossArea | Left empty (surface area of a mesh is not a measured area) |
| m | Length | Left empty |
| ea | One per element |
Quantities in the file are stored in the project's own units. The tool reads the unit definitions in the file (for example millimetres for length, square metres for area) and converts every value to metres, square metres and cubic metres before adding anything up.
How the geometry fallback works
web-ifc turns each element into a triangle mesh in metres. For a closed mesh, the enclosed volume follows from the divergence theorem: each triangle with corners a, b, c forms a tetrahedron with the origin, and the signed volumes add up to the volume of the solid.
V = | Σ a · (b × c) / 6 |
Openings cut by doors and windows are already subtracted in the mesh, so the result is a net volume. The method needs closed, non-overlapping solids. Elements modelled as open surfaces or as several overlapping bodies give wrong volumes, which is why such lines are marked "Geometry" so you can check them.
Worked example
The sample model on this page is a small one-storey office we built for testing: four 200 mm concrete walls around a 10 m by 6 m plan, 3 m high, one 190 mm block partition, a 200 mm floor slab, four 400 by 400 mm columns, two 5 m steel beams, one door and two windows. Lengths are stored in millimetres.
| Line | Quantity | Where it came from |
|---|---|---|
| Wall, Concrete C25/30 | 19.200 m³ (4 walls) | Qto NetVolume: 6.12 + 3.48 + 6.12 + 3.48 |
| Wall, Masonry block 190 | 17.400 m² | Qto NetSideArea: 5.8 m × 3.0 m |
| Slab, Concrete C25/30 | 12.648 m³ | Qto NetVolume: 10.2 × 6.2 × 0.2 |
| Column, Concrete C30/37 | 1.920 m³ (4 columns) | Geometry: 0.4 × 0.4 × 3.0 = 0.48 each |
| Beam, Steel S275 | 10.000 m (2 beams) | Qto Length 5000 mm each, converted to metres |
| Door / Window | 1 ea / 2 ea | Count |
The column volumes are not in the file; they were measured from the geometry and match an independent measurement made with IfcOpenShell to three decimal places. If you enter a unit price of 120 per m³ for the slab, its line amount is 12.648 × 120 = 1,517.76. That price is only an illustration, not a market rate.
Before you rely on the numbers
- A model quantity is not the same as a measured quantity under a standard method of measurement (for example NRM 2 in the UK or the Korean standard estimating rules). Those methods add or deduct items by rules about thresholds, laps and waste. Treat the bill here as model quantities.
- Formwork, reinforcement and waste are not included unless they are modelled as elements.
- Results are only as good as the model. Duplicated elements, overlapping walls at corners and missing materials all show up directly in the totals. Material names are taken as written in the file.
- Quantity sets depend on export settings. If your volumes all show "Geometry", turn on base quantities in your program's IFC export.
- Very large models (hundreds of megabytes) may exceed the memory a browser tab can use, especially on phones.
This tool is for preliminary checks and learning. Bills used for tenders, contracts or payments must be prepared or verified by a qualified quantity surveyor or estimator.
Files you get
- Bill of quantities (XLSX): sheet "Bill" with item, material, unit, quantity, unit price and amount; sheet "Elements" with every element and the source of each number; sheet "Notes" with the file name, units and date.
- Element list (CSV): one row per element for your own spreadsheet.
- Price list (CSV): columns type, material, unit, price. Save it once and import it for the next model.
- Project (JSON): your units, prices and grouping, to continue later.
Sources
- buildingSMART International, Industry Foundation Classes. IFC 4.3 is published as ISO 16739-1:2024.
- buildingSMART, Qto_WallBaseQuantities and Qto_SlabBaseQuantities, IFC 4.3.2.0 documentation.
- That Open Company, web-ifc, MPL-2.0.
- To check whether a file follows the standard, use the free buildingSMART IFC Validation Service.
Last checked 2026-10-19