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

  1. Select the label and move it (M) so its anchor sits on the intended wire only, away from any crossing.
  2. Highlight the net (backtick) to confirm the name now follows the wire you meant.
  3. 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

  1. Place → Place Junctions (J) and click the crossing point.
  2. KiCad splits the wires at the dot; the label now names the single merged net.
  3. 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.

  • 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