What this error means

ERC collects the text of every local label and every global label in the schematic, all sheets included, and warns once for each name that appears in both sets. The comparison is an exact, case-sensitive string match on the resolved label text; a case-only difference is reported by the separate similar_labels check instead. The marker is placed at the global label, and the violation lists one local label with the matching name — one warning per name, however many copies of the label exist.

The pairing deserves a warning because of scope. A local label connects only within its sheet; a global label connects across the whole schematic. Same name on the same sheet: one net. Same name on different sheets: two nets that merely look identical, and nothing else flags the difference.

Common causes

1. A local label was expected to reach a global net on another sheet

The most common case. A signal has a global label on one sheet, and another sheet uses a plain local label with the same name, assuming name equality means connection. Across sheets it doesn't: the local label makes its own net, electrically separate from the global one.

2. A generic name collides by accident

Short names like CLK, DATA, or OUT get reused. A local label never meant to relate to the same-named global net still trips the check, and is still worth renaming: two unrelated nets with one name is how a probe lands on the wrong trace later.

3. One net on one sheet carries both label types

A net picked up a local label at one end and a global label at the other, usually from editing history. On the same sheet they do connect, so the circuit works — but pasting that local label onto another sheet silently creates a second net, which is the first cause.

How to fix it

Make the label global where the net really spans sheets

  1. Right-click the local label and choose Change To → Change to Global Label (same path in KiCad 9 and 10).
  2. Repeat on any other sheet that used the local spelling of this net.
  3. Re-run ERC (Inspect → Electrical Rules Checker) and highlight the net (backtick) to confirm it now spans the sheets.

Use when: The local and global labels were meant to be one net. Converting the label merges them everywhere, not just on the sheet you happen to be viewing.

Rename one of them if they are genuinely different nets

  1. Double-click the local label and give it a name that cannot be confused with the global one, e.g. a block prefix: ADC_CLK instead of CLK.
  2. Re-run ERC; the warning clears as soon as the two name sets no longer intersect.

Use when: The name match is a coincidence. Renaming the local label is the cheaper edit, since global labels may be referenced from several sheets.

When it’s safe to exclude

Rarely. The fix costs one rename or one label conversion, and what the check catches — a net that reads as connected but isn't — survives every visual inspection, because the names on the wires are identical. Excluding a single violation (right-click the marker → Exclude) is defensible only when a same-sheet pair is deliberate and documented. Downgrading the whole check in Schematic Setup → Electrical Rules → Violation Severity trades a one-time annoyance for silent cross-sheet splits in every future revision.

Gotchas

  • A same-sheet local/global pair with one name actually is one net — the netlist for the checked-in repro shows both pins on a single net named DATA — and ERC warns anyway. The warning is about what the pair does to the next editor, not about today's connectivity.
  • Data vs DATA does not trigger this check; case-only differences are the similar_labels warning.
  • Hierarchical labels are not examined by this check at all.
  • The warning names one pair, but every copy of that local label needs renaming or converting, or the next ERC run reports a survivor.

Version notes

  • KiCad 9.0: Check introduced in this release.
Minimal reproduction

Two minutes in the editor: wire a pin, end the wire with a global label DATA; wire another pin elsewhere, put a local label DATA on it; run ERC. The report shows:

[same_local_global_label]: Local and global labels have same name
    ; warning

The checked-in file data/erc/samples/same_local_global_label.kicad_sch reproduces this with two embedded one-pin symbols, one wire ending in a global DATA, one in a local DATA. Because the file embeds its own symbols, ERC also emits two lib_symbol_issues warnings about the missing repro library — an artifact of the self-contained repro, not part of this error. Renaming the local label, or changing it to a global label, drops the warning: both fixes in miniature.

FAQ

Do local and global labels with the same name connect in KiCad?

Only when they are on the same sheet. There, the local label and the global label merge into one net. On different sheets a local label is its own net, no matter what it is called, and the global net passes it by. That asymmetry is what this warning exists to point out.

How do I connect a local label to a global net?

Change the local label into a global one: right-click it, then Change To → Change to Global Label. Or place a global label directly on the same wire; a net may carry both label types on one sheet. Only global or hierarchical connections cross sheet boundaries.

Is it a problem to mix local and global labels on one net?

On a single sheet it is legal and electrically sound, but it has caused real unintended connections: KiCad issue 9367 documents a global label quietly bridging nets carrying UART RX and TX. KiCad 9 added this warning so the intent gets stated with one label type.

Sources