Show Room Occupancy Loads in Revit Schedule

Working with building codes is an important aspect of working as an Architect during the design stages of a project, and knowing the occupancy of each room is a key component to that.  This article will demonstrate how to create a Revit schedule that shows the occupancy load for each room in your BIM file.  It will use a key schedule as the source of information for calculating loads, so this article will address creating that key schedule as well.

There are a few steps involved in the process.

Step 1 – Set Up Parameters

Create the following Shared Parameters in your company’s shared parameters file:

  • Occupancy Load Tag Value
    • Type of Parameter = Integer
  • Non Calculated Room Area
    • Type of Parameter = Area

Add the 2 above parameters and the following 2 parameters as Project Parameters and assign to the Rooms category as Instance-based.  Go to the Manage tab and select Project Parameters from the Settings panel to add them to the project.

  • Area Per Occupant
    • Type of Parameter = Area
  • Occupancy Gross or Net
    • Type of Parameter = Text

Step 2 – Create a Key Schedule

Initiate the Schedule command from the View tab.  Create a key schedule based on the Room category named Space Occupancy Classification with the key name of Classification.

Add the following previously created Instance-based project parameters to the key schedule:

  • Area Per Occupant
  • Occupancy Gross or Net

Add the classification information to the Key Schedule for the each of the classifications listed in the code.  (The International Building Code is used as an example.)

Step 3 – Create an Occupancy Schedule

Create a schedule based upon the Room category named Occupancy Schedule with the following Instance-based parameters:

  • Name
  • Number
  • Area
  • Non Calculated Room Area
    • This is for any area that should not be calculated as part of the room, such as casework.  Manually entered to maintain integrity of Room object throughout room and working with MEP Space object for room.
  • Net Room Area
    • Calculated Area type parameter with formula:
      • (Area – Non Calculated Room Area)
  • Area Per Occupant
  • Occupancy Classification
  • Occupancy Load Calculated
    • Calculated Integer type parameter with formula:
      • (Net Room Area / Area Per Occupant) + 0.499
      • 0.499 ensures that the value is rounded up to the nearest whole number
  • Occupancy Load Tag Value
  • Occupancy Load Equal Test
    • Calculated type parameter with formula:
      • Occupancy Load Calculated = Occupancy Load Tag Value
    • Parameter type:  Yes/No

In the Sorting/Grouping tab, sort the schedule based upon the Number parameter and turn on Itemize every instance. Turn on Grand totals and set the option to “Title and totals”.

In the Formatting tab, checkmark the “Calculate totals” option for the Occupancy Load Calculated and Occupancy Load Tag Value parameters.  This will give you occupancy load totals at the bottom of the schedule.

The rooms will need to have some value placed in the Non Calculated Room Area parameter for the calculations to work properly, even if the value is zero.

Unfortunately, since schedule calculated values cannot be added to tags, you will not be able use the Occupant Load Calculated value in a tag if that is desired.  Hence, a workaround is required, so we will use a parameter that can be used in a tag, if one is desired.  (If a tag is not desired, then the Occupancy Load Tag Value and Occupancy Load Equal Test parameters are not needed and the following steps can can ignored.)

The Occupancy Load Tag Value parameter that was added to the schedule is a parameter that can appear in tags.  The problem is that it is a parameter that requires manually entered values and requires the user to type in values that match the Occupant Load Calculated values, which is error prone.  To help with reducing errors, we will flag any rooms where those 2 parameters do not match.

The Occupancy Load Equal Test parameter that was added earlier will automatically say Yes or No as to whether those 2 values match.  Since it is easy to lose track of which rooms have Yes or No values, we will make a conditional format to show that cell in red if it is No.

This effectively flags a room in red if the calculated room occupancy value does not match the manually entered room occupancy value.


  • The built-in Occupancy parameter is a text parameter and not helpful in this process.
  • Revit 2013 changed the conditional format function so that you cannot use a different parameter to control the format of a parameter.  Prior to 2013, you could apply the above conditional format to the Occupancy Load Tag Value and the Occupancy Load Calculated parameters and have them appear red.  That does not work with 2013.
  • A tag can now be created that uses the Occupancy Load Tag Value, if desired.

19 thoughts on “Show Room Occupancy Loads in Revit Schedule

  1. Pingback: Room Occupancy Load Tag in Revit View | Applying Technology to Architecture

  2. I think this is a great tutorial because I had made a work around as well…and yours seems to be even better, but I am having trouble with a step and I thought you might have an insight. I have made the shared parameters and have also loaded them in as project parameters but when i make a key schedule and try to add parameters in; it does not allow me to access the shared parameters (it is greyed out) and I would then have to recreate the project parameter- which then shows up twice in the list….HELP. Any thoughts would be great. thanks

    • My mistake. Shared parameters cannot be used in a key schedule, so the parameter needs to just be a project parameter and does not need to be added to the shared parametes file.

  3. Thanks for this article – great explanation.

    Quick question though: From what you are describing on point #2, it seems that it is possible to use shared parameters in key schedules since Revit 2013, right?
    Because this was still a problem in Revit 2012 (this is what I am still working with). That would be a huge progress!


    • My mistake. Shared parameters cannot be used in a key schedule, so the parameter needs to just be a project parameter.

  4. Thank you for providing this very informative tutorial, as well as the room tag tutorial. I have a question that pertains to both: My firm (recent Revit converts) wants a room tag that shows:
    – floor area
    – allowable area per occupant (per table 1004.1.1)
    – total occupant load
    The only way I can figure to show the allowable area per occupant in the room tag is to create an area per occupant tag value in the schedule (similar to occupancy load tag value), and then include another equal test to make sure it is current. Is this the only way to do that, or am I missing something?

    Thanks again

    • TR, you are correct and are not missing something. You need a shared parameter for a tag and shared parameters cannot be used in key schedules (which is where the allowable area per occupant parameter is located). Nor can calculated value parameters be used in a tag.
      I am glad that the article is helpful to you.

  5. I am stuck on the second step where you say to add the classification information. The schedule doesn’t have the Classification column so I can’t name each one (though each row does show up as 1, 2, etc. in the parameters of the room.) How do I get this column to show up?

    • The Classification column is automatically added when you create the key schedule. In the first part of Step 2, you create the key schedule and specify a “Key Name” as shown in the image. I gave the Key Name a name of “Classification”, which created the Classification column in the schedule. If you do not specify a different name, the key name will default to something like “Room Style” which is what will show up as a column in your key schedule. The specified key name will always shown up as a column in your key schedule.

  6. I have created the tag as described, along with an associated room schedule, It works great most of the time, but sometimes the data does not show up in the tag. Only the occupant load appears when anything shows, and the occupancy type does not appear ever. Do you have any suggestions?

    • Charles,

      Revit does not allow you to use anything from a key schedule in a tag. Since the Occupancy Classification parameter is part of the key schedule, it cannot be used in a tag. I assume that you are using the Occupancy Load Tag Value parameter in your tag. It should always show the value if one has been manually entered into that parameter.


    • Jeff,

      I am not sure where things went wrong in your situation. Since nothing at all shows up in the schedule, it sounds like a possibility might be that the Rooms category did not get selected for the schedule (Step 1). Also, make sure that Room objects have been placed in the project file, since nothing will show up in the schedule if no Rooms exist.

  7. Doug thank you for this. I got it working based on your tutorial then even went a step further and got Fixed Seating areas to work by adding a fixed seating yes no parameter to the Key schedule, then changing the Occupancy Load Calculated to:

    if(Fixed Seating State, Fixed Seating, (Net Room Area / Area Per Occupant + 499))

    Fixed Seating State is the yes/no parameter and Fixed Seating is the value entered into the schedule.

  8. how or where do you “Add the classification information to the Key Schedule for the each of the classifications listed in the code. (The International Building Code is used as an example.)” ? thanks for this but i’m stuck.

    • Step 2 shows how to create the Key Schedule. After you pick the OK button in creating the Key Schedule, you will have an empty schedule. Go into each cell of that empty schedule and add the pertinent information. The information shown in the image is taken directly from a table in the UBC.

  9. Since Revit no longer allows formatting of a parameter based on another parameter is there another way to create a quick visual test to evaluate Calculated Occupancy vs. Occupancy Load Tag Value?

    • Zac, I believe that the latter portion of the article describes what you are asking, as do the notes at the bottom concerning this issue. That is the portion that describes needing to create a Yes/No parameter to address the change.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s