What this error means
For every local net label, ERC takes the label's anchor point and counts the wire and bus segments that pass through that point without ending there. More than one passing segment triggers this warning.
Wires that cross without a junction do not connect, so a label whose
anchor lands exactly on a crossing could name either wire. KiCad does not
merge the two nets and it does not pick the wire you meant: it attaches
the label to one of them, and which one is not defined. In the run used
to verify this page, the label NET1 named the horizontal wire while the
vertical wire was auto-named Net-(U1-C); issue #21494 reports the
assignment flipping between sessions of the same schematic. Your netlist
can change without the schematic changing, which is why this check
exists.
Segments that end at the label's anchor are not counted, because meeting endpoints form a junction and the connectivity is well defined. An ordinary label in the middle of a single wire, or at a T-junction, never triggers this.
Common causes
1. The label was placed on the crossing point of two wires
You meant to name one wire, but the label's anchor (the small square at its corner) snapped onto the exact point where another wire crosses it. Both points are on grid, so nothing looks wrong until ERC counts two wires under the anchor.
2. A later wire was routed through an existing label's anchor
The label was fine when placed. A rework pass then routed a new wire across the labeled one, straight through the anchor point. The schematic still reads the way it always did, which makes this variant easy to miss.
How to fix it
Move the label onto a clear stretch of the wire it names
- Select the label and move it (M) so its anchor sits on the intended wire only, away from any crossing.
- Highlight the net (backtick) to confirm the name now follows the wire you meant.
- Re-run ERC (Inspect → Electrical Rules Checker).
Use when: You meant to name one wire and the crossing is incidental. This is the usual case.
Add a junction if the two wires are supposed to connect
- Place → Place Junctions (J) and click the crossing point.
- KiCad splits the wires at the dot; the label now names the single merged net.
- Re-run ERC.
Use when: The crossing was meant to be a connection all along.
When it’s safe to exclude
Don't. The warning marks a spot where your netlist is decided by chance: the label attaches to one of the two wires arbitrarily, and the choice can change the next time the schematic is loaded. Excluding the violation (right-click the marker → Exclude) or downgrading it in Schematic Setup → Electrical Rules → Violation Severity keeps that coin-flip in your design while removing the only thing pointing at it. Both fixes are one click; there is no layout constraint or library convention that requires a label to sit on a crossing.
Gotchas
- Only local labels are checked. A global or hierarchical label with its anchor on the same crossing is exactly as ambiguous and produces no warning at all (verified on 9.0.3: same arbitrary net split, clean ERC report). Don't read silence as approval.
- Buses count as wires here. A label whose anchor sits where a wire crosses a bus trips this check too, alongside a bus_to_net_conflict error for the label's trouble.
- The coordinates in the report line are KiCad's internal units, not millimeters: divide by 10,000. "at 1143000, 1016000" means (114.30 mm, 101.60 mm).
Version notes
- KiCad 9.0: Check introduced in this release.
Minimal reproduction
Draw two wires that cross without connecting (neither ends on the other), then place a local net label exactly on the intersection point and run ERC. The crossing reports:
[label_multiple_wires]: Label connects more than one wire at 1143000, 1016000
; warning
The checked-in file data/erc/samples/label_multiple_wires.kicad_sch
reproduces this with one embedded four-pin symbol whose pins terminate a
horizontal and a vertical wire crossing at the label. Because the file
embeds its own symbol, ERC also emits one lib_symbol_issues warning
about the missing repro library; that is an artifact of the
self-contained repro, not part of this error. Moving the label off the
crossing clears the warning and leaves two separate nets; splitting the
wires at a junction instead clears it and merges everything into one
net.
Related errors
- Label not connected
- More than one name given to this bus or net (reference page coming soon)
- Four connection points are joined together (reference page coming soon)
FAQ
Which of the two wires actually gets the label's name?
Whichever one KiCad happens to attach it to; the choice is not defined and can flip when the schematic is reloaded. One wire gets the label's net name, the other gets an auto-generated name like Net-(U1-C). Treat the current assignment as luck, not intent.
Does a label at the intersection connect the two crossing wires?
No. Crossing wires without a junction dot stay separate nets in current KiCad, label or not. The label names one of the two wires and leaves the other alone. To actually connect them, place a junction at the crossing.
Is it OK to route a wire across another wire without connecting them?
Yes. Plain crossings are normal schematic practice and never connect anything. The warning is only about a label whose anchor point sits exactly on such a crossing, because then the label itself is ambiguous.
Sources
- KiCad 9 Schematic Editor manual — List of ERC checks
- KiCad 10 Schematic Editor manual — List of ERC checks
- Check implementation — ERC_TESTER::TestLabelMultipleWires, eeschema/erc/erc.cpp at KiCad 9.0.9.1
- Check implementation — eeschema/erc/erc.cpp at KiCad 10.0.3
- KiCad issue #21494 — connectivity with a label at the intersection of two nets