As indicated by others, when trying to reuse part of a layout in a new project, I first make sure target project schematic and pcb are synced, then I select and copy relevant schematic in source project, and do paste special in the new project’s schematic, then do ‘select on PCB’ for the source project and copy the selected layout in source PCB, then do paste special in target PCB, finally do target schematic and PCB sync. While it works sometimes, more often than not, the refdes are mismatched in target schematic and PCB. If it’s a complex circuit, I ended up spending lots of time fixing that, almost defeating the purpose of avoiding doing layout all over again. Please advise if I did something wrong in the process or if there is a better way to reuse layout.
You have to be very sure to use the option: Keep existing reference designators, even if they are duplicated. It’s easy to forget.
And this only preserves the RefDes, and not the (hidden) UUID’s, so you also have to use the option: Re-link footprints to schematic symbols based on their reference designators afterward. (And use this option once, only to sync, turn it off afterwards).
And you also have to make sure to resolve duplicated RefDes manually.
I do not know here whether KiCad misbehaves in any way for you, or whether you made a mistake during this (somewhat complex) process. I do find it a bit strange that KiCad still has not implemented a “better way” to maintain links between symbols and footprints. The most common use is re-organization of the schematic, where a single sheet project is turned into a hierarchical sheet. One problem here is that UUID’s should not be copied. If an UUID is copied, it’s not unique anymore. As long as these are in different projects, it’s not a direct problem yet, but if a “part” is copied more then once (I.e. you want to add two voltage regulator circuits to the new project), then it is a real problem.
Recently, work has been done on design blocks, and a first draft is now implemented in the nightlies. See PCB Design Block Usage for more info.
One way to circumvent the problem is to use Project Manager / File / Save as and then make a copy of the old project, but this works best if there is a lot of duplication between those two projects.
A better option is to first try to figure out why it did not work for you, and then re-do the Paste Special with the correct options. It’s easy to skip giving this process some conscious thought, because intuitively it should be “simple” and you’re probably focused on some other part of your project.
As a last resort, you also have the option to delete all the old footprints from the PCB, and only preserve the tracks. Then you can put the new footprints on the locations of the old footprints. It’s still manual labour, but because you have both the ratsnest and can use the old (preserved) tracks you can snap to, this may be quicker then repairing the connections to the old footprints on the PCB.
@paulvdh Thank you for the information. I did got some of the options wrong. Not sure if I got wrong info from the very beginning, or just misremembered. I will try what you suggested for the next project. BTW, do you know when V10 will be released with the design block feature. It’s certainly a highly desired one at least for me.
For a few years KiCad is on a yearly release cycle, and the new mayor release is somewhere around February.
Tried Design block feature with the nightly build. However, got following error when running fabrication tool kit. Suspect it’s a bug with the Design block function. Any help fixing the issue is much appreciated.
FOOTPRINT.Duplicate() missing 1 required positional argument: 'addToParentGroup’
Application: KiCad PCB Editor x64 on x64
Version: 9.99.0-3665-g677676f457, release build
Libraries:
wxWidgets 3.3
FreeType 2.13.3
HarfBuzz 10.2.0
FontConfig 2.15.0
libcurl/8.13.0-DEV Schannel zlib/1.3.1
Platform: Windows 11 (build 26200), 64-bit edition, 64 bit, Little endian, wxMSW
OpenGL: ATI Technologies Inc., AMD Radeon™ 890M Graphics, 4.6.0 Compatibility Profile Context 25.9.1.250822
Build Info:
Date: Oct 14 2025 07:38:35
wxWidgets: 3.3.0 (wchar_t,STL containers)
Boost: 1.88.0
OCC: 7.9.1
Curl: 8.13.0-DEV
ngspice: 45.2
Compiler: Visual C++ 1944 without C++ ABI
KICAD_IPC_API=ON
KICAD_USE_PCH=OFF
Locale:
Lang: en_GB
Enc: UTF-8
Num: 1,234.5
Encoded кΩ丈: D0BACEA9E4B888 (sys), D0BACEA9E4B888 (utf8)

