A parameter is a field of information attached to an element: wall thickness, column base level, element code, comments. Revit has five kinds, and they differ in who creates them, where they are stored, and whether they can appear in schedules and tags. This article compares revit parameter types in Revit 2027: Built-in, Project, Shared, Family and Global, with a chart for choosing the right one.
Choosing wrongly means redoing work later: creating a project parameter and then discovering it cannot appear in a tag, or creating a new parameter that duplicates one Revit already has. For guided training, see the Learn Revit course.
What a Revit parameter is: instance vs type
Every parameter sits at one of two levels:
- Instance: a separate value for each element, edited in the Properties palette when the element is selected. Examples: Mark, Comments, Base Offset of a wall.
- Type: one value shared by every element of that type, edited in Type Properties via Edit Type. Examples: thickness and Function of the Generic - 200mm Masonry wall type. Change it once and every wall of that type follows.
When you create your own parameter, of any of the four user-created kinds: if each element needs its own value, such as an element code or construction phase, choose instance. If all elements of a type share a value, such as a product code or manufacturer, choose type.
The five parameter types compared
| Built-in | Project | Shared | Family | Global | |
|---|---|---|---|---|---|
| Created by | Revit | User, in the project | User, in a .txt file | User, in the family | User, in the project |
| In schedules | Yes | Yes | Yes | No | Not directly |
| In tags | Yes | No | Yes | No | No |
| Shared across projects, families | Present in every file | No | Yes | No | No |
| Rename, delete | No | Rename and delete; Data Type and Instance/Type locked | Remove from a project, not rename | Yes, in the family | Yes |
| Instance/type | Yes | Yes | Yes | Yes | No |
The Parameter Properties dialog in Revit 2027 states it most compactly. Project parameter: "Can appear in schedules but not in tags". Family parameter: "Cannot appear in schedules or tags". Shared parameter: "Can be shared by multiple projects and families, exported to ODBC, and appear in schedules and tags".
A global parameter belongs to no category, so it has no column in a schedule. To show its value in a schedule, associate it with an element parameter and schedule that parameter.
Built-in parameters: what Revit already has
Built-in parameters are created by Revit for each category: Mark, Comments, Level, Base Constraint, Area, Volume, Length, Type Mark. You cannot delete or rename them, and they exist in every project. Some are read-only because Revit computes them, such as a wall's Area, Volume and Length.
Built-in parameters are not listed under Manage › Project Parameters. That list only holds parameters users added; the Revit 2027 Metric Multi-discipline template ships with 14, such as Ceiling Height, Finish and Sheet Group.
Before creating a parameter, check whether Revit already has it. A common mistake is a project parameter called Notes when Comments already exists, leaving two schedule columns doing the same job.
Built-in parameters in Dynamo and the Revit API
Names in the Properties palette change with the interface language, so scripts that rely on names break on a machine running Revit in another language. The Revit API therefore addresses built-in parameters by fixed BuiltInParameter values:
| Interface name | BuiltInParameter | ParameterTypeId (Revit 2027) |
|---|---|---|
| Mark | ALL_MODEL_MARK | autodesk.revit.parameter:doorNumber-1.0.0 |
| Comments | ALL_MODEL_INSTANCE_COMMENTS | autodesk.revit.parameter:allModelInstanceComments-1.0.1 |
| Base Constraint (walls) | WALL_BASE_CONSTRAINT | autodesk.revit.parameter:wallBaseConstraint-2.0.0 |
| Volume | HOST_VOLUME_COMPUTED | autodesk.revit.parameter:hostVolumeComputed-1.0.0 |
| Area | HOST_AREA_COMPUTED | autodesk.revit.parameter:hostAreaComputed-1.0.0 |
| Length | CURVE_ELEM_LENGTH | autodesk.revit.parameter:curveElemLength-1.0.1 |
# Python in Dynamo or pyRevit: read Mark and Comments of an element
mark = e.get_Parameter(BuiltInParameter.ALL_MODEL_MARK).AsString()
comments = e.get_Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS).AsString()
Two traps. First, Mark's ParameterTypeId is named doorNumber for historical reasons, even though Mark exists in every category. Second, structural columns have two parameters called Base Level: FAMILY_BASE_LEVEL_PARAM and SCHEDULE_BASE_LEVEL_PARAM. Looking it up by name with LookupParameter("Base Level") may return the wrong one; BuiltInParameter does not. For structured Revit programming, see the Revit API programming course and what the Revit API is.
Project parameter revit: a parameter for one project
A project parameter adds a field to one or more categories in one project, for scheduling, filtering and sorting. According to Autodesk: Create or Modify Project Parameters:
- Go to Manage › Settings › Project Parameters.
- Click New Parameter (the second icon at the bottom).
- In Parameter Properties, choose Project parameter.
- Enter a name. Autodesk advises against dashes (-) in parameter names.
- Pick Discipline, Data Type and Group parameter under, then Type or Instance.
- Tick the categories in the Categories column and click OK.
After creation, Modify (the pencil icon) only lets you change the name, the display group and the categories. Discipline, Data Type, Type/Instance and the Project/Shared choice are locked, so get them right the first time.
The key limitation: a project parameter cannot appear in a tag. A tag is a separate family and can only read parameters it also knows, meaning built-in or shared ones. A project parameter exists only in the project, so the tag cannot see it. If the value must appear in a tag, use a shared parameter from the start.
To reuse project parameters on the next job, put them in the office template; see Revit templates.
Shared parameters: for tags and reuse
A shared parameter's definition lives in a .txt file outside any project or family, and each parameter carries a GUID. That lets it do three things a project parameter cannot:
- Appear in tags: the tag family and the project read the same definition with the same GUID.
- Stay consistent across projects and families: one company .txt file gives every project the same names and data types.
- Feed multi-category schedules and ODBC export.
The cost: name and data type cannot be changed after creation, and the .txt file must be managed carefully. The full workflow, from creating the file to schedules, tags and the Vietnamese-text font issue, is in Revit shared parameters.
Family parameter revit: parameters inside a family
Family parameters are created in the Family Editor and drive a family's shape and materials: width b and depth h of a column, the leaf width of a door. Open them with Family Types on the Properties panel of the Create tab.
Once the family is loaded, family parameters show in Properties or Type Properties and can be edited. But they cannot appear in schedules or tags. The schedulable field list for structural columns in Revit 2027 has no b or h. To schedule column sizes, create b and h as shared parameters inside the family.
Families can also have reporting parameters, which read a value from geometry, such as the distance between two reference planes, for use in formulas. Building parametric families with formulas and reference planes is covered in how to create a family in Revit.
Global parameter revit: one value driving many elements
A global parameter is created in a project, belongs to no category and has no instance or type. According to Autodesk: Global Parameters, it controls many parameters at once: grid spacing, a fixed clearance, a common material, or the label of a dimension.
Example: create a global parameter Cot_b = 300 and associate it with the b parameter of the 300×450 column type.
- Go to Manage › Settings › Global Parameters, click New Global Parameter, name it Cot_b, Data Type Length, value 300.
- Select a column and click Edit Type.
- On the b row, click the = button at the end (Associate Global Parameter), pick Cot_b and click OK.
Change Cot_b to 350 and b of every column of that type becomes 350; the volume of a 3.6 m column rises to 0.35 × 0.45 × 3.6 = 0.567 m³.
Not every parameter can be associated. Autodesk notes that only a selection of system parameters is available. In Revit 2027, walls allow Base Offset but not Unconnected Height. Structural columns allow Base Offset, Top Offset and the type parameters b and h.
Which parameter type should you use?
Three common cases:
- An element code that must show in tags and schedules: shared parameter, instance.
- An internal note used only to filter and sort in one project: project parameter.
- All typical-floor columns share one size that may change later: a global parameter associated with the column type parameters.
Common problems
| Symptom | Cause | Fix |
|---|---|---|
| Parameter missing from a tag's Edit Label | It is a project or family parameter | Recreate it as a shared parameter |
| Column b, h missing when scheduling | b and h are family parameters | Edit the family and make b, h shared parameters |
| Two schedule columns meaning the same | A new parameter duplicates a built-in one, such as Notes vs Comments | Use the built-in parameter and delete the extra |
| A Dynamo script works on one machine but not another | Parameters looked up by display name, which changes with language | Use BuiltInParameter |
| A global parameter cannot be associated | The system parameter is not eligible, or the data type differs | Choose another parameter, or create a global parameter of the right Data Type |
| A parameter field is grey and locked | It is driven by a global parameter, or computed by Revit | Edit the global parameter value, or remove the association with the = button |
FAQ
What is the difference between a project parameter and a shared parameter?
Both add a field to elements and both reach schedules. A shared parameter's definition lives in a .txt file with a GUID, so it can appear in tags and be reused across projects. A project parameter lives in one project and cannot be tagged.
Can a project parameter be converted to a shared parameter?
Not directly: in the Modify dialog the Project/Shared choice is locked. Create a new shared parameter, copy the values across, then delete the old project parameter. For many elements, copy the values with Dynamo.
Do global parameters appear in schedules?
Not directly. Schedules only show element parameters. Associate the global parameter with an element parameter, then schedule that parameter.
Can I see a parameter's BuiltInParameter name without programming?
Use an add-in such as RevitLookup. Free add-ins are listed in Revit add-ins.
In short, revit parameter types are Built-in (provided by Revit), Project (one project), Shared (tags and reuse), Family (shape inside a family) and Global (one value driving many elements). Before creating a parameter, ask: does Revit already have it, must it appear in a tag, and will other projects use it?