Bulk rename IFC elements online
Rename matching elements in bulk by applying a name pattern with tokens like {class}, {storey} and {index} — or any IFC attribute or property-set value. Standardise naming across a whole model without opening a BIM authoring tool.
Rename every matching element in an IFC model at once, in your browser — build a name pattern from tokens like {class}, {storey} and {index}, preview exactly what will change, then apply it. No desktop BIM software, no scripting, no plugin.
Renaming is the unglamorous half of nearly every naming-convention problem. A consultant delivers a model where every wall is called "Basic Wall", a project BEP requires "ZONE-LEVEL-TYPE-NNN", or a drawing register needs element names that match its tags. Doing that by hand is thousands of clicks in an authoring tool; doing it here is one pattern and one run.
When to reach for it: When you need to impose a consistent naming convention on a large set of elements before exporting to a spreadsheet or linking to an asset register. Useful after a merge step where discipline models used different naming schemes.
What you get: An IFC file with the Name attribute updated on every matched element. Existing property sets and GUIDs are unchanged.
Example: Rename all IfcBeam elements to 'BEAM-{index}' so they match a drawing register before exporting to CSV.
Build the name from tokens
A pattern is plain text with tokens in braces. Everything outside the braces is kept literally, so you can mix fixed prefixes with values read from the model.
- {class} — the IFC class, e.g. IfcWall, IfcBeam
- {storey} — the containing building storey's name
- {index} — a sequential counter, so names stay unique
- {name} and {type} — the element's existing name and its type object
- {guid} — the element's GlobalId, when you need a name that is provably unique
- {attr:Description} — any IFC attribute by name
- {param:Pset_WallCommon.FireRating} — any property-set value, so the name can carry real data rather than a guess
Target only what you mean to rename
Renaming the wrong elements is worse than not renaming at all, because the original names are gone. Targets are therefore explicit: pick IFC classes, or narrow to a specific selection, and the run touches nothing else.
Multiple rules run in one pass, each with its own pattern and its own target — so beams, columns and walls can each get their own convention without three separate runs over the same file.
Preview before you commit
Preview mode reports what every matched element would be called without writing anything, as a list you can read through. That matters most on the patterns most worth running — a {param:…} token silently produces empty text when the property is missing, and a preview shows you that before it becomes 400 elements named "WALL--".
Where renaming fits in a delivery workflow
Naming is usually checked, not fixed. Run the element-name validator first to see which elements breach the convention, rename them here, then re-run the validator to confirm the model passes. That check-then-fix loop is the point: a check that ends in a list you cannot act on is only half a tool.
If names feed a schedule or a drawing register, extract the properties to Excel afterwards so the register and the model agree — the names in the spreadsheet are the names you just applied.
What it does not do
This renames elements — the Name attribute on IFC objects. It does not rename property sets or their parameters (use the property editor for that), and it does not rename storeys or spatial containers. It also cannot be undone from inside the tool: the output is a new file, so keep the original until you have checked the result.
How bulk rename ifc elements works
- Upload your IFC file
- Build the pattern using tokens — bare ({class}, {storey}, {index}, {name}, {type}, {guid}) or parameterised ({attr:Description}, {param:Pset_WallCommon.FireRating}) so you can reuse any IFC attribute or property-set value
- Optionally restrict the rename to specific IFC classes (e.g. IfcBeam, IfcWall), or add more rules so each class gets its own convention
- Preview the result to check the names before anything is written
- Run it — every matched element gets the new name — and download the IFC
Under the hood
BIMCamel parses IFC files in the browser using the open-source web-ifc engine and renders models with @thatopen/components + three.js. Heavy operations (clean / optimise / validate / convert) run on disposable server-side workers using the same web-ifc stack plus our own .NET pipeline; results stream back to your browser as soon as they're ready. Uploads sit on our servers only as long as your tier's retention window allows and are never used to train AI.
Frequently asked questions
Can I rename only some elements of a class?
Yes. Rules target IFC classes or an explicit element selection, so you can rename the beams on one storey and leave the rest of the model untouched. Each rule carries its own pattern, and several rules run together in a single pass.
Will the renamed names stay unique?
Include {index} and every element in that rule gets its own sequential number. {guid} is available when you need uniqueness guaranteed by the model itself rather than by a counter. Without either, a pattern like "{class}" will legitimately give every wall the same name — which is sometimes exactly what a convention asks for.
What happens if a property in my pattern is missing?
The token resolves to empty text rather than failing the run, which is why preview mode exists: it shows the resulting names for every matched element before anything is written, so a missing FireRating shows up as a visibly wrong name instead of as 400 quietly broken ones.
Does renaming change GlobalIds or break references?
No. Only the Name attribute is written. GlobalIds are untouched, so downstream tools that match elements by GUID — comparison, clash, BCF issues — still line up with the original model.
Can I undo a bulk rename?
Not from inside the tool. The run produces a new IFC file and leaves your upload as it was, so the original names survive in the source file — keep it until you have checked the output.