Error: Multiple footprints found

I did a re-annotate and now I got this error, multiple footprints found.

How can I get rid of the multiple footprints instead of deleting them one by one? And how is this error introduced in the first place?

If you mix designators you should not re-link footprints to schematic by designators.
I use re-link by designators when I replace at schematic some symbols with new ones (with the same designator).
Symbols when placed at schematic got unique identifier and footprint is linked based on that identifier (and not designator). I remember reading about it in KiCad manuals (V4 those time) before I even downloaded KiCad for the first time.

I don’t get that. This would make sense if patterns are linked by reference but when patterns are linked by the unique ID, there shouldn’t be any discrepancies between the schematic and the layout.

Still the references are mixing up. I would argue that if these unique IDs are removed or changed from the schematic, why are they still present in the layout?

Until you ask KiCad to “Re-link …based on their reference designators”.

When at the project end I reorganize references (I do it by dividing schematic into blocks, that I position far away of sheet, annotate, and then move them back), thanks to everything being linked by uids I can just update pcb and all references are correctly updated.

During years I found that if I forget to do that order in references nothing wrong happens. Computer reading P&P file doesn’t protest :slight_smile:

Based on what you assume they are changed?
I think they are never changed, but I have never did any experiments to check it and never looked for them in schematic/pcb files.

I changed them earlier on myself in the schematic and now end up with the duplicates in the pcb.

The problem is, I now have many duplicates (C3, C4, C5 etc, see screenshot). I don’t know exactly what went wrong. I tried to clean up, no matter what I do (checking Re-link, tried several combinations), I cannot get rid of the duplicates!

There must be some function to fix the PCB especially if the components are linked by a unique ID.
afbeelding

You should be running the Schematic Editor and the PCB layout via the Project Interface ? . . . if you start them directly (rather than from the Project I/F) this kind of thing can happen as they are not properly linked.

1 Like

It was my question on you writing “if these unique IDs are removed or changed”.
Now you write that you have changed them.
How did you changed unique IDs?
I don’t know the way to do it. May be by using text editor and finding these IDs and changing them randomly.

I agree with you. I have never met situation when after updating from schematic I had elements doubled.

What always help is to turn back time using yesterday backup.

I wasn’t quite clear on that, I meant when the symbols with these unique IDs are removed or changed, the appropriate pattern on the PCB should be removed or changed (stay in sync as they are not linked to the reference designators).

Altium also works with unique IDs and never had the problem with syncing schematic <> pcb.

So I wonder what went wrong and what I can do to fix it. I will share the project.

@RaptorUK i opened all from the main project interface and also when selecting components they correspond over the schematic and pcb editor.

Are you able to share this project ? You can ZIP it up from the project I/F and attach it here.

It crashed when I tried to save, second time within a few days. Attached the log file as well.

Anyway, see the project attached.

Scherm­afbeelding 2025-08-15 om 14.03.41

IsoDap.zip (862.7 KB)

The first question is easy to answer. The second one is more difficult.

First: you are now having (in the state which you uploaded the zip file) for example two C4 capacitors in the PCB. You are trying to “Re-link footprints to schematic symbols based on their reference designators”.

For KiCad this means it’s trying to ignore old UUIDs and create new UUDIDs, using for example “C4” as the link between the schematic and the PCB. Now it doesn’t know what it should do with two C4 footprints. The situation is impossible to handle automatically. Because you seem to have no PCB yet, only the randomly placed footprints, the easiest way to fix this is delete everything and do the update with correct settings.

Normally the “correct settings” are without the “Re-link” option. That option is reserved for some special situations. See more about this in Update PCB from Schematic's match methods - #2 by eelik.

From the information you have given I can only guess an answer for the second question. You have imported from Altium something: maybe the schematic only? But you have footprint library called “AltiumImport”, so I don’t know if you have imported only the library and started the schematic from scratch in KiCad. It’s difficult for me to follow the previous comments in this thread. The current state of the project doesn’t tell how the situation emerged. If you tell all the steps which you did in order, we may be able to tell. But maybe you understand it already if you read the FAQ article.

1 Like

For now, I done this and this is okay. What if one spent days on a layout and find out later? Then it’s not realistic to delete all the components. How hard can it be to show a dialog to delete abundant components? All discrepancies can be easily solved when the user does an ‘import from SCH’.

Normally the “correct settings” are without the “Re-link” option. That option is reserved for some special situations. See more about this in Update PCB from Schematic’s match methods - #2 by eelik .

I did change that option to see if it would fix the problem. I understand the way the symbol linking works, the UID is similar to what Altium uses. With Altium it’s possible to automatically match or do manual (per component matching. I never had any issues here and used automatic matching 95% of the time.

You have imported from Altium something: maybe the schematic only? But you have footprint library called “AltiumImport”, so I don’t know if you have imported only the library and started the schematic from scratch in KiCad.

The schematic was built from scratch and I used symbols from my Altium library.

I think it’s not hard to come up with a better and more user-friendly matching flow which solves all mismatches either by prompting or default setting.

Symbol ID match > OK
Symbol ID match but properties don’t > (prompt for) update
Symbol ID exist at SCH but not at PCB. Is reference designator present at PCB?

  • yes > (prompt for) update
  • no > (prompt to) add to PCB

Symbol ID exist at PCB but not at SCH > (prompt to) add to SCH. Is reference designator present at SCH?

  • yes > (prompt for) update
  • no > (prompt to) add to SCH

This way syncing can work both ways easily.
I made a quick demo to show how things can be easily and very user friendly solved:
KiCad - Sync with schematic

I just can’t see how this could be possible. You noticed the problems right away, right? Who would do layout with doubled components for a day without noticing it, especially when KiCad actually told about the problem?

Not all. If you have in one way or another created a situation where there are doubled footprints and try to Re-link by refdes, KiCad can’t decide which of the footprints are to be deleted.

Yes, it happens already, when using the default matching method (by UUID).

It doesn’t need to prompt when using the default matching method, it just updates the refdes.

KiCad does that without prompting when using the default matching method.

I’m not sure you have understood how KiCad works in this respect. When doing Update PCB from Schematic, KiCad updates only the PCB, and that’s what it must do. There’s Update Schematic from PCB which is a different function and it can’t work as a mirror compared to Update PCB.

In KiCad it’s possible to create situations which are unsolvable without user intervention, and they require some user knowledge about what should be done to fix the situation. This may not be ideal or optimal, but behind it is the logic that the schematic and the PCB aren’t tied together tightly and updates don’t happen on the fly. The situation is different in for example Eagle where the reference designators are the only link and you can’t separate the schematic from the PCB. That logic causes other problems which KiCad avoids.

KiCad could be more user friendly in this respect. A need for an FAQ article often shows some deficiency in usability. I agree that something could be done. But I think your table just doesn’t work for KiCad, although it can be used as a checklist for possible situations.

I just can’t see how this could be possible. You noticed the problems right away, right?

I worked on LARGE designs with 1000+ components. It can be just one symbol which catches your attention in the last stage…

Not all. If you have in one way or another created a situation where there are doubled footprints and try to Re-link by refdes, KiCad can’t decide which of the footprints are to be deleted.

There’s at least the option to come up with a prompt which show solutions, for example:

  • (force) delete non-linked symbols from PCB
  • add and link symbols to SCH

It doesn’t need to prompt when using the default matching method, it just updates the refdes.

Yes, it depends on if the user doesn’t have to be notified (like a logical action to update the refdes).

I’m not sure you have understood how KiCad works in this respect. When doing Update PCB from Schematic, KiCad updates only the PCB, and that’s what it must do. There’s Update Schematic from PCB which is a different function and it can’t work as a mirror compared to Update PCB.

Yes I understand that, this is exactly similar to Altium. I think Altium lacks a ‘sync’ function in this respect too, but at least it didn’t give any unsolvable problems.

But I think your table just doesn’t work for KiCad, although it can be used as a checklist for possible situations.

I presented it as an idea, it will probably not be rock solid but maybe it can be a source for inspirational motivation / brainstorming / discussion. I am curious tho in what situation it won’t work.