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

  1. Click the violation marker; it points at the two conflicting pin copies.
  2. Wire the unwired copy to the same net as the wired one, or move the wrongly-wired copy onto the right net.
  3. 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

  1. Open the symbol in the Symbol Editor (right-click → Edit Symbol).
  2. File → Symbol Properties → Pin Connections tab → check "All pins with duplicate numbers are jumpers".
  3. 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

  1. Open the symbol in the Symbol Editor and use the pin table (View → Pin Table) to see both pins with the number.
  2. Give the second pin its real number, and check the footprint's pad numbers still match.
  3. 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_names warning 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.

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.

Sources