Model Audit Template
A practical checklist to keep your BIM models healthy throughout a project.
Replace {company} with your own naming convention.
This template assumes the initial model setup is already in place. For how to prepare a model before anyone starts modeling, see the companion post → Model setup criteria.
How to use it. For each check, mark the Status column with ✓ (pass), ✗ (fail) or NA (not applicable), and use Notes to record where, who, or a link to the element.
Cadence (Cad.), how often to run each check:
W weekly · M monthly · MS per milestone / phase
Detection, how each check can be verified, with a companion QC addin in mind:
Auto the addin resolves it on its own · Partial the addin flags candidates and you confirm · Manual human judgment, the addin doesn’t enter
Model structure and organization
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| EST-01 | All disciplines on their own workset | M | Partial | ||
| EST-02 | No model groups (watch for leftovers from arrays) | W | Auto | ||
| EST-03 | Models purged | M | Partial | ||
| EST-04 | File size under the agreed limit | M | Auto | ||
| EST-05 | Project-specific BEP requirements met | MS | Manual | ||
| EST-06 | Same project browser organization across all models | M | Partial | ||
| EST-07 | Linked CADs on their dedicated workset | M | Auto |
Naming conventions
Common criterion for this section: each item matches the
{company}convention and unused ones are purged.
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| NOM-01 | Filters | M | Auto | ||
| NOM-02 | Materials (same set across all models + naming) | M | Partial | ||
| NOM-03 | Families | M | Auto | ||
| NOM-04 | Filled regions | M | Auto | ||
| NOM-05 | View titles (per BEP) | M | Auto | ||
| NOM-06 | Linked CADs (naming + purge unused Xrefs) | M | Partial | ||
| NOM-07 | Scope boxes | M | Auto | ||
| NOM-08 | Sheets: numbering sequence, naming, no typos, consistent structure (per BEP) | M | Partial | ||
| NOM-09 | Project browser organization (naming) | M | Auto |
Modeling quality
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| CAL-01 | No duplicate elements | W | Auto | ||
| CAL-02 | Elements assigned to the correct level | M | Partial | ||
| CAL-03 | Geometry modeled close to the origin | M | Auto | ||
| CAL-04 | Each element in its correct category (e.g. a fire extinguisher not under sprinklers) | MS | Partial | ||
| CAL-05 | No generic families in advanced phases | M | Partial | ||
| CAL-06 | Element connections resolved | MS | Partial | ||
| CAL-07 | Clash detection with no critical clashes | MS | Partial | ||
| CAL-08 | LOD/LOI per phase | MS | Manual | ||
| CAL-09 | Warning count below threshold (logged weekly) | W | Auto |
Families
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| FAM-01 | No manufacturer families | M | Partial | ||
| FAM-02 | Parameters configured and filled correctly | M | Partial | ||
| FAM-03 | No families using imperial units | M | Auto |
Coordination and deliverables
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| COO-01 | Correct IFC export | MS | Partial | ||
| COO-02 | Links bound to the correct workset (at project start) | MS | Partial | ||
| COO-03 | Publish sets to ACC reviewed | M | Partial | ||
| COO-04 | Shared coordinates / survey point aligned across models | MS | Auto | ||
| COO-05 | Links with correct reference type (overlay/attach) and pinned | MS | Partial | ||
| COO-06 | All links sourced from the agreed CDE folder (no local/desktop paths) | MS | Auto |
Data and parameters
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| DAT-01 | MEP elements with no system assigned | M | Auto | ||
| DAT-02 | Delete unused shared parameters | M | Partial | ||
| DAT-03 | Zoning parameter filled on grids | M | Auto | ||
| DAT-04 | View-order and user parameters set per chapter | M | Partial |
Sheets and drawings
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| PLA-01 | Graphic overrides prohibited | W | Auto | ||
| PLA-02 | Don’t fake layouts with model geometry + a linked model view | M | Partial | ||
| PLA-03 | Grids use a distinct type in the MEP sheets model to control visibility | M | Auto | ||
| PLA-04 | Walls set to Coarse detail in plans (wall layers hidden), via view template | M | Partial | ||
| PLA-05 | Faking schedules with lines + text prohibited (use real schedules) | M | Manual | ||
| PLA-06 | Parameter fill format on Revisions | M | Partial | ||
| PLA-07 | All views have a view template applied | M | Auto | ||
| PLA-08 | View templates with Phase Filter: None; visibility controlled with regular view filters, not phase filters | M | Auto |
Prohibitions
| ID | Check | Cad. | Detection | Status | Notes |
|---|---|---|---|---|---|
| PRO-01 | Nothing carrying another company’s name (detail items, families, etc.) | M | Partial | ||
| PRO-02 | No imported or exploded CADs | W | Auto | ||
| PRO-03 | No one edits the official templates (e.g. the 3D IFC export template) | MS | Manual | ||
| PRO-04 | Design options prohibited | W | Auto |
Notes
Phases and design options
Why I prefer not to audit phases (on ~95% of projects). Phases can corrupt models easily and produce errors that are hard to trace in collaborative environments. This is especially true with linked models: phase filters only behave correctly when phase names and filter configurations match exactly across every file, and otherwise Revit silently falls back to “None”, which shows everything from every phase. Autodesk’s own documentation confirms a host model’s phase filter does not control linked files when filter names differ.
Instead, I prefer to set view templates with Phase Filter: None and apply all visual modifications through regular view filters. That way graphic control is explicit, reproducible, and doesn’t depend on each element’s phase state.
If you do need to audit a project that uses phases, I wrote a short post explaining how they work → How phases work in Revit
About design options. The idea behind design options is sound, but they consume a lot of computer resources and make models slow to work in. Even when inactive and hidden, every option still forces Revit to recalculate how it affects the surrounding elements on each change. In my opinion, the cost of keeping them coordinated across disciplines doesn’t pay off versus simpler alternatives.