
If your Revit content library is growing, your naming convention is either saving you, or sabotaging you.
ISO-19650 does not name your Revit families. It names information containers. Your files.
Family naming sits under its companion standards: BS EN ISO-22014:2024, which no one's heard of...
It replaced BS-8541 in 2024, the NBS BIM Object Standard v2.2, and Uniclass 2015 for classification. Also, which no one knew existed.
Together, they give you a field-based convention that reads like data.
Every family is named three times.
The rules are blunt:
letters, numbers, hyphens and underscores only.
Underscore between fields, hyphen within a field. No spaces. No special characters. A name that makes sense on its own. Get this right, and your library stops being a junk drawer. It becomes structured data. Exactly what an AI agent, a pyRevit script or a coordinator needs to do anything useful with it.
This manual is each move, with worked examples.
Open any practice's family folder, and you can date the mess.
Door1.rfa. Door1_NEW.rfa. Copy of Copy of Door FINAL.rfa. 'Architects, you've seen this before...'.
A manufacturer download with a part number for a name. A light fitting somebody called `light`. Each one made sense to one person for one afternoon. Together, they're a library that's unusable. So you start from scratch on the next job.
A family is the smallest unit of information management you own. A correctly named family answers four questions before anyone opens it:
A wrongly named one asks those four questions instead. Your data needs to answer questions, not ask them.
Here's the part teams miss. The standard people quote for this is ISO-19650, which doesn't specify how to name a family.
It governs the naming of information 'containers' :
Family and object naming lives in a different set of standards that sit underneath it. Use the wrong one, or a withdrawn one, and you've built your library on a standard that no longer exists.
This manual fixes that. It covers:
It's matter-of-fact on purpose.
You should be able to hand it to a new starter and have them name content correctly by the end of the day.
Say it plainly, because it saves a lot of wasted effort: ISO-19650-2 names information containers, not objects inside them.
A container is a file:
The well-known field string
[Project]-[Originator]-[Volume]-[Level]-[Type]-[Role]-[Number] names 'that'.
It's explained fully here:
https://bimcopilot.com/blog/iso-19650-made-simple-bim-2026
'No one ever explained it better 😉'.
A Revit family is not a container in that sense. It's a piece of library content that lives inside your models and your library. ISO-19650 sets the principles. Structured-Field-based-Self-describing-Classified. But the convention for naming the object itself comes from its companion standards.
There are three that matter in 2026, and a practice should know which does what.
Standard | What it governs | Status in 2026 |
|---|---|---|
BS EN ISO 22014:2024 | Identification, naming and classification of library objects | Current. Replaced BS 8541 in May 2024. |
NBS BIM Object Standard v2.2 | Information, geometry, behaviour and naming of BIM objects | Current (July 2023). The UK de facto object standard. |
Uniclass 2015 | Classification of products, systems and more | Current. Updated quarterly — Products table at v1.42, April 2026. |
ISO-19650 is the umbrella.
These three are how you name and classify the things underneath it.
Here’s the system:
[Category]_[Function]_[Descriptor]_[Host/Placement]_[Manufacturer/Std]
(last segment optional)
Examples
Door_Single_SolidCore_WallHosted_GenericWindow_Fixed_ThermalBreak_WallHosted_GenericCasework_BaseCabinet_2Door_FloorBased_GenericFurniture_Desk_Workstation_Freestanding_Generic
Why this works
Two changes catch practices out. Both are about building on something that isn't current.
BS 8541 is gone. For a decade, UK object naming pointed at BS-8541.
The library object standard, in several parts. As of May 2024 it was superseded by BS EN ISO-22014:2024, which is identical to ISO-22014:2024 and consolidates the old multi-part British standard into one international standard.
If your practice template still cites BS-8541, it cites a withdrawn document. The naming logic carried over, but the reference changed.
ISO-22014 keeps the field idea: a library object is named from Source, Type and Subtype, separated by underscores, with the Type and Subtype drawn from IFC (BS EN ISO 16739-1). So `NBL_LightFixture_CeilingPendant` reads as 'source NBL, an IfcLightFixture, ceiling-pendant subtype'.
Searchable by source, by type, or down to the exact object.
I know this gets confusing. But stay with me.
The NBS BIM Object Standard is still alive, and more granular. NBS keeps its own object standard, now at v2.2 (July 2023), and every object in the NBS National BIM Library within NBS Source is certified against it. Its file-and-object name carries five fields:
```
[Role]_[Source]_[Type]_[Subtype/ProductCode]_[Differentiator]
```
Classify with Uniclass 2015:
Twelve tables, maintained by NBS, updated every quarter.
For families you mostly use the Products table (Pr) and the Systems table (Ss). The code rides on the family as a parameter, not in the name. It's what lets software join your family to a specification or a cost plan.
A practice should pick a lane and write it into the BEP:
ISO-22014 as the international baseline, the NBS standard where you want manufacturer-grade rigour, Uniclass on everything. Then never deviate.
Type names are where most teams get chaotic:
sizes, materials, ratings, and options get mixed randomly.
[Size]_[Material/Finish]_[Performance]_[Option]
Keep it consistent, and don’t include what you can schedule from parameters.
Examples
0900x2100_PaintGrade_FD60_Acoustic1500x1200_Alu_Thermal_UValue1p41600x800_Laminate_CableTray_YESPro tip: if a parameter already exists (e.g., Fire Rating), don’t duplicate it in the name unless your team depends on name-based search. Duplicate data increases drift.
If you have many types, consider a Type Catalog workflow so the same family can be loaded with consistent type definitions. Autodesk specifically documents type catalogs as a method for managing families with many types.
Before any field syntax, the alphabet. These rules are the same across ISO-22014, the NBS standard and ISO-19650, and they exist so software never trips over a name.
A name that obeys these is one a person can read and a machine can parse.
A name that breaks them is a bug in the code.
Most teams name the family file and stop.
That's one of three layers, and the other two are where the data actually lives.
Get all three right and a family is legible top to bottom: a human reads the name, a scheduler reads the type, a machine reads the data. Get only the first and you've labelled a box without saying what's inside it.
The next three sections take each layer in turn, threading one imaginary family. An internal doorset, through all of them.
Use the NBS five-field string as the working convention.
It's the most complete, and it collapses to the ISO-22014 three-field version when you need it.
```
[Role]_[Source]_[Type]_[Subtype]_[Differentiator]
```
Role - the discipline that owns the object.
Keep these consistent with your ISO-19650 role codes so the whole project speaks one language:
Code | Discipline |
|---|---|
A | Architecture |
S | Structural |
M | Mechanical |
E | Electrical |
P | Public Health / Plumbing |
C | Civil |
L | Landscape |
X | General / Multi-discipline |
Source - where it came from. A manufacturer name for product content (`Lumora`, `Geberit`), or your practice library code for generic content (`BIMCP`). Pick one code per source and never spell it two ways.
Type - the kind of object, taken from IFC. `Door`, `Doorset`, `Luminaire`, `Window`, `Wall`. This is the field that lets someone pull every object of a type in one query.
Subtype - the variant that the Type alone doesn't capture. `InternalSingle`, `RecessedLED`, `CavitySliding`. CamelCase, no spaces.
Differentiator - distinguishing dimensional or descriptive information 'with its unit', where the family needs it at file level. Often you leave this off the file name and let the types carry size. One family, many sizes. This keeps the library tidy.
Worked example - an architect's internal doorset:
```
A_BIMCP_Doorset_InternalSingle.rfa
```
Decoded:
The ISO-22014 three-field form of the same object drops the role and the library prefix:
```
BIMCP_Doorset_InternalSingleLeaf
```
One family file. Sizes come next, as types.
Not as twelve near-identical files.
Inside that one doorset family sit every size and fire rating you offer.
Each is a type, and a type name has to decode on its own, because it's what lands in a door schedule.
A reliable pattern is descriptive fields, fixed order, zero-padded numbers:
```
Type_Subtype_WidthxHeight_Variant
```
Worked example — types inside `A_BIMCP_Doorset_InternalSingle`:
Type name | Reads as |
|---|---|
Doorset_InternalSingle_0826x2040_FD30 | 826 × 2040 mm structural opening, 30-minute fire rating |
Doorset_InternalSingle_0926x2040_FD30 | 926 × 2040 mm, 30-minute |
Doorset_InternalSingle_0926x2040_FD60 | 926 × 2040 mm, 60-minute |
Three working rules for type names:
For families with a large size matrix — frames, structural sections, fixings — drive the types from a type catalogue (a `.txt` file alongside the `.rfa`) rather than loading hundreds of types into every model. It loads faster, keeps the file light, and stops one-off types breeding inside projects.
The name identifies the family. The category, subcategory and parameters are what make it behave and what make it data.
Parameter | Value |
|---|---|
Fire_Rating | FD30 |
Acoustic_Rating_dB | 32 |
Finish | FIN-A |
Classification_Uniclass_Pr | Pr_30_59_24` (Doorsets) |
IfcExportAs | IfcDoor |
A note from the NBS standard worth copying: suffix material parameters with `_mtrl` so every material reads consistently and a script can find them. Small rule, large payoff at audit time.
That `Classification_Uniclass_Pr` value is the quiet hero. `Pr_30_59_24` is a globally consistent code for 'doorset'. With it on the family, software can join your door to its specification clause, its cost line and its embodied-carbon figure — without anyone reading the name at all. That's the line between a label and data.
Naming reads best as a finished thing. Here are two imaginary families, named through all three layers — one architectural, one a manufacturer product.
Family A — Internal single doorset (architecture, library content)
Layer | Value |
|---|---|
File name (NBS) | A_BIMCP_Doorset_InternalSingle.rfa |
File name (ISO 22014) | BIMCP_Doorset_InternalSingleLeaf |
Category | Doors |
Subcategories | Panel, Frame, Glass, Ironmongery |
Example types | Doorset_InternalSingle_0826x2040_FD30, Doorset_InternalSingle_0926x2040_FD60 |
Classification | Pr_30_59_24` — Doorsets |
IFC export | IfcDoor |
Family B — Recessed LED panel luminaire (electrical, manufacturer product)
Layer | Value |
|---|---|
File name (NBS) | E_Lumora_Luminaire_RecessedLED.rfa |
File name (ISO 22014) | Lumora_LightFixture_CeilingRecessed |
Category | Lighting Fixtures |
Subcategories | Light Source, Housing, Trim |
Example types | Luminaire_RecessedLED_0600x0600_4000K, Luminaire_RecessedLED_1200x0300_3000K |
Classification | Pr_70_70_48_45` — LED light panels |
IFC export | IfcLightFixture |
Read either table top to bottom and there's nothing left to ask. The file says what and who. The types say which size and which variant. The category and classification say how it behaves and how a machine should treat it. That is a family named to standard. It took no longer than naming it badly would have.
Here's the part that changed.
Naming used to be about helping the next human find the file. It's now about whether software can use your library at all.
A name is only data if it's structured. `Door1_FINAL` carries nothing a machine can act on. It's a string a person has to interpret. `A_BIMCP_Doorset_InternalSingle` carries meaning in fixed positions. A script tokenises on the underscore and reads four facts: discipline `A`, source `BIMCP`, type `Doorset`, subtype `InternalSingle`. No file opened. No human asked.
That single property. Predictability, is what every layer of automation is built on:
The rule underneath all of it: AI amplifies whatever order or disorder it finds. A consistent, classified library is training-grade, query-ready data. The model grounds itself in facts.
An inconsistent one is noise the model has to reason through, and it reasons wrong. Naming is no longer housekeeping you do when there's time. It's the data-preparation step that decides whether automation helps you or hallucinates at you. We go deeper on the scripting side in the:
pyRevit field manual - https://bimcopilot.com/blog/pyrevit-automation-where-to-start.
A convention that lives in a PDF and dies in practice is worth nothing.
The naming holds only if the library around it is organised to protect it.
A library organised this way compounds. Every project draws from clean content and returns clean content. A library left to organise itself decays into the junk drawer you opened this manual to escape.
The mistakes are predictable, which means they're preventable.
Before a family enters the library or the model, run it against this:
If you can't tick every box, it isn't ready to publish.
Does ISO 19650 specify a Revit family naming convention?
No. ISO 19650-2 names information 'containers'. Your files. Family and object naming lives in its companion standards: BS EN ISO 22014:2024, the NBS BIM Object Standard, and Uniclass 2015 for classification. ISO-19650 sets the principles; those standards set the family convention.
BS 8541 or ISO 22014 — which do I follow?
ISO-22014. BS EN ISO 22014:2024 superseded BS 8541 in May 2024. If your template still cites BS 8541, update the reference — it points at a withdrawn standard.
What's the difference between the file name and the type name?
The file name identifies the family (`A_BIMCP_Doorset_InternalSingle`). The type name identifies the variant inside it (`Doorset_InternalSingle_0926x2040_FD30`). One family holds many types. Both must decode on their own.
Where does the Uniclass code go — in the name?
No. The classification rides on the family as a parameter, not in the name. The name is for humans; the code is for machines. Keep them in separate places doing separate jobs.
Should I rename families I download from manufacturers?
Yes. to your register, on the way into the library. A manufacturer part number is meaningful to the manufacturer and to no one else on your project. Rename, reclassify, then publish.
Do I still need the NBS BIM Object Standard if I follow ISO-22014?
They sit together. ISO-22014 is the international baseline. The NBS standard is more granular on parameters, geometry and presentation, and is the UK benchmark for certified content. Many practices follow ISO-22014 for structure and the NBS standard for object quality.
How exactly does good naming help AI?
A structured name is data a machine can parse without opening the file; a free-text name is a string it has to guess at. Consistent names and classification let scripts audit, schedule and swap families in bulk, and let AI agents query the library reliably. Inconsistent names force the tools to guess. A guess in a model is an error.
The Bimcopilot Family Naming Register
gives your practice the whole system in one place: role and source codes, the type-name syntax, the parameter register, Uniclass mappings, and a pre-load checklist your team can follow. One source of truth, referenced by your BEP, instead of a convention that lives in someone's head.
Prefer it built around your library?
The Bimcopilot Library Audit takes your existing families, renames and reclassifies them to standard, strips the duplicates, and hands back a clean, machine-readable library. Wired so the next download arrives named correctly and your automation has clean data to run on.
A library a machine can read is a library that works for you. Let's build yours.
→ Talk to BIMcopilot about your family library https://www.bimcopilot.com
A family name is the smallest piece of information management in the whole project, and the one most practices never standardise.
Done right, it's invisible and total. The file says what the object is and who owns it. The types say which size and which variant. The category and the Uniclass code say how it behaves and how every downstream tool should treat it. A human reads it in a second. A machine reads it without reading it at all. The library stops being rebuilt every job and starts compounding.
The standards are settled for 2026: ISO-22014 for the object, the NBS standard for the rigour, Uniclass for the classification, all under the ISO-19650 umbrella. The rules are short. The codes are published. The only thing missing in most practices is the decision to apply them the same way every time.
Make that decision once, write it into one register, and enforce it at one gate. Your families become legible to people, to software, and to the AI that's about to do the tedious half of your job. But only if it can read your library. Name them so it can.
That's it.