Family Purge Documentation
Complete guide to installing, configuring, and using Family Purge to strip bloat from Revit families - both loaded in your active project and saved as .rfa files on disk.
Quick Start
Five steps to clean the families in your current Revit project.
AUTOM8LABS_FamilyPurge_v1.0.0.exe and step through the wizard. The installer drops the add-in into every installed Revit version (2022 through 2027) automatically.Run Purge Model on a project copy first to see what gets removed. The text and HTML reports tell you exactly which cleaners fired on each family and how much disk space was reclaimed.
Installation
Close every running Revit instance before launching the installer. Open instances will lock the add-in DLLs and the install will fail or roll back.
Single installer for every Revit version
One installer - AUTOM8LABS_FamilyPurge_v1.0.0.exe - covers Revit 2022, 2023, 2024, 2025, 2026, and 2027 in a single pass. The wizard detects every Revit version installed on the machine and drops the matching binaries into each version folder. No per-version downloads, no manual targeting.
Install paths
Family Purge follows Autodesk's standard ApplicationPlugins layout:
- Revit 2022-2026 →
C:\ProgramData\AUTOM8LABS\FamilyPurge\{Version}\ - Add-in manifest →
C:\ProgramData\Autodesk\Revit\Addins\{Version}\AUTOM8LABS.FamilyPurge.addin
Each {Version}\ subfolder holds the Revit-version-specific DLL. The .addin manifest tells Revit where to find the assembly so the add-in auto-discovers on next launch.
Accessing the tool
After installation, launch Revit and open any project document (.rvt) or template (.rte). Find the button at:
Add-Ins tab → AUTOM8LABS panel → Family Purge
The AUTOM8LABS panel is shared with other AUTOM8LABS tools. Family Purge runs against the active project document - Clean Folders (a separate workflow) does not need a project open.
Supported Revit Versions
| Revit Version | Framework | Status |
|---|---|---|
| Revit 2022 | .NET Framework 4.8 | Supported |
| Revit 2023 | .NET Framework 4.8 | Supported |
| Revit 2024 | .NET Framework 4.8 | Supported |
| Revit 2025 | .NET 8.0 (Windows) | Supported |
| Revit 2026 | .NET 8.0 (Windows) | Supported |
| Revit 2027 | .NET 10 (Windows) | Supported |
Purge Model
The Purge tab is for families that are already loaded into your active project. It enumerates every editable family in the document, lets you pick which ones to clean, then opens each in the family editor, runs the configured cleaners, and reloads it back into the project - overwriting the original.
Family list
The list is filtered to families Revit can actually open:
Family.IsEditable == true- in-place and system families are excluded- The family has a category - rare orphans without a category are excluded
Each row shows the family name, category, type count, and instance count. A search box at the top filters by name as you type.
Default filter: unused families only
By default the list shows only families whose instance count is zero and whose category isn't pinned by a runtime swap. Toggle the Show all loaded families switch to widen the list to every editable family.
Family symbols whose categories are referenced by a FamilyParameter (e.g. runtime-swap placeholders) are kept even when they appear unused. Revit's PerformanceAdviser would flag them as unused, but they will be needed when the host family is loaded again - so Family Purge skips them.
How a family is cleaned
For each family you tick, Family Purge:
- Opens the family in the family editor via
Document.EditFamily - Runs every enabled cleaner, each in its own transaction
- Loads the cleaned family back into the project, overwriting the original (and any types using it)
The progress dialog stays responsive between families because the WPF dispatcher is pumped at each family boundary. Cancel takes effect at the next boundary - the current family always finishes cleanly.
Clean Folders
The Clean tab targets .rfa files on disk - your firm library, an OEM content drop, a vendor download. Family Purge opens each file in turn, runs the configured cleaners, and writes the cleaned family to an output folder.
Source configuration
- Source folders - one or more folders containing
.rfafiles. Add as many as you like - Include subfolders - recurse into every subdirectory under each source folder
- Skip backup files - ignore
*.0001.rfaand*_backup.rfapatterns Revit leaves behind
Output configuration
- Output folder - destination directory for the cleaned families. Originals are not touched
- Preserve folder structure - mirror the source folder hierarchy under the output folder, so an input at
Lib\Doors\Single.rfawrites toOutput\Doors\Single.rfa
Pause / Resume / Cancel
The Clean Folders progress dialog has the same controls as Purge Model. Pause and Cancel take effect at the next file boundary - the family currently being processed always finishes cleanly to avoid corrupting partially-cleaned .rfa output.
Cleaners
The Settings tab toggles which cleaners run. Each cleaner runs in its own transaction inside the family editor session, so a failure in one cleaner doesn't roll back the others. Five cleaners are on by default; three are experimental and off by default.
| Cleaner | Default | What it does |
|---|---|---|
| Nested families | On | Recursively descends into nested families, cleans each one, reloads it back into its parent. Category-mismatched nested families are deleted. |
| Unused family types | On | Uses Revit's PerformanceAdviser "unused symbols" rule (works in 2022-2023 where Document.GetUnusedElements isn't available). Symbols of categories referenced by a FamilyParameter are preserved. |
| Materials & assets | On | Walks every non-type element to collect used Material IDs and their three asset references (appearance, structural, thermal). Deletes unreferenced Material, AppearanceAssetElement, and PropertySetElement instances. Runs twice - second pass catches assets orphaned by the first. |
| CAD imports | On | Strips DWG, DXF, SAT, SKP, and DGN imports. Typically the largest source of family bloat by file size. |
| Images & PDFs | On | Strips ImageType and ImageInstance - raster images and imported PDFs. |
| Fill patterns | Off (experimental) | Walks Material and FilledRegionType references to build a "used" set, deletes the rest. Solid is always preserved. |
| Line patterns | Off (experimental) | Walks GraphicsStyle and Category line-pattern references to build a "used" set, then deletes unused. |
| Object styles | Off (experimental) | Deletes subcategories under OST_Lines (and other style categories) that no curve references. |
Fill patterns, line patterns, and object styles can change the visual appearance of a family in subtle ways - a fill type you didn't realise was referenced by an annotation gets removed and the annotation falls back to Solid. Leave these off until you've verified the results on a copy of a family you don't mind testing on.
Why each pass uses its own transaction
If the materials-and-assets cleaner fails halfway because Revit refuses to delete a particular asset, the transactions for nested families, unused types, and CAD imports have already committed - their work isn't lost. The reporting layer flags the failed pass and continues with the next cleaner.
Failure Handling
Revit's family-load, family-edit, and transaction operations can throw modal warnings and errors that block unattended runs. Family Purge attaches an application-level failure handler that intercepts every warning before Revit can show a dialog:
- Dismiss warnings - toggle in Settings, on by default. Warnings (e.g. "duplicate type names will be renumbered") are silently swallowed
- Auto-resolve errors - toggle in Settings, on by default. Errors with a resolve option (e.g. "delete the offending element") are auto-resolved
- PurgeLog - every dismissed warning and auto-resolved error is logged to a per-run PurgeLog with a timestamp, family name, severity, and the message
If you'd rather see the dialogs, untick both options on the Settings tab. The PurgeLog still records the dialogs that fire so you can audit the run after.
Revit's auto-resolve picks the first resolution option Revit offers. For most warnings that means "do nothing" - but for some errors it means "delete the offending element". Read the PurgeLog after every unattended run to verify nothing critical was sacrificed.
Reports & Logs
Family Purge writes three kinds of artefacts per run.
Per-family reports
Each family processed produces a report. Configure text-only, HTML-only, or both on the Settings tab. Reports cover:
- Family name, category, and path
- File size before and after, with percentage reduction
- Which cleaners fired and the count of elements removed per cleaner
- Any errors the cleaner pass encountered
Reports land in:
%LocalAppData%\AUTOM8LABS\FamilyPurge\Reports\
...or a custom folder you can configure on the Settings tab.
PurgeLog
A separate PurgeLog records suppressed warnings and auto-resolved errors per run. This is your audit trail - it lets you see exactly what Revit's failure handler did under the hood. Open the PurgeLog after every unattended Clean Folders run to confirm nothing critical was auto-resolved away.
Rolling diagnostic log
A thread-safe rolling log of every Family Purge operation lives at:
%LocalAppData%\AUTOM8LABS\FamilyPurge\Log\FamilyPurge-{date}.log
Useful when reporting a bug. Attach the log for the affected date and we can usually identify the root cause without needing the family that triggered it.
Settings file
Your per-user settings persist to:
%LocalAppData%\AUTOM8LABS\FamilyPurge\FamilyPurgeSettings.json
Licensing
Family Purge follows a freemium three-tier model. The title bar always shows the current state - Free Version when unlicensed, Licence valid until DD/MM/YYYY when a key with an expiry is cached, or Licence active for a key with no expiry.
Free (no licence required)
Everything you need to clean the families inside your active project:
- Purge Model - clean families loaded in the current project
- Five default cleaners - nested families, unused types, materials & assets, CAD imports, images & PDFs
- Application-level warning suppression and PurgeLog audit
- Per-family text reports
- Rolling diagnostic log
Individual - £199/year per machine activation
Built for solo Revit users and small studios who maintain a family library on disk. Self-serve checkout - each licence activates one machine:
- Everything in Free
- Clean Folders - batch-process every
.rfain a folder unattended, with Pause / Resume / Cancel - Experimental cleaners - fill patterns, line patterns, object styles
- HTML reports + PurgeLog - readable per-family HTML output for sharing or archiving
- Standard email support
Pro - £499/year, unlimited machines
For firms with multiple Revit users where managing individual machine activations becomes unwieldy.
- Everything in Individual
- Unlimited machine activations under one licence
- Firm-wide shared settings - point at a network folder, every user pulls the same
FamilyPurgeSettings.json(local cache wins offline) - Priority support
Licence keys validate against api.autom8labs.io and bind to a machine fingerprint. Each Individual licence equals one machine activation - use the Manage Licence button in the Help tab to move a licence between machines. After a successful online validation, the licence remains active for 7 days without internet access (offline grace period).
Buy at autom8labs.io/products/family-purge.
Frequently Asked Questions
Purge Model targets families that are already loaded into your active Revit project. It opens each family in the family editor, cleans it, and reloads it back into the project - overwriting the original.
Clean Folders targets .rfa files on disk. It opens each file in turn, cleans it, and writes the cleaned family to an output folder - originals untouched (unless you point output at the source folder). Clean Folders is a licensed feature (Individual or Pro tier).
No. Family Purge removes unreferenced elements - types nothing uses, materials nothing references, CAD imports, images. The family's geometry (extrusions, sweeps, voids, reference planes, parameters, formulas) is never modified. If a cleaner can't prove an element is unreferenced, the element is left alone.
For Purge Model, CTRL+Z reverts the family reloads in the project before you save. For Clean Folders, run with the output set to a separate folder - your originals remain untouched and you can A/B compare before swapping them in. Both workflows produce HTML reports showing exactly what was removed so you can audit before keeping the cleaned files.
It depends entirely on what's in your families. Families with embedded CAD imports (a common source of bloat) often drop by 70-90%. Clean families with just a few unused types might drop by 5-10%. Run Family Purge on a copy of your library first and read the per-family HTML report to see the actual reduction.
Fill patterns, line patterns, and object styles can be referenced indirectly - through nested filled regions, schedule cells, or annotation override sets - in ways the cleaner can't always prove. Removing one that's actually still referenced will cause the consumer to silently fall back to a default (Solid for fill patterns). The five default-on cleaners use authoritative reference graphs (PerformanceAdviser for unused types, direct element walks for materials, type checks for imports). The experimental three are best-effort. Leave them off unless you've tested.
Yes, by default. The application-level failure handler dismisses Revit's warnings during family-load and family-edit operations so unattended runs don't stall. Every dismissed warning is logged to the PurgeLog with timestamp, family name, and severity - check the log after every run to audit what was swallowed. If you'd rather see the dialogs, untick "Suppress warnings" and "Auto-resolve errors" on the Settings tab.
Revit 2022, 2023, 2024, 2025, 2026, and 2027. One installer covers all six versions. The build targets net48 for 2022-2024, net8.0-windows for 2025-2026, and net10.0-windows for 2027 - all shipped in the same installer.
Purge Model works on local copies of workshared central files, but you'll need exclusive checkout of the family elements being modified (Revit's normal worksharing rules apply). For cloud-hosted projects, take a local copy first. For pure library cleanup, use Clean Folders - it doesn't need a project open at all.
Changelog
Initial Release
- Purge Model workflow - clean families loaded in the active project
- Clean Folders workflow - batch-process
.rfafiles with Pause / Resume / Cancel - Eight cleaners - nested families, unused types, materials & assets, CAD imports, images & PDFs (default on); fill patterns, line patterns, object styles (experimental)
- Application-level failure handler with PurgeLog audit
- Per-family text and HTML reports
- Three-tier licensing - Free, Individual £199/year per machine, Pro £499/year unlimited machines
- Supports Revit 2022 through 2027 (.NET Framework 4.8 / .NET 8.0 / .NET 10)
Troubleshooting
Family Purge button is missing from the ribbon
The button appears under Add-Ins tab → AUTOM8LABS panel. If the panel isn't visible after install:
- Verify the .addin manifest exists at
C:\ProgramData\Autodesk\Revit\Addins\{Version}\AUTOM8LABS.FamilyPurge.addin - Verify the DLL exists at
C:\ProgramData\AUTOM8LABS\FamilyPurge\{Version}\ - Close every Revit instance, run the installer again, then re-launch Revit
A family failed to clean
Per-family failures are written to that family's HTML report under the Errors section. The most common causes:
- Revit refused to delete an element the cleaner thought was unreferenced (often happens with thermal assets) - the transaction rolls back and the next cleaner runs
- The family contains a corrupted nested family that Revit can't open - skip it in the family list and move on
- The output folder isn't writable - check folder permissions and free disk space
Run took longer than expected
Family Purge processes families serially - each one is opened, cleaned, and saved/reloaded before the next starts. Large families (hundreds of types, deeply nested) can take 30+ seconds each. Watch the progress dialog - if a family is genuinely stuck, Cancel takes effect at the next family boundary.
PurgeLog shows lots of dismissed warnings
That's normal - particularly the first time you run Family Purge against a content drop you didn't curate yourself. Revit's reload pipeline emits warnings for duplicate type names, missing references, and a long tail of other conditions that are usually safe to dismiss. Spot-check the log; if anything looks load-bearing, untick "Suppress warnings" on Settings and re-run to see the dialogs.
Licence won't activate
Licence keys validate against api.autom8labs.io. If activation fails:
- Check that your firewall or VPN is not blocking outbound HTTPS to
api.autom8labs.io - Verify the licence key character-for-character (keys are case-sensitive)
- If you are moving the licence between machines, deactivate it on the old machine first
- Still stuck? Email info@autom8labs.io with the key and the machine name
Pause / Resume buttons feel unresponsive
Pause, Resume, and Cancel only take effect at the next family boundary - the current family always finishes cleanly. Interrupting mid-transaction would corrupt the .rfa output, so the loop intentionally waits.
Need Help?
Can't find what you're looking for? Email info@autom8labs.io for support.
Contact Support