How to use the HCM Calculator
Guide
A quick walkthrough of running an HCM Chapter 15 (Two-Lane Highways) analysis — from defining segments to reading the results.
Getting started
- Open Chapter 15 from the navigation.
- Define your segments in the Segments table. For each segment set its passing type, length, grade, posted speed, demand volumes, vertical class, PHF, and heavy-vehicle %.
- Set the General Parameters that apply to the whole facility (lane width, shoulder width, access point density, and the passing-lane heavy-vehicle multiplier).
- Enable Horizontal curves on a segment to add curved subsegments with their design radius and superelevation.
- Press Calculate. Results appear in the Outputs table.
- Use Export as JSON to save your inputs and the JSON importer to reload them later.
Inputs
Per segment
| Field | Meaning | Unit |
|---|---|---|
| Passing Type | Passing Constrained, Passing Zone, or Passing Lane | — |
| Length | Segment length | mi |
| Grade | Longitudinal grade (signed) | % |
| Posted Speed | Posted speed limit | mph |
| Demand Vol. | Demand flow rate, analysis direction | veh/h |
| Opposing Vol. | Demand flow rate, opposing direction | veh/h |
| Vertical Class | Vertical alignment class (1–5) | — |
| PHF | Peak hour factor | — |
| % Heavy Veh. | Percentage of heavy vehicles | % |
Horizontal-curve subsegments add Length (ft), Design Radius (ft), and Superelevation (%).
Facility-wide
| Field | Meaning | Unit |
|---|---|---|
| Lane Width | Travel lane width | ft |
| Shoulder Width | Shoulder width | ft |
| Access Point Density | Access points per mile | /mi |
| Heavy Vehicles in Passing Lane | Multiplier, used only when a Passing Lane segment is present | % |
Facility layout (2D & 3D)
The Facility Layout panel visualizes the whole facility as one connected road.
- 2D — a flat segment-by-segment schematic strip (solid centerline = Passing Constrained, dashed = Passing Zone, widening = Passing Lane).
- 3D — a connected ribbon where bends reflect horizontal curves, slope reflects grade, banking reflects superelevation, and the road widens for passing lanes. Drag to rotate, Alt-drag to pan, scroll / pinch to zoom.
- Expand & Edit — turns the layout into an editable pane so you can enter and modify each segment directly there (in sync with the Segments table).
Outputs & Level of Service
After Calculate, each segment reports:
| Output | Meaning |
|---|---|
| Free-flow Speed (mi/hr) | Estimated free-flow speed (FFS) |
| Average Speed (mi/hr) | Estimated average travel speed |
| Percent followers (%) | Percent of vehicles following, analysis direction |
| Followers Density (followers/mi) | Follower density — the LOS service measure |
| Segment LOS | Level of service A–F for the segment |
The summary reports the Facility LOS and Facility Follower Density (length-weighted across segments). For two-lane highways, LOS is keyed to follower density per HCM 7th Edition Chapter 15 (lower is better, A → F); exact breakpoints depend on posted speed — see the HCM for the authoritative thresholds. LOS F means demand exceeds capacity.
Open source
Calculations run locally in a Rust compute core compiled to WebAssembly. The project is open source — issues and contributions are welcome.
This is an independent, personally built tool and is not affiliated with any organization or corporation.
View on GitHub