What this error means
For every placed symbol, ERC groups that symbol's pins by pin number. If a
number appears on two or more pins and those pins do not resolve to the same
net name, the check fails, naming the first two nets it found. An unwired
copy counts: it sits on an auto-generated net like Net-(U1-B), which is
not the same net as the wired copy.
Duplicate pin numbers are how libraries model several physical pads that
are one point electrically: a connector's shield pads, a MOSFET's doubled
source pins. All copies map to the same pad number in the footprint, and a
pad carries exactly one net, so two nets on one pin number is a
contradiction the netlist cannot represent. That is why the severity is
hard-coded: the check does not appear in Schematic Setup → Electrical
Rules → Violation Severity, and ERC_SETTINGS::GetSeverity returns
error for it unconditionally.
The check is per placed unit; a pin shared across units of a multi-unit
symbol is covered by different_unit_net instead. KiCad 10 adds one
escape hatch: a symbol with All pins with duplicate numbers are
jumpers enabled is skipped entirely (its same-numbered pins may then
bridge nets, which KiCad merges). KiCad 9 has no such option, and KiCad 8
and earlier do not run this check at all.
Common causes
1. Only one copy of a stacked pin is wired
The most common trigger. The symbol stacks several pins under one
number, you wired one copy and left the rest hanging. Each unwired
copy lands on its own auto-generated net, so the check fires
(alongside a pin_not_connected error for the hanging copy).
2. Two copies deliberately wired to different nets
The symbol's duplicate pins are being used as if they were separate pads: a solder-jumper or net-tie style part, or doubled pads someone wants on two rails. The netlist cannot do this from one pin number; KiCad 10's jumper option is the supported way to let one part bridge nets.
3. An accidental duplicate number in a hand-edited symbol
Two genuinely different signals got the same pin number, usually a copy-paste slip in the Symbol Editor. The wiring is right; the symbol is wrong. Check the footprint's pad numbers while you are at it.
How to fix it
Wire every drawn copy of the pin to the same net
- Click the violation marker; it points at the two conflicting pin copies.
- Wire the unwired copy to the same net as the wired one, or move the wrongly-wired copy onto the right net.
- Re-run ERC (Inspect → Electrical Rules Checker).
Use when: The duplicates really are one electrical point (shield pads, doubled power pins). Every drawn copy has to be on that one net; this also clears the companion pin_not_connected error.
KiCad 10: declare the duplicates as jumpers
- Open the symbol in the Symbol Editor (right-click → Edit Symbol).
- File → Symbol Properties → Pin Connections tab → check "All pins with duplicate numbers are jumpers".
- Update the symbol in the schematic and re-run ERC.
Use when: The part is meant to bridge nets through its pads (solder jumper, net tie). KiCad then joins the nets through the symbol instead of flagging them. KiCad 9 has no equivalent; there, give the pads distinct pin numbers and matching footprint pads.
Renumber the pin that should never have been a duplicate
- Open the symbol in the Symbol Editor and use the pin table (View → Pin Table) to see both pins with the number.
- Give the second pin its real number, and check the footprint's pad numbers still match.
- Update the symbol in the schematic and re-run ERC.
Use when: The duplicate is a numbering mistake and the two pins are different signals. Only do this for symbols you maintain.
When it’s safe to exclude
Almost never, and KiCad is unusually firm about this one: the check has no entry in Schematic Setup → Electrical Rules → Violation Severity, so it cannot be downgraded or ignored project-wide. Excluding a single marker (right-click → Exclude this violation) is the only suppression that exists, and what it hides is that one of the two drawn connections will not exist on the board. After exclusion, that surfaces as an unrouted or shorted net in layout, with nothing left pointing back at the cause.
Gotchas
- The check arrived in 9.0. A schematic that was clean under KiCad 8 can light up after an upgrade without a single edit — the old libraries were always wired this way; nothing checked them before.
- In KiCad 10, enabling the jumper option merges the nets through the
part. If both nets carried labels, ERC immediately follows up with a
multiple_net_nameswarning for the merged net. Expected, but a surprise the first time. - Each duplicated pin number reports one violation naming only the first two conflicting nets; a third copy on yet another net shows up on the next run.
Version notes
- KiCad 9.0: Check introduced in this release.
- KiCad 10.0: Symbols with "All pins with duplicate numbers are jumpers" enabled (Symbol Properties → Pin Connections) are skipped by this check.
Minimal reproduction
In the Symbol Editor, give any symbol a second pin with the same number as
an existing one. Place it, wire the two copies to wires labeled NET_A
and NET_B, and run ERC:
[duplicate_pins]: Pin 1 on symbol 'U1' is connected to different nets: /NET_A and /NET_B
; error
The checked-in file data/erc/samples/duplicate_pins.kicad_sch reproduces
this with an embedded two-pin symbol whose pins are both numbered 1, each
tied to a differently-labeled net through a one-pin neighbor. Because the
file embeds its own symbols, ERC also emits three lib_symbol_issues
warnings about the missing repro library; those are an artifact of the
self-contained repro, not part of this error. Renaming the NET_B label
to NET_A drops the error count to zero, which is fix #1 in miniature.
Related errors
- Different net assigned to a shared pin in another unit of the symbol
- More than one name given to this bus or net
- Pin not connected
FAQ
Do I have to connect every stacked pin, or is wiring one of them enough?
Every drawn copy needs to be on the net. An unwired copy sits on its
own auto-generated net such as Net-(U1-B), which KiCad 9 and 10
treat as a conflict with the wired copy. Wiring one pin of the stack
stopped being enough when this check arrived in 9.0.
Do two pins with the same number connect to each other automatically?
On the board, yes — same pin number means same footprint pad, one net. In the schematic, no — each drawn copy connects only where a wire touches it, and ERC requires all copies to agree on the net. The one exception is a KiCad 10 symbol with "All pins with duplicate numbers are jumpers" enabled, where the copies may bridge nets.
I get a duplicate pin error on a multi-part IC — is the symbol broken?
Check which error it is. A pin shared across units (a power pin drawn
in every op-amp unit) that sits on two nets reports
different_unit_net. duplicate_pins fires within one placed unit,
which means that unit genuinely has two pins with the same number —
open the pin table in the Symbol Editor to see them.