Every heavy model has the same suspects — exploded DWGs, families nobody placed, a warning list nobody reads. Bloat scans the open model in seconds and ranks them: each source gets a severity, a headline number and plain-language advice — with the headline bullets ranked worst first. Opt in and it measures every loadable family's real megabytes — naming the ones that refuse to open. It changes nothing; it exports one HTML file anyone can open.
The evidence is scattered across the warnings dialog, Manage Links, Purge Unused and office folklore — and none of it says which family actually weighs 40 MB.
Bloat is read-only end to end — no transactions, no purging, nothing written to the model. It finds the weight and names Revit's own tool for trimming it; the trimming stays yours.
The window opens on “Scanning the model…” and lands on an honest one-line verdict — from “Lean — nothing significant found” to “Heavy — several bloat sources to trim” — over the model's own numbers: elements, views, sheets. The scan runs on the API thread and touches nothing; the attention-worthy findings queue up as bullet headlines, worst first.
Nothing here is a mood. Each category carries three thresholds: warnings turn NOTE at 100, WATCH at 500 and HEAVY at 2,000; CAD imports at 1, 5 and 20; unused types at 50, 300 and 1,000; groups at 200, 1,000 and 3,000; raster images at 3, 10 and 30. Families are judged on the in-place count alone, and the size card on the single heaviest family — 20 MB is HEAVY whatever the total. The verdict on top is simply the worst card.
| Category | NOTE at | WATCH at | HEAVY at |
|---|---|---|---|
| Warnings | 100 | 500 | 2,000 |
| CAD imports | 1 | 5 | 20 |
| Unused family types | 50 | 300 | 1,000 |
| Familiesthe pill reads the IN-PLACE count, not the total | 4 | 12 | 30 |
| Groups | 200 | 1,000 | 3,000 |
| Raster images | 3 | 10 | 30 |
| Heaviest families (by size)the pill reads the LARGEST family, not the sum | 1 MB | 5 MB | 20 MB |
Warnings, CAD imports, unused family types, in-place families, groups, raster images — each category carries its severity pill (OK, NOTE, WATCH or HEAVY), its headline count and advice that names Revit's own fix — “Run Manage → Purge Unused to reclaim them.” — Linked DWGs appear in the list but marked “linked · not counted”, because a link weighs the disk, not your model.
The Families card ranks by placed instances, so its total is the loadable count and its top rows are ordinary loadable families — but the pill comes from the in-place ones, counted in the advice and flagged “ · in-place” on their own rows, which cannot be reused and travel with the file wherever it goes. Groups counts instances across group types and prints roughly how many members each carries: a 48-member group placed 96 times is a regeneration cost, not a tidy habit.
The opt-in pass opens each loadable family, saves it to a temporary file and measures the bytes — “Measuring family 215 of 380…” while it runs, refreshing every fifth family — then adds a “Heaviest families (by size)” card ranked in real megabytes, not guesses. Families that refuse to open are named inside the advice, with the reason: the classic signature of a corrupt family, caught for free. A pass that measured nothing says so, instead of shipping an empty section.
Revit exposes no API for a family's weight, so Bloat takes the long way round. Each family is opened in the background, saved as a throwaway .rfa into a temporary folder, weighed on disk, then closed without saving — and the folder is deleted when the pass ends. Nothing is written to the model, and nothing is written back to the family. In-place and system families are skipped, since neither can be edited out; the megabyte total covers loadable families only.
A failed read used to leave a counter at zero — and zero reads as a pass. Not here: a check Revit refuses becomes “could not be measured — Revit refused that read, so this report says nothing about them”, and a headline bullet stamps the whole report “INCOMPLETE — do not read it as a clean bill of health.” A diagnosis that exaggerates what it measured stops being believed — so this one never does.
When Nest is loaded and has analysed, Bloat shows “Dead weight — unused families (from Nest)”: families Revit's own purge engine confirms unused, priced with Bloat's measured bytes. The sizes flow the other way too — Nest shows reclaimable megabytes with sizes from Bloat, and Lens's family card gains a “Bloat: 42 MB” clause. When an app is absent, its clause simply drops; nothing pretends.
Export report… writes a single self-contained page — the verdict, the headlines, every card with its item table, light and dark — that opens on any laptop. Its footer says what the whole app stands on: “Read-only — Bloat changes nothing in the model.” The trimming happens in Revit's own tools, with the ranking open on the second screen.
Rescan recomputes the whole breakdown against the model as it now stands: the 412 unused types come back as an OK card reading “No unused loadable types — good.”, and the verdict re-derives from whatever the worst remaining card is. One thing does not survive: the “Heaviest families (by size)” card. A rescan starts from fresh facts, so that card is dropped entirely until the deep pass runs again — Bloat will not re-print bytes it weighed against a model that has since changed. The Dead weight card does keep its megabytes: those come back from the sizes this session already measured.
This is an actual HTML report Bloat exports — self-contained, works offline, shareable as one file. Scroll it right here, or open it full-screen.
Bloat ships on the QA / QC panel of the BIMIO tab. One read-only scan, a ranking you can defend, and a report you can send. Revit 2024–2027, full trial, no card.