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
- Right-click the local label and choose Change To → Change to Global Label (same path in KiCad 9 and 10).
- Repeat on any other sheet that used the local spelling of this net.
- 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
- 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.
- 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. DatavsDATAdoes not trigger this check; case-only differences are thesimilar_labelswarning.- 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.
Related errors
- Labels are similar (lower/upper case difference only) (reference page coming soon)
- Global label only appears once in the schematic (reference page coming soon)
- Label not connected
- More than one name given to this bus or net
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.