A train waiting at a red signal is not automatically a broken train. The useful question is what it is waiting for, and whether another train can ever clear that space. This walkthrough separates three problems that look similar from a distance: an occupied block, an invalid route and an intersection with nowhere safe to stop. It is a documentation-based troubleshooting method for ordinary rail networks, not a claim that we tested your blueprint.
| Symptom | First check | What would explain it |
|---|---|---|
| No path | Signal side along the route | A one-way section blocks the destination |
| Red signal | Whole highlighted block | Occupancy, reservation or circuit condition |
| Crossing blocked | Waiting block after the exit | The longest train cannot clear the junction |
Start with one stopped train and one destination

Write down the symptom before changing anything: waiting at a signal, reporting no path, or sitting at a scheduled stop. Take a screenshot of the junction and note the train’s direction. Replacing several signals at once may get traffic moving temporarily while hiding the original cause; changing one boundary gives you something you can actually compare.
For a no-path problem, inspect direction first. Factorio places signals on the right relative to travel; an unpaired signal on the left prevents automatic travel in that direction. A visually connected line can therefore still be unusable. Follow the intended route rather than inspecting only the signal closest to the locomotive.
Read the entire block, not just the empty track ahead

Hold a rail signal to see the colored block overlay. Those rail colors identify separate blocks; they are not the meanings of red, yellow and green signal lamps. Connected track beyond the camera view may belong to the same block. A station name is not a substitute for a signal boundary.
Use this small diagnosis log: stopped train, entrance signal, complete highlighted block, other entrances, occupying train. If you cannot name the train or reservation that explains a red light, keep tracing the block and check any circuit condition. A blinking signal calls for checking its placement and whether it genuinely separates blocks, rather than adding another train to test it.
Give a train somewhere to wait after the intersection

A chain signal takes information from signals ahead, helping a train wait before a conflict rather than inside it. When several exits have different states, its blue state does not mean every route is free: passage depends on the train’s selected route. That is why reading only the lamp without considering the destination can be misleading.
For a basic junction, use chain signals before and within the conflict area, then a regular signal where the train can leave it. The important qualification is storage space beyond that exit. If your longest train cannot fit fully in the next waiting block, its rear can still obstruct the crossing. Extend the waiting space or continue chain control to a genuinely safe stopping location.
Test a traffic pattern, not a lucky departure
After one change, watch the same route with a clear exit and again while that exit is occupied. Your success condition is that a waiting train remains outside the crossing and clears it completely when allowed through. Then inspect a conflicting route. A single departure proves very little about two trains arriving together.
Keep a before-and-after note with train length, changed signal and observed stopping position. If the problem survives, restore your last known layout before trying a different hypothesis. This is more useful than collecting a larger pile of signals. For complex junctions, the linked tutorial provides additional layouts; this checklist deliberately does not claim to solve every station scheduling or circuit design problem.
