Cities: Skylines 2 replaced the first game’s lane-by-lane simulation with a rewritten traffic model built around agent pathfinding, dynamic lane usage, and a priority system at junctions. The result is traffic that looks more organic but breaks in ways that aren’t always intuitive. If your industrial district is choking at a single roundabout, the cause is usually a pathfinding cost decision, a lane-assignment quirk, or a junction that lacks priority markings — not a missing road.

This guide walks through the three systems that actually govern flow: how agents pick routes, how they distribute across lanes, and how junctions resolve conflicts. Diagnosing from those layers, rather than from vibes, is what separates a city that runs at 200k population from one that stalls at 40k.

What it covers: The three systems governing CS2 traffic — pathfinding costs, lane distribution, and junction priority. Why it matters: Chokes are pathfinding cost decisions or junction priority gaps, not missing roads. Who should pick this: Players diagnosing gridlock instead of adding more lanes.

How Pathfinding Actually Works

The Cost Function

Every vehicle in Cities: Skylines 2 computes a route by minimizing a cost function, not by taking the shortest geometric path. The cost is a weighted combination of distance, road class speed, congestion penalty, and parking search overhead. Colossal Order has not published the exact weights, but the developer diaries confirm that time is usually the dominant factor, and community testing consistently shows that agents will accept a longer route if it travels on faster road classes or avoids a known congested segment.

The practical consequence: a highway detour that adds 20% distance but stays at 100 km/h will beat a “direct” path through a 30 km/h small street for most trips. This is why slapping a parallel surface street next to a jammed highway rarely helps — agents refuse to use it because the cost is higher.

Congestion Awareness

Unlike the original game, CS2 pathfinding is congestion-aware. Agents recompute routes mid-trip when they encounter slowdowns, and the simulation propagates congestion penalties back through the network. This creates feedback loops: a single bottleneck can cause upstream agents to reroute through quiet neighborhoods, which then develop their own congestion.

The implication for diagnosis is important. When you see traffic appearing in a strange place, trace it forward to the destination and backward to the source. The visible jam is often a symptom of a downstream pinch point, not the problem itself.

Parking and Last-Mile Logic

Private vehicles include a parking-search phase that surface streets handle separately from through-traffic. Agents will circle blocks looking for a spot, and if none exists they may abandon the trip or keep circling, which in turn blocks lanes. This is why dense commercial cores without parking infrastructure develop congestion that no amount of road widening fixes — the cars are not trying to pass through, they are hunting for parking.

Lane Usage and Distribution

Dynamic Lane Selection

A major change from CS1 is that lane assignment is no longer hard-coded per road type. Agents select lanes dynamically based on the turns they need to make and the relative load on each lane. A three-lane road feeding into a right turn will see the right lane carry most traffic, the middle lane carry some, and the left lane carry little — which is realistic, but it means the left lane is often visually empty while the right lane is backed up.

Players frequently misread an empty lane as “the AI is broken.” It is not. The lane is empty because few vehicles need to go the direction it serves. The fix is almost never “force more cars into that lane”; it is to change the junction geometry so that fewer vehicles need the overloaded turning movement.

Lane Merging and Drop-Offs

When a multi-lane road drops a lane, CS2 does not evenly redistribute traffic. Agents tend to merge early, and the merge itself becomes a conflict point. A highway that goes from three lanes to two at an exit will often jam before the exit, not at it, because through-traffic merges left in anticipation.

The standard mitigation is to extend the lane drop further downstream or to use a collector-distributor layout so that exiting traffic separates from through-traffic before the lane count changes.

The Highway Merging Problem

On-ramp merges are one of the most common sources of highway congestion. CS2’s merge logic gives priority to the mainline, which is correct, but the ramp length and the angle of the merge affect how aggressively ramp traffic can find a gap. Short, sharp on-ramps force ramp vehicles to slow or stop, and the congestion then propagates back onto the surface street that feeds the ramp.

Long, parallel on-ramps (the “weave” style) work better because they give ramp traffic a window to match speed and slot in. Where space allows, a roundabout or diamond interchange at the surface end smooths the feed into the ramp.

Junction Priority Logic

Priority Roads and Yield Marks

CS2 introduced a priority-road system: roads can be designated as priority routes, and traffic on side streets must yield. At unmarked junctions, the simulation falls back to a first-come-first-served / right-of-way heuristic that is much less efficient. The single most impactful change a struggling city can make is to upgrade its main arterials to priority roads so that side-street traffic stops randomly yielding mid-intersection.

You can see the effect directly in the traffic info view: unmarked junctions show red conflict zones where vehicles are braking and waiting; marked priority junctions show green flow.

Roundabouts vs. Signalized Intersections

Roundabouts work well in CS2 for moderate-volume junctions because they eliminate the left-turn conflict and keep traffic moving at low speed. They fail at high volume because the circulating flow blocks entry — the same problem real roundabouts have. A rule of thumb that holds up in practice: if a roundabout’s entry queues back onto an arterial during rush hour, replace it with a signalized intersection or a grade-separated interchange.

Signalized intersections in CS2 are not fully customizable — you cannot set individual phase timings in the base game the way traffic-mod veterans did in CS1 with TM:PE. The game auto-times phases based on approach demand, which is usually adequate but occasionally produces a phase that gives too little green to a heavy movement.

Grade Separation

The most reliable fix for any junction that is structurally over capacity is to remove the conflict entirely with a bridge or tunnel. CS2’s road tools support elevation, and a simple overpass on a heavy arterial-to-arterial movement will outperform any at-grade solution. The cost is build expense and visual clutter, so reserve grade separation for the two or three worst junctions in a city rather than applying it everywhere.

Road Hierarchy: The Framework That Prevents Most Jams

The Four-Tier Model

Traffic in CS2 is designed around a hierarchy:

  • Highways — high speed, no access to adjacent buildings, connects districts.
  • Arterials — medium speed, carries traffic between neighborhoods, limited direct property access.
  • Collectors — lower speed, distributes traffic within a neighborhood.
  • Local streets — low speed, provides direct building access.

The system breaks when the hierarchy is violated — most commonly when a local street is used as a through-route because it happens to connect two arterials, or when buildings are zoned directly onto an arterial. Both create turning movements that interrupt through-flow.

Zoning Off Arterials

Zoning commercial or high-density residential directly on an arterial is the single most common self-inflicted congestion cause. Every building generates curb activity — deliveries, parking entries, service vehicles — and that activity blocks a through-lane. The fix is to zone arterials with a buffer of parks, trees, or a parallel collector, and to place the actual buildings one layer back.

A typical healthy block: arterial → frontage road or collector → local street → buildings. Traffic that needs to pass through stays on the arterial; traffic that needs to stop stays off it.

Hierarchy Breaks to Watch For

  • A single local street carrying more traffic than a neighboring arterial — usually a missing connection on the arterial side.
  • A highway with buildings touching it — highways should never have direct zoning access.
  • An arterial that dead-ends into a local street network — the arterial dumps its load onto streets not built for it.

Diagnosing a Jam: A Repeatable Method

When a junction goes red, work through this sequence rather than immediately widening roads:

  1. Open the traffic info view and identify the conflict zones. Red patches indicate yield or merge conflicts; identify which movements are fighting.
  2. Trace the heavy movement to its origin and destination. Use the routes view to see where the cars are coming from and going to.
  3. Check the road class of every segment in the path. If a highway trip is routing through a local street, the hierarchy is broken somewhere — usually a missing highway ramp or a missing arterial link.
  4. Check whether the junction has priority markings or signals. An unmarked four-way with heavy flow on all arms will never clear; mark the dominant road as priority or add signals.
  5. Check for lane-drop or merge geometry upstream. The visible jam may be downstream of where the actual problem is.
  6. Only after all the above, consider adding capacity. Adding lanes to a road that is jammed because of a hierarchy break or a parking problem will not fix it and often makes it worse.

Common Fixes and Why They Work

ProblemSymptomFixWhy it works
Highway on-ramp backs onto surface streetQueue on the feeder roadLengthen ramp, add roundabout at surface endGives ramp traffic time to match mainline speed
Arterial jammed at a commercial zoneCurb activity blocks a laneMove zoning one street back, add collectorRemoves turning conflict from through-lane
Roundabout entry blockedCirculating flow prevents entryReplace with signalized intersection or overpassEliminates the circulating-blocks-entry failure mode
Local street used as through-routeQuiet street suddenly busyAdd missing arterial connectionRestores hierarchy so through-traffic uses the right class
Lane drop causes upstream merge jamJam before the lane endsMove the drop downstream or add parallel routeRemoves the merge conflict from the pinch point
Empty lane next to a jammed laneOne lane backed up, others freeChange junction geometry, not lane assignmentAgents are correctly selecting for their turn; fix the movement

What Mods Change

The base game does not allow per-lane direction control or manual signal phasing. Community mods — most notably the Traffic mod, the declared successor to CS1’s TM:PE — restore that granularity. For most players the base-game hierarchy and priority tools are sufficient; mods are worth the complexity only when a specific junction cannot be made to flow with the stock tools and grade separation is not feasible.

Sources & further reading

Next read