{
  "generated": "npm run build:rules",
  "site": "https://counttooling.com",
  "usedByLabels": {
    "bidCheck": "Bid Check",
    "childCount": "Child counts",
    "chain": "Chain tool",
    "ductSchedule": "Duct Schedule",
    "roomSizer": "Room Sizer",
    "quickCreate": "Quick creator",
    "waterSchedule": "Water Sizing",
    "course": "Courses"
  },
  "rules": [
    {
      "id": "elec.conductor.ampacity",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Conductor ampacity",
      "summary": "The current a conductor may carry, read from the ampacity table in the column its terminals allow: #3/0 copper carries 200 A at 75 °C, which is why a 200 A feeder is #3/0.",
      "values": [
        {
          "when": "#3/0 copper THHN, read in the 75 °C terminal column",
          "value": 200,
          "unit": "A"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "310.16 (Table 310.15(B)(16) in 2017)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/conductor-ampacity/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.conduit.fill-limit",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Conduit fill limits",
      "summary": "How much of a raceway's inside area conductors may fill — 53% for one, 31% for two, 40% for three or more.",
      "values": [
        {
          "when": "1 conductor",
          "value": 53,
          "unit": "%"
        },
        {
          "when": "2 conductors",
          "value": 31,
          "unit": "%"
        },
        {
          "when": "3 or more conductors",
          "value": 40,
          "unit": "%"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "Chapter 9, Table 1",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "bidCheck"
      ],
      "url": "/rules/electrical/conduit-fill/",
      "updated": "2026-09-09"
    },
    {
      "id": "elec.disconnect.within-sight",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Disconnect within sight of the unit",
      "summary": "Air-conditioning and refrigeration equipment gets a disconnect within sight of it and readily reached, so the rooftop unit's circuit ends in a disconnect on the roof.",
      "values": [
        {
          "when": "air-conditioning or refrigerating equipment, the rooftop unit",
          "value": "a disconnect within sight of the unit, readily accessible",
          "unit": ""
        }
      ],
      "source": {
        "code": "NEC",
        "section": "440.14",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/disconnect-within-sight/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.egress.illumination",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Means of egress illumination on emergency power",
      "summary": "The building code's side of the exit lights: the path out stays lit on emergency power for 90 minutes when the normal power fails.",
      "values": [
        {
          "when": "egress path lighting on emergency power, light with the power out",
          "value": 90,
          "unit": "min"
        }
      ],
      "source": {
        "code": "IBC",
        "section": "1008.3.4",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/egress-illumination/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.ground.electrode-conductor",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Grounding electrode conductor size",
      "summary": "The conductor from the service to the water pipe and the ground rods is sized from the service conductors, and #3/0 copper service conductors want a #4 copper grounding electrode conductor.",
      "values": [
        {
          "when": "copper service conductors #2/0 or #3/0, copper electrode conductor",
          "value": "#4",
          "unit": "AWG"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "250.66, Table 250.66",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/electrode-conductor-size/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.emergency.battery-duration",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Emergency lighting battery duration",
      "summary": "How long an emergency lighting source must carry its load with the normal power out, 90 minutes, which is why every exit sign and emergency light on a small job carries a battery.",
      "values": [
        {
          "when": "emergency lighting and exit signs, light with the power out (battery unit equipment)",
          "value": 90,
          "unit": "min"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "700.12 (unit equipment: 700.12(F) in 2017, (I) in 2020, (H) in 2023)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/emergency-battery-duration/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.emt.bends",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "EMT bends between pull points",
      "summary": "A run of EMT may turn no more than 360° in total between pull points, the equal of four quarter bends, so a run with more needs a box or conduit body in it.",
      "values": [
        {
          "when": "total of the bends in one run, box to box or pull point to pull point",
          "value": 360,
          "unit": "° of bends"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "358.26",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/emt-bends/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.emt.support",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "EMT support spacing",
      "summary": "Where EMT is strapped, within 3 ft of every box or termination and at least every 10 ft along the run, which is the strap count on a takeoff.",
      "values": [
        {
          "when": "from each box or other termination",
          "value": 3,
          "unit": "ft"
        },
        {
          "when": "between straps on the run",
          "value": 10,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "358.30(A)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/emt-support/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.ground.equipment-conductor",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Equipment grounding conductor size",
      "summary": "The ground that rides with a feeder is sized from the breaker ahead of it, not from the phase wires, and a 200 A breaker wants a #6 copper ground.",
      "values": [
        {
          "when": "overcurrent device rated 200 A, copper",
          "value": "#6",
          "unit": "AWG"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "250.122, Table 250.122",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/equipment-ground-size/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.circuit.fixed-equipment",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Circuits for fixed equipment",
      "summary": "The code limits what may share a branch circuit with equipment fastened in place, and the simple way to live within it is a circuit each, as the restaurant gives its dishwasher, pump and rooftop unit.",
      "values": [
        {
          "when": "equipment fastened in place, on a 15 or 20 A circuit that also feeds lights or plug-in loads",
          "value": "no more than half the circuit's rating",
          "unit": ""
        }
      ],
      "source": {
        "code": "NEC",
        "section": "210.23(B)(2) (210.23(A)(2) in 2017 and 2020)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/fixed-equipment-circuits/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.gfci.non-dwelling",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "GFCI protection, non-dwelling",
      "summary": "Where a commercial building's receptacles must be ground-fault protected, as the course counts them in a restaurant (restrooms, kitchens, food and beverage areas with a sink, within 6 ft of a sink), and the dishwasher's own GFCI.",
      "values": [
        {
          "when": "bathrooms and restrooms, 210.8(B)(1)",
          "value": "every receptacle",
          "unit": ""
        },
        {
          "when": "kitchens, 210.8(B)(2)",
          "value": "every receptacle",
          "unit": ""
        },
        {
          "when": "areas with a sink and food or beverage preparation or cooking, 210.8(B)(3) in 2023 (part of (B)(2) in 2020)",
          "value": "every receptacle",
          "unit": ""
        },
        {
          "when": "near a sink, from the top inside edge of the bowl, 210.8(B)(7) in 2023 ((B)(5) in 2017 and 2020)",
          "value": 6,
          "unit": "ft"
        },
        {
          "when": "a dishwasher, 150 V or less to ground and 60 A or less, 422.5(A)(7), 2020 on",
          "value": "GFCI protection for the appliance",
          "unit": ""
        }
      ],
      "source": {
        "code": "NEC",
        "section": "210.8(B); 422.5(A)(7) for the dishwasher",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/gfci-locations/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.hood.shunt-trip",
      "trade": "electrical",
      "kind": "standard",
      "status": "draft",
      "title": "Shunt trip on hood suppression",
      "summary": "When a kitchen hood's fire-suppression system fires, the electric power to the cooking equipment under it shuts off by itself, usually through a shunt-trip breaker wired to the system.",
      "values": [
        {
          "when": "the hood's fire-suppression system discharges",
          "value": "power to the cooking equipment under the hood shuts off automatically",
          "unit": ""
        }
      ],
      "source": {
        "code": "NFPA 96",
        "section": "10.4.1",
        "editions": [
          2017,
          2021,
          2024
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-96-standard-development/96"
      },
      "amendments": [],
      "used_by": [],
      "url": "/rules/electrical/hood-shunt-trip/",
      "updated": "2026-09-26"
    },
    {
      "id": "elec.vertical.make-up",
      "trade": "electrical",
      "kind": "convention",
      "status": "applied",
      "title": "Make-up on a vertical",
      "summary": "The foot of conduit the app adds to every vertical it writes, for the box entry and the bend that plan view never shows.",
      "values": [
        {
          "when": "every device vertical the Chain tool writes",
          "value": 1,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "trade practice",
        "section": "estimating convention; not a code figure",
        "editions": []
      },
      "amendments": [],
      "used_by": [
        "chain"
      ],
      "url": "/rules/electrical/make-up/",
      "updated": "2026-09-09"
    },
    {
      "id": "elec.mount-height.defaults",
      "trade": "electrical",
      "kind": "convention",
      "status": "applied",
      "title": "Default mount heights for devices",
      "summary": "The heights above finished floor the app starts each device at — 18\" receptacles, 44\" GFCI at a counter, 48\" switches, 78\" panel top — so the Chain tool can write the vertical.",
      "values": [
        {
          "when": "Duplex receptacle, to center",
          "value": 18,
          "unit": "in AFF"
        },
        {
          "when": "GFCI receptacle at a counter",
          "value": 44,
          "unit": "in AFF"
        },
        {
          "when": "Single-pole switch",
          "value": 48,
          "unit": "in AFF"
        },
        {
          "when": "Panelboard, to the top",
          "value": 78,
          "unit": "in AFF"
        },
        {
          "when": "Exit sign",
          "value": 90,
          "unit": "in AFF"
        },
        {
          "when": "Data outlet",
          "value": 18,
          "unit": "in AFF"
        },
        {
          "when": "Thermostat",
          "value": 48,
          "unit": "in AFF"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "404.8(A), 240.24(A); ADA 308 reach range",
        "editions": [
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "chain",
        "quickCreate"
      ],
      "url": "/rules/electrical/mount-heights/",
      "updated": "2026-09-09"
    },
    {
      "id": "elec.lighting.occupancy-sensors",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Occupant sensor lighting controls",
      "summary": "The energy code wants the lights in rooms people leave, restrooms, storage and break rooms among them, on sensors that turn them off by themselves, and every other area on a time switch.",
      "values": [
        {
          "when": "restrooms, storage rooms, break rooms and the other spaces the section lists (2021 adds corridors; enclosed spaces of 300 sq ft or less are listed)",
          "value": "an occupant sensor that turns the lights off",
          "unit": ""
        },
        {
          "when": "every other area, not on occupant sensors (C405.2.2)",
          "value": "time-switch control that turns the lights off on a schedule",
          "unit": ""
        }
      ],
      "source": {
        "code": "IECC",
        "section": "C405.2.1, C405.2.2",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/occupancy-sensors/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.service.load-calculation",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Service and feeder load calculation",
      "summary": "A service or feeder is sized by the engineer's load calculation under Article 220 (for a new restaurant, the optional method of 220.88), never less than the calculated load, and in practice with room for what the owner adds later.",
      "values": [
        {
          "when": "a service or feeder",
          "value": "rated for at least the load Article 220 calculates",
          "unit": ""
        },
        {
          "when": "a new restaurant, not all electric, 200 kVA or less connected, by the optional method (220.88)",
          "value": 100,
          "unit": "% of the connected load"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "Article 220 (220.88 for a new restaurant)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/service-load-calculation/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.conductor.small-protection",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Small conductor protection",
      "summary": "The largest breaker the code lets protect the small copper sizes, 15 A on #14, 20 A on #12 and 30 A on #10, which is why a 20 A circuit is #12.",
      "values": [
        {
          "when": "#14 copper",
          "value": 15,
          "unit": "A"
        },
        {
          "when": "#12 copper",
          "value": 20,
          "unit": "A"
        },
        {
          "when": "#10 copper",
          "value": 30,
          "unit": "A"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "240.4(D)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/small-conductor-protection/",
      "updated": "2026-09-27"
    },
    {
      "id": "elec.voltage-drop.k-constant",
      "trade": "electrical",
      "kind": "convention",
      "status": "applied",
      "title": "The K constant for voltage drop",
      "summary": "The resistivity figure the estimator's single-phase voltage-drop formula uses — 12.9 for copper, 21.2 for aluminum, in ohm-circular-mils per foot.",
      "values": [
        {
          "when": "copper conductors",
          "value": 12.9,
          "unit": "Ω·cmil/ft"
        },
        {
          "when": "aluminum conductors",
          "value": 21.2,
          "unit": "Ω·cmil/ft"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "Chapter 9, Table 8 (as the trade rounds it)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "bidCheck"
      ],
      "url": "/rules/electrical/voltage-drop-k/",
      "updated": "2026-09-09"
    },
    {
      "id": "elec.voltage-drop.branch-limit",
      "trade": "electrical",
      "kind": "recommendation",
      "status": "applied",
      "title": "Voltage drop on a branch circuit",
      "summary": "The app flags a branch circuit whose drop to the farthest device exceeds 3% — the NEC's informational recommendation, not a requirement.",
      "values": [
        {
          "when": "branch circuit, to the farthest device",
          "value": 3,
          "unit": "%"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "210.19(A), Informational Note",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "bidCheck"
      ],
      "url": "/rules/electrical/voltage-drop-limit/",
      "updated": "2026-09-09"
    },
    {
      "id": "elec.panel.working-space",
      "trade": "electrical",
      "kind": "code",
      "status": "applied",
      "title": "Working space clearance",
      "summary": "The clear space the code keeps in front of a panel someone may work on live, as the course teaches it at 120/208 V: 36 in deep from the panel's face, 30 in wide, 6 ft 6 in high.",
      "values": [
        {
          "when": "depth, clear in front of the enclosure (0 to 150 V to ground, any condition)",
          "value": 36,
          "unit": "in"
        },
        {
          "when": "width, or the equipment's own width if that is wider",
          "value": 30,
          "unit": "in"
        },
        {
          "when": "height, from the floor, or the equipment's own height if that is taller",
          "value": 6.5,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "NEC",
        "section": "110.26(A)",
        "editions": [
          2017,
          2020,
          2023
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-70-standard-development/70"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/electrical/working-space/",
      "updated": "2026-09-27"
    },
    {
      "id": "hvac.diffuser.neck-velocity",
      "trade": "hvac",
      "kind": "convention",
      "status": "applied",
      "title": "Diffuser neck velocity",
      "summary": "A diffuser's neck is picked from the maker's sound and throw data and the push its flex needs; makers keep neck velocity under about 1,000 feet a minute, and the app's own neck suggestion puts up to 150 CFM on an 8 in neck and up to 300 on a 10 in, so the neck size is the flex and tap size on the bid.",
      "values": [
        {
          "when": "a common ceiling for air through a supply diffuser's neck (makers' selection guidance)",
          "value": 1000,
          "unit": "fpm"
        },
        {
          "when": "150 CFM through an 8 in neck (the neck-size suggestion's first row)",
          "value": 430,
          "unit": "fpm"
        },
        {
          "when": "the most air the app's neck suggestion puts on an 8 in neck",
          "value": 150,
          "unit": "CFM per neck"
        },
        {
          "when": "the most air the app's neck suggestion puts on a 10 in neck",
          "value": 300,
          "unit": "CFM per neck"
        }
      ],
      "source": {
        "code": "trade practice",
        "section": "diffuser selection from the maker's catalogued sound (NC) and throw data, not a code figure",
        "editions": []
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/hvac/diffuser-neck-velocity/",
      "updated": "2026-09-27"
    },
    {
      "id": "hvac.duct.gauge-schedule",
      "trade": "hvac",
      "kind": "standard",
      "status": "applied",
      "title": "Duct gauge by size and pressure class",
      "summary": "The simplified gauge schedule the Duct tool picks metal with — by the duct's larger side or diameter and the system's pressure class — before you override it.",
      "values": [
        {
          "when": "1 in w.g., larger side up to 12 in",
          "value": 26,
          "unit": "ga"
        },
        {
          "when": "1 in w.g., up to 30 in",
          "value": 24,
          "unit": "ga"
        },
        {
          "when": "1 in w.g., up to 54 in",
          "value": 22,
          "unit": "ga"
        },
        {
          "when": "1 in w.g., up to 84 in",
          "value": 20,
          "unit": "ga"
        },
        {
          "when": "1 in w.g., larger",
          "value": 18,
          "unit": "ga"
        },
        {
          "when": "2 in w.g., larger side up to 10 in",
          "value": 26,
          "unit": "ga"
        },
        {
          "when": "3 in w.g., larger side up to 8 in",
          "value": 26,
          "unit": "ga"
        }
      ],
      "source": {
        "code": "SMACNA",
        "section": "HVAC Duct Construction Standards, gauge tables (simplified)",
        "editions": [
          2020
        ],
        "url": "https://www.smacna.org/"
      },
      "amendments": [],
      "used_by": [
        "ductSchedule"
      ],
      "url": "/rules/hvac/duct-gauge/",
      "updated": "2026-09-09"
    },
    {
      "id": "hvac.duct.schedule-factors",
      "trade": "hvac",
      "kind": "convention",
      "status": "applied",
      "title": "Duct Schedule factors",
      "summary": "The estimating knobs the Duct Schedule starts with — seam and waste, the quick-bid fitting factor, the design friction rate and velocity cap the ductulator suggests sizes from, and the terminal allowance the static-path check adds at the end of the critical path.",
      "values": [
        {
          "when": "seam and waste, on the straight-duct pounds",
          "value": 15,
          "unit": "%"
        },
        {
          "when": "fitting factor, when fittings are not counted individually",
          "value": 40,
          "unit": "%"
        },
        {
          "when": "design friction rate for size suggestions",
          "value": 0.08,
          "unit": "in w.g. per 100 ft"
        },
        {
          "when": "maximum velocity for size suggestions",
          "value": 1200,
          "unit": "fpm"
        },
        {
          "when": "terminal allowance (diffuser + flex) added once at the end of the static path",
          "value": 0.1,
          "unit": "in w.g."
        }
      ],
      "source": {
        "code": "trade practice",
        "section": "estimating convention; ASHRAE Fundamentals duct design for the rate and velocity",
        "editions": []
      },
      "amendments": [],
      "used_by": [
        "ductSchedule"
      ],
      "url": "/rules/hvac/duct-schedule-factors/",
      "updated": "2026-09-12"
    },
    {
      "id": "hvac.damper.fire-damper",
      "trade": "hvac",
      "kind": "code",
      "status": "applied",
      "title": "Fire dampers at rated walls",
      "summary": "Where a duct passes through a fire-resistance-rated wall, the code wants a listed fire damper at the penetration unless an exception removes it, so each crossing of a rated wall is a damper, an access door and a sleeve on the bid.",
      "values": [
        {
          "when": "a duct through a fire-resistance-rated wall, a listed fire damper at the penetration, unless an exception of 607.5.2 or 607.5.3 removes it",
          "value": "required",
          "unit": ""
        },
        {
          "when": "a grease duct through the same wall (it takes a listed enclosure or wrap instead)",
          "value": "none",
          "unit": ""
        }
      ],
      "source": {
        "code": "IMC",
        "section": "607.5 Where required (607.5.1 fire walls, 607.5.2 fire barriers, 607.5.3 fire partitions)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IMC2021P1/chapter-6-duct-systems"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/hvac/fire-damper/",
      "updated": "2026-09-27"
    },
    {
      "id": "hvac.duct.grease-duct",
      "trade": "hvac",
      "kind": "code",
      "status": "applied",
      "title": "Grease duct metal and its weight",
      "summary": "A commercial kitchen hood's exhaust duct is welded carbon steel of at least 16 gauge or stainless of at least 18 gauge, never the galvanized gauge schedule, so the Duct tool prices a grease run at that fixed gauge and its own sheet weight.",
      "values": [
        {
          "when": "carbon steel (black steel), minimum gauge",
          "value": 16,
          "unit": "ga"
        },
        {
          "when": "stainless steel, minimum gauge",
          "value": 18,
          "unit": "ga"
        },
        {
          "when": "16 gauge carbon steel sheet",
          "value": 2.5,
          "unit": "lb/ft²"
        },
        {
          "when": "18 gauge stainless sheet",
          "value": 2,
          "unit": "lb/ft²"
        },
        {
          "when": "cleanout spacing on horizontal duct, at most",
          "value": 12,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IMC",
        "section": "506.3.1.1 Grease duct materials (NFPA 96 7.5.1 says the same)",
        "editions": [
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IMC2021P1/chapter-5-exhaust-systems"
      },
      "amendments": [],
      "used_by": [
        "ductSchedule"
      ],
      "url": "/rules/hvac/grease-duct/",
      "updated": "2026-09-21"
    },
    {
      "id": "hvac.exhaust.hood-makeup-air",
      "trade": "hvac",
      "kind": "code",
      "status": "applied",
      "title": "Make-up air for a kitchen hood",
      "summary": "A commercial kitchen hood that exhausts air needs make-up air brought in to replace it, delivered while the hood runs and interlocked with its exhaust fan, so a hood on a plan means a second unit, its duct and its controls on the bid.",
      "values": [
        {
          "when": "a commercial kitchen hood exhausting air, make-up air to replace it (508.1)",
          "value": "required",
          "unit": ""
        },
        {
          "when": "the make-up air unit against the hood's exhaust fan, started and run together (508.1)",
          "value": "interlocked",
          "unit": ""
        },
        {
          "when": "make-up air tempered to within a set difference of the room it enters (508.1.1, 10°F in the model code, with exceptions)",
          "value": "required",
          "unit": ""
        }
      ],
      "source": {
        "code": "IMC",
        "section": "508.1 Makeup air (interlock) and 508.1.1 Makeup air temperature",
        "editions": [
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IMC2021P1/chapter-5-exhaust-systems"
      },
      "amendments": [
        {
          "jurisdiction": "Minnesota",
          "note": "Rule 1346.0508 amends the temperature limit to make-up air not less than 50°F at the diffuser."
        }
      ],
      "used_by": [
        "course"
      ],
      "url": "/rules/hvac/hood-makeup-air/",
      "updated": "2026-09-27"
    },
    {
      "id": "hvac.ventilation.outdoor-air",
      "trade": "hvac",
      "kind": "code",
      "status": "applied",
      "title": "Outdoor air for ventilation",
      "summary": "Occupied spaces get a code minimum of outdoor air, set by the kind of room, the people in it and its floor area (a dining room 7.5 CFM a person plus 0.18 a square foot); on a bid the question is whether the plan's supply already carries it or a separate unit does.",
      "values": [
        {
          "when": "outdoor air to an occupied space, by mechanical or natural ventilation",
          "value": "required",
          "unit": ""
        },
        {
          "when": "the minimum, by occupancy",
          "value": "per person plus per floor area",
          "unit": ""
        },
        {
          "when": "a dining room, per person",
          "value": 7.5,
          "unit": "cfm/person"
        },
        {
          "when": "a dining room, per square foot of floor",
          "value": 0.18,
          "unit": "cfm/ft²"
        }
      ],
      "source": {
        "code": "IMC",
        "section": "403 Mechanical ventilation (rates in Table 403.3.1.1)",
        "editions": [
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IMC2021P1/chapter-4-ventilation"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/hvac/outdoor-air/",
      "updated": "2026-09-27"
    },
    {
      "id": "hvac.room.airflow-defaults",
      "trade": "hvac",
      "kind": "convention",
      "status": "applied",
      "title": "Room airflow by type",
      "summary": "The cubic feet per minute per square foot the app assumes for a room type when no target is given — office 1.0, conference and break 1.5, storage 0.5.",
      "values": [
        {
          "when": "office",
          "value": 1,
          "unit": "cfm/ft²"
        },
        {
          "when": "conference",
          "value": 1.5,
          "unit": "cfm/ft²"
        },
        {
          "when": "break room",
          "value": 1.5,
          "unit": "cfm/ft²"
        },
        {
          "when": "storage",
          "value": 0.5,
          "unit": "cfm/ft²"
        }
      ],
      "source": {
        "code": "trade practice",
        "section": "light-commercial supply-air rule of thumb",
        "editions": []
      },
      "amendments": [],
      "used_by": [
        "roomSizer",
        "ductSchedule"
      ],
      "url": "/rules/hvac/room-airflow/",
      "updated": "2026-09-09"
    },
    {
      "id": "hvac.duct.sheet-weight",
      "trade": "hvac",
      "kind": "standard",
      "status": "applied",
      "title": "Galvanized sheet weight by gauge",
      "summary": "Pounds per square foot of galvanized steel sheet at each gauge — the basis of every duct weight the schedule reports.",
      "values": [
        {
          "when": "26 gauge",
          "value": 0.906,
          "unit": "lb/ft²"
        },
        {
          "when": "24 gauge",
          "value": 1.156,
          "unit": "lb/ft²"
        },
        {
          "when": "22 gauge",
          "value": 1.406,
          "unit": "lb/ft²"
        },
        {
          "when": "20 gauge",
          "value": 1.656,
          "unit": "lb/ft²"
        },
        {
          "when": "18 gauge",
          "value": 2.156,
          "unit": "lb/ft²"
        }
      ],
      "source": {
        "code": "ASTM",
        "section": "A653 / A924, nominal galvanized sheet weight by gauge",
        "editions": [],
        "url": "https://www.astm.org/"
      },
      "amendments": [],
      "used_by": [
        "ductSchedule"
      ],
      "url": "/rules/hvac/sheet-weight/",
      "updated": "2026-09-09"
    },
    {
      "id": "plumb.drain.cleanouts",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Cleanouts on drainage piping",
      "summary": "A drain gets a cleanout wherever a snake has to go in, at the turns of more than 45 degrees, at or just upstream of where the building drain meets the sewer, and at least every 100 feet along a horizontal run.",
      "values": [
        {
          "when": "horizontal drain, building drain or building sewer, between cleanouts, at most",
          "value": 100,
          "unit": "ft"
        },
        {
          "when": "a change of horizontal direction of more than 45 degrees",
          "value": "a cleanout at the change",
          "unit": ""
        },
        {
          "when": "the junction of the building drain and the building sewer",
          "value": "a cleanout at the junction, or within 10 ft of developed length upstream of it",
          "unit": ""
        }
      ],
      "source": {
        "code": "IPC",
        "section": "708.1 Cleanouts required (708.1.1 horizontal drains, 708.1.3 building drain and sewer junction, 708.1.4 changes of direction)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-7-sanitary-drainage"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/cleanouts/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.drain.dfu-capacity",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Building drain and sewer capacity in drainage fixture units",
      "summary": "How many drainage fixture units a building drain or sewer may carry by size and slope; at 1/8 inch per foot a 3 inch sewer carries 36 and the course's 4 inch carries 180.",
      "values": [
        {
          "when": "3 in building drain or sewer, at 1/8 in per foot",
          "value": 36,
          "unit": "DFU"
        },
        {
          "when": "3 in building drain or sewer, at 1/4 in per foot",
          "value": 42,
          "unit": "DFU"
        },
        {
          "when": "3 in building drain or sewer, at 1/2 in per foot",
          "value": 50,
          "unit": "DFU"
        },
        {
          "when": "4 in building drain or sewer, at 1/8 in per foot",
          "value": 180,
          "unit": "DFU"
        },
        {
          "when": "4 in building drain or sewer, at 1/4 in per foot",
          "value": 216,
          "unit": "DFU"
        },
        {
          "when": "4 in building drain or sewer, at 1/2 in per foot",
          "value": 250,
          "unit": "DFU"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "710.1, Table 710.1(1)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-7-sanitary-drainage"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/drainage-fixture-units/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.drain.slope",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Slope of horizontal drainage pipe",
      "summary": "Horizontal waste pipe falls at least 1/4 inch per foot at 2-1/2 inch and smaller, 1/8 inch per foot at 3 to 6 inch, and 1/16 inch per foot at 8 inch and larger, except that pipe upstream of a grease interceptor falls at least 1/4 inch per foot at any size.",
      "values": [
        {
          "when": "2-1/2 in and smaller",
          "value": "1/4",
          "unit": "in/ft"
        },
        {
          "when": "3 in to 6 in",
          "value": "1/8",
          "unit": "in/ft"
        },
        {
          "when": "8 in and larger",
          "value": "1/16",
          "unit": "in/ft"
        },
        {
          "when": "upstream of a grease interceptor, any size",
          "value": "1/4",
          "unit": "in/ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "704.1, Table 704.1",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-7-sanitary-drainage"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/drainage-slope/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.gas.appliance-shutoff",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Appliance shutoff valves",
      "summary": "Every gas appliance has its own shutoff valve, in the same room and within 6 feet of it, upstream of its connector, so one appliance can come off the line without shutting the rest.",
      "values": [
        {
          "when": "each gas appliance",
          "value": "its own shutoff valve",
          "unit": ""
        },
        {
          "when": "from the appliance it serves, in the same room, at most",
          "value": 6,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IFGC",
        "section": "409.5 Appliance shutoff valve (409.5.1 location)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IFGC2021P1/chapter-4-gas-piping-installations"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/gas-appliance-shutoff/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.gas.pipe-sizing",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Gas pipe sizing",
      "summary": "Each section of gas pipe is sized for the load it carries downstream, in Btu per hour, over the longest run from the meter to the farthest outlet, so like water it shrinks as it goes.",
      "values": [
        {
          "when": "what a section of gas pipe is sized by",
          "value": "the connected load downstream of it",
          "unit": ""
        },
        {
          "when": "the length it is sized over (the longest length method)",
          "value": "the point of delivery (the meter, on the course's job) to the most remote outlet",
          "unit": ""
        }
      ],
      "source": {
        "code": "IFGC",
        "section": "402 Pipe sizing (402.4 sizing methods, 402.4.1 longest length)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IFGC2021P1/chapter-4-gas-piping-installations"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/gas-pipe-sizing/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.waste.grease-interceptor",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Grease interceptors",
      "summary": "Kitchen, dish and bar fixtures that carry grease drain through a grease interceptor, and the restrooms join the sewer downstream of it, because the interceptor is for grease-laden waste only.",
      "values": [
        {
          "when": "fixtures and equipment with grease-laden waste in a food preparation area (a restaurant, a kitchen, a bar)",
          "value": "through a grease interceptor",
          "unit": ""
        },
        {
          "when": "water closets, urinals, lavatories and other fixtures without grease",
          "value": "kept out of the interceptor",
          "unit": ""
        }
      ],
      "source": {
        "code": "IPC",
        "section": "1003.3.1 Grease interceptors and automatic grease removal devices required",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-10-traps-interceptors-and-separators"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/grease-interceptor/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.hanger.cast-iron",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Hanger spacing for cast-iron pipe",
      "summary": "How far apart cast-iron pipe may be supported — 5 feet horizontal (10 feet where 10-foot lengths are installed), 15 feet vertical.",
      "values": [
        {
          "when": "horizontal",
          "value": 5,
          "unit": "ft",
          "note": "10 ft where 10-foot lengths are installed"
        },
        {
          "when": "vertical",
          "value": 15,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "308.5, Table 308.5",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "childCount",
        "bidCheck"
      ],
      "url": "/rules/plumbing/hanger-spacing-cast-iron/",
      "updated": "2026-09-09"
    },
    {
      "id": "plumb.hanger.copper",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Hanger spacing for copper tube",
      "summary": "How far apart copper tube may be supported — 6 feet horizontal at 1-1/4 inch and smaller, 10 feet at 1-1/2 inch and larger, 10 feet vertical.",
      "values": [
        {
          "when": "horizontal, 1-1/4 in and smaller",
          "value": 6,
          "unit": "ft"
        },
        {
          "when": "horizontal, 1-1/2 in and larger",
          "value": 10,
          "unit": "ft"
        },
        {
          "when": "vertical",
          "value": 10,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "308.5, Table 308.5",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "childCount",
        "bidCheck"
      ],
      "url": "/rules/plumbing/hanger-spacing-copper/",
      "updated": "2026-09-09"
    },
    {
      "id": "plumb.hanger.gas-steel",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Hanger spacing for steel gas pipe",
      "summary": "How far apart steel gas pipe may be supported under the fuel gas code, by size, 6 feet at 1/2 inch, 8 feet at 3/4 and 1 inch, 10 feet horizontal at 1-1/4 inch and larger, and vertical pipe at every floor.",
      "values": [
        {
          "when": "1/2 in steel pipe",
          "value": 6,
          "unit": "ft"
        },
        {
          "when": "3/4 in or 1 in steel pipe",
          "value": 8,
          "unit": "ft"
        },
        {
          "when": "1-1/4 in and larger steel pipe, horizontal",
          "value": 10,
          "unit": "ft"
        },
        {
          "when": "1-1/4 in and larger steel pipe, vertical",
          "value": "at every floor level",
          "unit": ""
        },
        {
          "when": "corrugated stainless steel tubing (CSST)",
          "value": "per the tubing maker's instructions",
          "unit": ""
        }
      ],
      "source": {
        "code": "IFGC",
        "section": "415.1, Table 415.1",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IFGC2021P1/chapter-4-gas-piping-installations"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/hanger-spacing-gas-steel/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.hanger.pex",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Hanger spacing for PEX",
      "summary": "How far apart PEX tubing may be supported — 32 inches horizontal at 1 inch and smaller, 48 inches at 1-1/4 inch and larger, 10 feet vertical.",
      "values": [
        {
          "when": "horizontal, 1 in and smaller",
          "value": 32,
          "unit": "in"
        },
        {
          "when": "horizontal, 1-1/4 in and larger",
          "value": 48,
          "unit": "in"
        },
        {
          "when": "vertical",
          "value": 10,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "308.5, Table 308.5",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "childCount",
        "bidCheck"
      ],
      "url": "/rules/plumbing/hanger-spacing-pex/",
      "updated": "2026-09-09"
    },
    {
      "id": "plumb.hanger.pvc",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Hanger spacing for PVC pipe",
      "summary": "How far apart PVC pipe may be supported — 4 feet horizontal, 10 feet vertical.",
      "values": [
        {
          "when": "horizontal",
          "value": 4,
          "unit": "ft"
        },
        {
          "when": "vertical",
          "value": 10,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "308.5, Table 308.5",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "childCount",
        "bidCheck"
      ],
      "url": "/rules/plumbing/hanger-spacing-pvc/",
      "updated": "2026-09-09"
    },
    {
      "id": "plumb.hanger.steel",
      "trade": "plumbing",
      "kind": "code",
      "status": "draft",
      "title": "Hanger spacing for steel water and drainage pipe",
      "summary": "How far apart steel water and drainage pipe may be supported under the plumbing code, 12 feet horizontal and 15 feet vertical; steel gas pipe hangs closer, under the fuel gas code (plumb.hanger.gas-steel).",
      "values": [
        {
          "when": "horizontal",
          "value": 12,
          "unit": "ft"
        },
        {
          "when": "vertical",
          "value": 15,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "308.5, Table 308.5",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-3-general-regulations"
      },
      "amendments": [],
      "used_by": [],
      "url": "/rules/plumbing/hanger-spacing-steel/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.gas.hood-shutoff",
      "trade": "plumbing",
      "kind": "standard",
      "status": "draft",
      "title": "Gas shutoff tripped by the hood suppression system",
      "summary": "When a kitchen hood's fire suppression system discharges, the gas to every appliance under the hood shuts off automatically, and stays off until someone resets it by hand, so the gas line carries a valve the system trips.",
      "values": [
        {
          "when": "the hood suppression system discharges",
          "value": "gas to the appliances under the hood shuts off automatically, including an appliance under the hood that needs no protection of its own",
          "unit": ""
        },
        {
          "when": "after a discharge",
          "value": "manual reset",
          "unit": ""
        }
      ],
      "source": {
        "code": "NFPA 96",
        "section": "10.4 Fuel and electric power shutoff",
        "editions": [
          2017,
          2021
        ],
        "url": "https://www.nfpa.org/codes-and-standards/nfpa-96-standard-development/96"
      },
      "amendments": [],
      "used_by": [],
      "url": "/rules/plumbing/hood-gas-shutoff/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.waste.indirect",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Indirect waste for food equipment",
      "summary": "A sink or machine that handles food drains through an air gap (an air break is allowed for a commercial dishwasher and a pot or dish sink) to a floor sink or other receptor, never straight into the waste pipe, so a sewer backup rises onto the floor and not into the food side.",
      "values": [
        {
          "when": "food storage, preparation and handling equipment (a prep sink)",
          "value": "air gap",
          "unit": ""
        },
        {
          "when": "a commercial dishwashing machine",
          "value": "air gap or air break",
          "unit": ""
        },
        {
          "when": "a sink that washes, rinses or sanitizes utensils, dishes, pots and pans (a three-compartment pot sink), other than in a dwelling unit",
          "value": "air gap or air break",
          "unit": ""
        },
        {
          "when": "an air gap, above the receptor flood rim, at least",
          "value": "twice the pipe opening",
          "unit": ""
        }
      ],
      "source": {
        "code": "IPC",
        "section": "802.1.1, 802.1.6, 802.1.7 and 802.3.1 (2021 numbering)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-8-indirect-special-waste"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/indirect-waste/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.trap.arm-length",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Trap arms",
      "summary": "How far a fixture's trap may sit from its vent along the drain, by trap size: 5 feet at 1-1/4 inch, 6 feet at 1-1/2 inch, 8 feet at 2 inch, 12 feet at 3 inch, 16 feet at 4 inch.",
      "values": [
        {
          "when": "1-1/4 in trap, at 1/4 in per foot, at most",
          "value": 5,
          "unit": "ft"
        },
        {
          "when": "1-1/2 in trap, at 1/4 in per foot, at most",
          "value": 6,
          "unit": "ft"
        },
        {
          "when": "2 in trap, at 1/4 in per foot, at most",
          "value": 8,
          "unit": "ft"
        },
        {
          "when": "3 in trap, at 1/8 in per foot, at most",
          "value": 12,
          "unit": "ft"
        },
        {
          "when": "4 in trap, at 1/8 in per foot, at most",
          "value": 16,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "909.1, Table 909.1",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-9-vents"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/trap-arm-length/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.trap.seal",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Trap seal depth and protection",
      "summary": "Every fixture trap holds a water seal 2 to 4 inches deep, and a trap that can dry out, a floor drain that sees no water for months, gets seal protection such as a trap primer.",
      "values": [
        {
          "when": "trap seal depth, at least",
          "value": 2,
          "unit": "in"
        },
        {
          "when": "trap seal depth, at most",
          "value": 4,
          "unit": "in"
        },
        {
          "when": "an emergency floor drain, or a trap subject to evaporation",
          "value": "seal protection (a trap primer or a barrier device)",
          "unit": ""
        }
      ],
      "source": {
        "code": "IPC",
        "section": "1002.4 Trap seals, 1002.4.1 Trap seal protection",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-10-traps-interceptors-and-separators"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/trap-seal/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.vent.terminal",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Vent terminals",
      "summary": "A vent stack ends open above the roof, at a height the adopting jurisdiction sets (the model code leaves it blank), 7 feet up on a roof people use, and clear of air intakes, at least 10 feet away from a door, window or intake unless it rises 3 feet above the top of it.",
      "values": [
        {
          "when": "above the roof, an unprotected roof extension",
          "value": "the adopting jurisdiction's figure (the IPC prints a blank for it)",
          "unit": ""
        },
        {
          "when": "above a roof used for assembly, a promenade or a deck",
          "value": 7,
          "unit": "ft"
        },
        {
          "when": "horizontally from a door, an openable window or an air intake, at least",
          "value": 10,
          "unit": "ft"
        },
        {
          "when": "above the top of that opening, when closer than the distance above",
          "value": 3,
          "unit": "ft"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "903.1.1 roof extension and 903.1.2 roofs used for recreation or assembly (903.1 in 2018), 903.5 location",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-9-vents"
      },
      "amendments": [
        {
          "jurisdiction": "Colorado (IPC 2021 adoption)",
          "note": "6 inches above the roof"
        }
      ],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/vent-terminal/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.vent.trap-protection",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Venting protects every trap seal",
      "summary": "The drainage system carries vent piping that lets air in and out, so no fixture trap sees more than 1 inch of water column of pressure difference and no seal siphons out when the fixture upstream drains.",
      "values": [
        {
          "when": "each fixture trap",
          "value": "protected by a vent",
          "unit": ""
        },
        {
          "when": "pressure difference at a trap seal, at most",
          "value": 1,
          "unit": "in w.c."
        }
      ],
      "source": {
        "code": "IPC",
        "section": "901.2 Trap seal protection",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/content/IPC2021P1/chapter-9-vents"
      },
      "amendments": [],
      "used_by": [
        "course"
      ],
      "url": "/rules/plumbing/vents/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.water.distribution-min",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Minimum water service size",
      "summary": "The water service pipe from the main to the building is never smaller than 3/4 inch; the pipes past it are sized to the fixtures they serve.",
      "values": [
        {
          "when": "Water service pipe",
          "value": "3/4",
          "unit": "in"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "603.1",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "bidCheck"
      ],
      "url": "/rules/plumbing/water-distribution-min/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.water.fixture-supply-min",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Minimum fixture supply pipe sizes",
      "summary": "The smallest pipe that may supply each fixture, 3/8 inch for a lavatory or a tank water closet up to 1 inch for a flush-valve water closet.",
      "values": [
        {
          "when": "Bathtub",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Bidet",
          "value": "3/8",
          "unit": "in"
        },
        {
          "when": "Combination sink and tray",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Dishwasher, domestic",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Drinking fountain",
          "value": "3/8",
          "unit": "in"
        },
        {
          "when": "Hose bibb",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Kitchen sink",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Laundry, 1, 2 or 3 compartments",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Lavatory",
          "value": "3/8",
          "unit": "in"
        },
        {
          "when": "Shower, single head",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Sink, flushing rim",
          "value": "3/4",
          "unit": "in"
        },
        {
          "when": "Sink, service",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Urinal, flush tank",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Urinal, flush valve",
          "value": "3/4",
          "unit": "in"
        },
        {
          "when": "Wall hydrant",
          "value": "1/2",
          "unit": "in"
        },
        {
          "when": "Water closet, flush tank",
          "value": "3/8",
          "unit": "in"
        },
        {
          "when": "Water closet, flush valve",
          "value": 1,
          "unit": "in"
        },
        {
          "when": "Water closet, flushometer tank",
          "value": "3/8",
          "unit": "in"
        },
        {
          "when": "Water closet, one piece",
          "value": "1/2",
          "unit": "in"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "604.5, Table 604.5",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "waterSchedule"
      ],
      "url": "/rules/plumbing/water-fixture-supply-min/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.water.pipe-id",
      "trade": "plumbing",
      "kind": "standard",
      "status": "applied",
      "title": "Inside diameters of water pipe by nominal size",
      "summary": "The inside diameter the velocity is computed from, per nominal size, for PEX (SDR 9), copper Type L, CPVC CTS and Schedule 40 galvanized steel.",
      "values": [
        {
          "when": "PEX 1 in nominal",
          "value": 0.862,
          "unit": "in",
          "note": "ASTM F876, SDR 9"
        },
        {
          "when": "PEX 2 in nominal",
          "value": 1.629,
          "unit": "in",
          "note": "ASTM F876, SDR 9"
        },
        {
          "when": "PEX 3/8 in nominal",
          "value": 0.35,
          "unit": "in",
          "note": "ASTM F876, SDR 9"
        },
        {
          "when": "PEX 1/2 in nominal",
          "value": 0.475,
          "unit": "in",
          "note": "ASTM F876, SDR 9"
        },
        {
          "when": "PEX 3/4 in nominal",
          "value": 0.671,
          "unit": "in",
          "note": "ASTM F876, SDR 9"
        },
        {
          "when": "PEX 1-1/4 in nominal",
          "value": 1.054,
          "unit": "in",
          "note": "ASTM F876, SDR 9"
        },
        {
          "when": "PEX 1-1/2 in nominal",
          "value": 1.244,
          "unit": "in",
          "note": "ASTM F876, SDR 9"
        },
        {
          "when": "Copper Type L 1 in nominal",
          "value": 1.025,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 2 in nominal",
          "value": 1.985,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 3 in nominal",
          "value": 2.945,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 3/8 in nominal",
          "value": 0.43,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 1/2 in nominal",
          "value": 0.545,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 3/4 in nominal",
          "value": 0.785,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 1-1/4 in nominal",
          "value": 1.265,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 1-1/2 in nominal",
          "value": 1.505,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "Copper Type L 2-1/2 in nominal",
          "value": 2.465,
          "unit": "in",
          "note": "ASTM B88"
        },
        {
          "when": "CPVC 1 in nominal",
          "value": 0.901,
          "unit": "in",
          "note": "ASTM D2846, CTS SDR 11"
        },
        {
          "when": "CPVC 2 in nominal",
          "value": 1.716,
          "unit": "in",
          "note": "ASTM D2846, CTS SDR 11"
        },
        {
          "when": "CPVC 1/2 in nominal",
          "value": 0.469,
          "unit": "in",
          "note": "ASTM D2846, CTS SDR 11"
        },
        {
          "when": "CPVC 3/4 in nominal",
          "value": 0.695,
          "unit": "in",
          "note": "ASTM D2846, CTS SDR 11"
        },
        {
          "when": "CPVC 1-1/4 in nominal",
          "value": 1.105,
          "unit": "in",
          "note": "ASTM D2846, CTS SDR 11"
        },
        {
          "when": "CPVC 1-1/2 in nominal",
          "value": 1.309,
          "unit": "in",
          "note": "ASTM D2846, CTS SDR 11"
        },
        {
          "when": "Galvanized steel 1 in nominal",
          "value": 1.049,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        },
        {
          "when": "Galvanized steel 2 in nominal",
          "value": 2.067,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        },
        {
          "when": "Galvanized steel 3 in nominal",
          "value": 3.068,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        },
        {
          "when": "Galvanized steel 1/2 in nominal",
          "value": 0.622,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        },
        {
          "when": "Galvanized steel 3/4 in nominal",
          "value": 0.824,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        },
        {
          "when": "Galvanized steel 1-1/4 in nominal",
          "value": 1.38,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        },
        {
          "when": "Galvanized steel 1-1/2 in nominal",
          "value": 1.61,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        },
        {
          "when": "Galvanized steel 2-1/2 in nominal",
          "value": 2.469,
          "unit": "in",
          "note": "ASTM A53, Schedule 40"
        }
      ],
      "source": {
        "code": "ASTM",
        "section": "F876 (PEX, SDR 9); B88 (copper Type L); D2846 (CPVC CTS, SDR 11); A53 (steel, Schedule 40)",
        "editions": [],
        "url": "https://www.astm.org/"
      },
      "amendments": [],
      "used_by": [
        "waterSchedule"
      ],
      "url": "/rules/plumbing/water-pipe-id/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.water.velocity",
      "trade": "plumbing",
      "kind": "convention",
      "status": "applied",
      "title": "Design velocity for water pipe",
      "summary": "The velocity the app sizes a water run to, 8 feet per second cold and 5 feet per second hot. Design practice under the IPC, which prints no velocity limit; the UPC caps copper tube at the same figures.",
      "values": [
        {
          "when": "Cold water",
          "value": 8,
          "unit": "fps"
        },
        {
          "when": "Hot water",
          "value": 5,
          "unit": "fps"
        }
      ],
      "source": {
        "code": "ASPE",
        "section": "Plumbing Engineering Design Handbook, Vol. 2, Ch. 5 (cold water) and Ch. 6 (hot water), velocity limits; Copper Development Association, Copper Tube Handbook, \"velocity\" (5 fps hot, 8 fps cold)",
        "editions": [],
        "url": "https://www.copper.org/publications/pub_list/pdf/copper_tube_handbook.pdf"
      },
      "amendments": [],
      "used_by": [
        "waterSchedule"
      ],
      "url": "/rules/plumbing/water-velocity/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.wsfu.demand",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Demand curve: fixture units to gallons per minute",
      "summary": "The design flow a load of water supply fixture units stands for, in gallons per minute, read off the code's demand table in its flush-tank and flush-valve columns.",
      "values": [
        {
          "when": "1 WSFU, flush tanks",
          "value": 3,
          "unit": "gpm"
        },
        {
          "when": "2 WSFU, flush tanks",
          "value": 5,
          "unit": "gpm"
        },
        {
          "when": "3 WSFU, flush tanks",
          "value": 6.5,
          "unit": "gpm"
        },
        {
          "when": "4 WSFU, flush tanks",
          "value": 8,
          "unit": "gpm"
        },
        {
          "when": "5 WSFU, flush tanks",
          "value": 9.4,
          "unit": "gpm"
        },
        {
          "when": "6 WSFU, flush tanks",
          "value": 10.7,
          "unit": "gpm"
        },
        {
          "when": "7 WSFU, flush tanks",
          "value": 11.8,
          "unit": "gpm"
        },
        {
          "when": "8 WSFU, flush tanks",
          "value": 12.8,
          "unit": "gpm"
        },
        {
          "when": "9 WSFU, flush tanks",
          "value": 13.7,
          "unit": "gpm"
        },
        {
          "when": "10 WSFU, flush tanks",
          "value": 14.6,
          "unit": "gpm"
        },
        {
          "when": "11 WSFU, flush tanks",
          "value": 15.4,
          "unit": "gpm"
        },
        {
          "when": "12 WSFU, flush tanks",
          "value": 16,
          "unit": "gpm"
        },
        {
          "when": "13 WSFU, flush tanks",
          "value": 16.5,
          "unit": "gpm"
        },
        {
          "when": "14 WSFU, flush tanks",
          "value": 17,
          "unit": "gpm"
        },
        {
          "when": "15 WSFU, flush tanks",
          "value": 17.5,
          "unit": "gpm"
        },
        {
          "when": "16 WSFU, flush tanks",
          "value": 18,
          "unit": "gpm"
        },
        {
          "when": "17 WSFU, flush tanks",
          "value": 18.4,
          "unit": "gpm"
        },
        {
          "when": "18 WSFU, flush tanks",
          "value": 18.8,
          "unit": "gpm"
        },
        {
          "when": "19 WSFU, flush tanks",
          "value": 19.2,
          "unit": "gpm"
        },
        {
          "when": "20 WSFU, flush tanks",
          "value": 19.6,
          "unit": "gpm"
        },
        {
          "when": "25 WSFU, flush tanks",
          "value": 21.5,
          "unit": "gpm"
        },
        {
          "when": "30 WSFU, flush tanks",
          "value": 23.3,
          "unit": "gpm"
        },
        {
          "when": "35 WSFU, flush tanks",
          "value": 24.9,
          "unit": "gpm"
        },
        {
          "when": "40 WSFU, flush tanks",
          "value": 26.3,
          "unit": "gpm"
        },
        {
          "when": "45 WSFU, flush tanks",
          "value": 27.7,
          "unit": "gpm"
        },
        {
          "when": "50 WSFU, flush tanks",
          "value": 29.1,
          "unit": "gpm"
        },
        {
          "when": "60 WSFU, flush tanks",
          "value": 32,
          "unit": "gpm"
        },
        {
          "when": "70 WSFU, flush tanks",
          "value": 35,
          "unit": "gpm"
        },
        {
          "when": "80 WSFU, flush tanks",
          "value": 38,
          "unit": "gpm"
        },
        {
          "when": "90 WSFU, flush tanks",
          "value": 41,
          "unit": "gpm"
        },
        {
          "when": "100 WSFU, flush tanks",
          "value": 43.5,
          "unit": "gpm"
        },
        {
          "when": "120 WSFU, flush tanks",
          "value": 48,
          "unit": "gpm"
        },
        {
          "when": "140 WSFU, flush tanks",
          "value": 52.5,
          "unit": "gpm"
        },
        {
          "when": "160 WSFU, flush tanks",
          "value": 57,
          "unit": "gpm"
        },
        {
          "when": "180 WSFU, flush tanks",
          "value": 61,
          "unit": "gpm"
        },
        {
          "when": "200 WSFU, flush tanks",
          "value": 65,
          "unit": "gpm"
        },
        {
          "when": "225 WSFU, flush tanks",
          "value": 70,
          "unit": "gpm"
        },
        {
          "when": "250 WSFU, flush tanks",
          "value": 75,
          "unit": "gpm"
        },
        {
          "when": "275 WSFU, flush tanks",
          "value": 80,
          "unit": "gpm"
        },
        {
          "when": "300 WSFU, flush tanks",
          "value": 85,
          "unit": "gpm"
        },
        {
          "when": "400 WSFU, flush tanks",
          "value": 105,
          "unit": "gpm"
        },
        {
          "when": "500 WSFU, flush tanks",
          "value": 124,
          "unit": "gpm"
        },
        {
          "when": "750 WSFU, flush tanks",
          "value": 170,
          "unit": "gpm"
        },
        {
          "when": "1000 WSFU, flush tanks",
          "value": 208,
          "unit": "gpm"
        },
        {
          "when": "1250 WSFU, flush tanks",
          "value": 239,
          "unit": "gpm"
        },
        {
          "when": "1500 WSFU, flush tanks",
          "value": 269,
          "unit": "gpm"
        },
        {
          "when": "1750 WSFU, flush tanks",
          "value": 297,
          "unit": "gpm"
        },
        {
          "when": "2000 WSFU, flush tanks",
          "value": 325,
          "unit": "gpm"
        },
        {
          "when": "2500 WSFU, flush tanks",
          "value": 380,
          "unit": "gpm"
        },
        {
          "when": "3000 WSFU, flush tanks",
          "value": 433,
          "unit": "gpm"
        },
        {
          "when": "4000 WSFU, flush tanks",
          "value": 525,
          "unit": "gpm"
        },
        {
          "when": "5000 WSFU, flush tanks",
          "value": 593,
          "unit": "gpm"
        },
        {
          "when": "5 WSFU, flush valves",
          "value": 15,
          "unit": "gpm"
        },
        {
          "when": "6 WSFU, flush valves",
          "value": 17.4,
          "unit": "gpm"
        },
        {
          "when": "7 WSFU, flush valves",
          "value": 19.8,
          "unit": "gpm"
        },
        {
          "when": "8 WSFU, flush valves",
          "value": 22.2,
          "unit": "gpm"
        },
        {
          "when": "9 WSFU, flush valves",
          "value": 24.6,
          "unit": "gpm"
        },
        {
          "when": "10 WSFU, flush valves",
          "value": 27,
          "unit": "gpm"
        },
        {
          "when": "11 WSFU, flush valves",
          "value": 27.8,
          "unit": "gpm"
        },
        {
          "when": "12 WSFU, flush valves",
          "value": 28.6,
          "unit": "gpm"
        },
        {
          "when": "13 WSFU, flush valves",
          "value": 29.4,
          "unit": "gpm"
        },
        {
          "when": "14 WSFU, flush valves",
          "value": 30.2,
          "unit": "gpm"
        },
        {
          "when": "15 WSFU, flush valves",
          "value": 31,
          "unit": "gpm"
        },
        {
          "when": "16 WSFU, flush valves",
          "value": 31.8,
          "unit": "gpm"
        },
        {
          "when": "17 WSFU, flush valves",
          "value": 32.6,
          "unit": "gpm"
        },
        {
          "when": "18 WSFU, flush valves",
          "value": 33.4,
          "unit": "gpm"
        },
        {
          "when": "19 WSFU, flush valves",
          "value": 34.2,
          "unit": "gpm"
        },
        {
          "when": "20 WSFU, flush valves",
          "value": 35,
          "unit": "gpm"
        },
        {
          "when": "25 WSFU, flush valves",
          "value": 38,
          "unit": "gpm"
        },
        {
          "when": "30 WSFU, flush valves",
          "value": 42,
          "unit": "gpm"
        },
        {
          "when": "35 WSFU, flush valves",
          "value": 44,
          "unit": "gpm"
        },
        {
          "when": "40 WSFU, flush valves",
          "value": 46,
          "unit": "gpm"
        },
        {
          "when": "45 WSFU, flush valves",
          "value": 48,
          "unit": "gpm"
        },
        {
          "when": "50 WSFU, flush valves",
          "value": 50,
          "unit": "gpm"
        },
        {
          "when": "60 WSFU, flush valves",
          "value": 54,
          "unit": "gpm"
        },
        {
          "when": "70 WSFU, flush valves",
          "value": 58,
          "unit": "gpm"
        },
        {
          "when": "80 WSFU, flush valves",
          "value": 61.2,
          "unit": "gpm"
        },
        {
          "when": "90 WSFU, flush valves",
          "value": 64.3,
          "unit": "gpm"
        },
        {
          "when": "100 WSFU, flush valves",
          "value": 67.5,
          "unit": "gpm"
        },
        {
          "when": "120 WSFU, flush valves",
          "value": 73,
          "unit": "gpm"
        },
        {
          "when": "140 WSFU, flush valves",
          "value": 77,
          "unit": "gpm"
        },
        {
          "when": "160 WSFU, flush valves",
          "value": 81,
          "unit": "gpm"
        },
        {
          "when": "180 WSFU, flush valves",
          "value": 85.5,
          "unit": "gpm"
        },
        {
          "when": "200 WSFU, flush valves",
          "value": 90,
          "unit": "gpm"
        },
        {
          "when": "225 WSFU, flush valves",
          "value": 95.5,
          "unit": "gpm"
        },
        {
          "when": "250 WSFU, flush valves",
          "value": 101,
          "unit": "gpm"
        },
        {
          "when": "275 WSFU, flush valves",
          "value": 104.5,
          "unit": "gpm"
        },
        {
          "when": "300 WSFU, flush valves",
          "value": 108,
          "unit": "gpm"
        },
        {
          "when": "400 WSFU, flush valves",
          "value": 127,
          "unit": "gpm"
        },
        {
          "when": "500 WSFU, flush valves",
          "value": 143,
          "unit": "gpm"
        },
        {
          "when": "750 WSFU, flush valves",
          "value": 177,
          "unit": "gpm"
        },
        {
          "when": "1000 WSFU, flush valves",
          "value": 208,
          "unit": "gpm"
        },
        {
          "when": "1250 WSFU, flush valves",
          "value": 239,
          "unit": "gpm"
        },
        {
          "when": "1500 WSFU, flush valves",
          "value": 269,
          "unit": "gpm"
        },
        {
          "when": "1750 WSFU, flush valves",
          "value": 297,
          "unit": "gpm"
        },
        {
          "when": "2000 WSFU, flush valves",
          "value": 325,
          "unit": "gpm"
        },
        {
          "when": "2500 WSFU, flush valves",
          "value": 380,
          "unit": "gpm"
        },
        {
          "when": "3000 WSFU, flush valves",
          "value": 433,
          "unit": "gpm"
        },
        {
          "when": "4000 WSFU, flush valves",
          "value": 525,
          "unit": "gpm"
        },
        {
          "when": "5000 WSFU, flush valves",
          "value": 593,
          "unit": "gpm"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "Appendix E, Table E103.3(3)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "waterSchedule"
      ],
      "url": "/rules/plumbing/wsfu-demand/",
      "updated": "2026-09-27"
    },
    {
      "id": "plumb.wsfu.fixtures",
      "trade": "plumbing",
      "kind": "code",
      "status": "applied",
      "title": "Water supply fixture units by fixture",
      "summary": "The load a fixture puts on the water supply, in water supply fixture units (WSFU), cold and hot, by the private or public column and the kind of supply control.",
      "values": [
        {
          "when": "Bathroom group, private, flush tank · cold",
          "value": 2.7,
          "unit": "WSFU"
        },
        {
          "when": "Bathroom group, private, flush tank · hot",
          "value": 1.5,
          "unit": "WSFU"
        },
        {
          "when": "Bathroom group, private, flush tank · total",
          "value": 3.6,
          "unit": "WSFU"
        },
        {
          "when": "Bathroom group, private, flush valve · cold",
          "value": 6,
          "unit": "WSFU"
        },
        {
          "when": "Bathroom group, private, flush valve · hot",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Bathroom group, private, flush valve · total",
          "value": 8,
          "unit": "WSFU"
        },
        {
          "when": "Bathtub, private, faucet · cold",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Bathtub, private, faucet · hot",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Bathtub, private, faucet · total",
          "value": 1.4,
          "unit": "WSFU"
        },
        {
          "when": "Bathtub, public, faucet · cold",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Bathtub, public, faucet · hot",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Bathtub, public, faucet · total",
          "value": 4,
          "unit": "WSFU"
        },
        {
          "when": "Bidet, private, faucet · cold",
          "value": 1.5,
          "unit": "WSFU"
        },
        {
          "when": "Bidet, private, faucet · hot",
          "value": 1.5,
          "unit": "WSFU"
        },
        {
          "when": "Bidet, private, faucet · total",
          "value": 2,
          "unit": "WSFU"
        },
        {
          "when": "Combination fixture, private, faucet · cold",
          "value": 2.25,
          "unit": "WSFU"
        },
        {
          "when": "Combination fixture, private, faucet · hot",
          "value": 2.25,
          "unit": "WSFU"
        },
        {
          "when": "Combination fixture, private, faucet · total",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Dishwashing machine, private, automatic · hot",
          "value": 1.4,
          "unit": "WSFU"
        },
        {
          "when": "Dishwashing machine, private, automatic · total",
          "value": 1.4,
          "unit": "WSFU"
        },
        {
          "when": "Drinking fountain, public, 3/8 in valve · cold",
          "value": 0.25,
          "unit": "WSFU"
        },
        {
          "when": "Drinking fountain, public, 3/8 in valve · total",
          "value": 0.25,
          "unit": "WSFU"
        },
        {
          "when": "Kitchen sink, private, faucet · cold",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Kitchen sink, private, faucet · hot",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Kitchen sink, private, faucet · total",
          "value": 1.4,
          "unit": "WSFU"
        },
        {
          "when": "Kitchen sink, public, faucet · cold",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Kitchen sink, public, faucet · hot",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Kitchen sink, public, faucet · total",
          "value": 4,
          "unit": "WSFU"
        },
        {
          "when": "Laundry trays (1 to 3), private, faucet · cold",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Laundry trays (1 to 3), private, faucet · hot",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Laundry trays (1 to 3), private, faucet · total",
          "value": 1.4,
          "unit": "WSFU"
        },
        {
          "when": "Lavatory, private, faucet · cold",
          "value": 0.5,
          "unit": "WSFU"
        },
        {
          "when": "Lavatory, private, faucet · hot",
          "value": 0.5,
          "unit": "WSFU"
        },
        {
          "when": "Lavatory, private, faucet · total",
          "value": 0.7,
          "unit": "WSFU"
        },
        {
          "when": "Lavatory, public, faucet · cold",
          "value": 1.5,
          "unit": "WSFU"
        },
        {
          "when": "Lavatory, public, faucet · hot",
          "value": 1.5,
          "unit": "WSFU"
        },
        {
          "when": "Lavatory, public, faucet · total",
          "value": 2,
          "unit": "WSFU"
        },
        {
          "when": "Service sink, public, faucet · cold",
          "value": 2.25,
          "unit": "WSFU"
        },
        {
          "when": "Service sink, public, faucet · hot",
          "value": 2.25,
          "unit": "WSFU"
        },
        {
          "when": "Service sink, public, faucet · total",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Shower head, private, mixing valve · cold",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Shower head, private, mixing valve · hot",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Shower head, private, mixing valve · total",
          "value": 1.4,
          "unit": "WSFU"
        },
        {
          "when": "Shower head, public, mixing valve · cold",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Shower head, public, mixing valve · hot",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Shower head, public, mixing valve · total",
          "value": 4,
          "unit": "WSFU"
        },
        {
          "when": "Urinal, public, 3/4 in flush valve · cold",
          "value": 5,
          "unit": "WSFU"
        },
        {
          "when": "Urinal, public, 3/4 in flush valve · total",
          "value": 5,
          "unit": "WSFU"
        },
        {
          "when": "Urinal, public, 1 in flush valve · cold",
          "value": 10,
          "unit": "WSFU"
        },
        {
          "when": "Urinal, public, 1 in flush valve · total",
          "value": 10,
          "unit": "WSFU"
        },
        {
          "when": "Urinal, public, flush tank · cold",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Urinal, public, flush tank · total",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (8 lb), private, automatic · cold",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (8 lb), private, automatic · hot",
          "value": 1,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (8 lb), private, automatic · total",
          "value": 1.4,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (8 lb), public, automatic · cold",
          "value": 2.25,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (8 lb), public, automatic · hot",
          "value": 2.25,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (8 lb), public, automatic · total",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (15 lb), public, automatic · cold",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (15 lb), public, automatic · hot",
          "value": 3,
          "unit": "WSFU"
        },
        {
          "when": "Washing machine (15 lb), public, automatic · total",
          "value": 4,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, private, flush tank · cold",
          "value": 2.2,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, private, flush tank · total",
          "value": 2.2,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, private, flush valve · cold",
          "value": 6,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, private, flush valve · total",
          "value": 6,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, private, flushometer tank · cold",
          "value": 2,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, private, flushometer tank · total",
          "value": 2,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, public, flush valve · cold",
          "value": 10,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, public, flush valve · total",
          "value": 10,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, public, flush tank · cold",
          "value": 5,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, public, flush tank · total",
          "value": 5,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, public, flushometer tank · cold",
          "value": 2,
          "unit": "WSFU"
        },
        {
          "when": "Water closet, public, flushometer tank · total",
          "value": 2,
          "unit": "WSFU"
        }
      ],
      "source": {
        "code": "IPC",
        "section": "Appendix E, Table E103.3(2)",
        "editions": [
          2018,
          2021
        ],
        "url": "https://codes.iccsafe.org/"
      },
      "amendments": [],
      "used_by": [
        "quickCreate"
      ],
      "url": "/rules/plumbing/wsfu-fixtures/",
      "updated": "2026-09-27"
    }
  ]
}
