Find similar objects

With Altium there’s a very powerful option to right-click an object and do a ‘find similar objects’. What you get is a popup with all the properties of the object and per property the option to find same, different or any objects with this property.

For example:

  1. I want to change all References for symbols on the top overlay to a mechanical layer. In Altium I right-click the Reference, select: TopOverlay: Same. Now all References are selected and I can change the layer in the property box.
  2. Or: I want to delete all traces outside of a selected group of traces: Right click one of the selected trace, select: Selected: different. Now all traces are selected and I can press delete.

The closest thing in KiCad to this is the symbol fields table which you can sort by different columns:

You find it here:


There is also this thread about the same topic: "Find Similar Objects"
And this post about feature requests also has something like this: What feature are you most looking forward to in Kicad v10? - #48 by schlabs

I tried to use the symbol fields table but it didn’t let me select the References field only of the symbol in the PCB editor.

There is also this thread about the same topic: “Find Similar Objects”

I saw that thread but it still only solves a fraction of the capabilities of Altium’s ‘search similar’ functionality.

What I did to select all the References was disabling all the layers except the one with the references, then set the selection filter to text, selected all and later re-enabled the layers I needed. But still it takes too much steps and it wouldn’t work well if the layer also contains texts which aren’t references. Also another approach would need to be taken to select for example non-selected tracks with a certain width (if ever possible).

The ‘search similar’ is so powerfull that it could replace multiple seperate functions like Find (/Replace) Edit Track & Via Properties… Edit Text & Graphics Properties… Edit Teardrops… Change Footprints… Edit Text & Graphics Properties… Change Symbols… etc. all within a single right click (no wonder Altium has put it on top of the right click options).

I didn’t see the feature request so I will add my vote and comment there, thanks!

I think voting this comment won’t really push the priority. It should be posted on GitLab for that.

I also did not want to show you solutions with these links, I just wanted to let you know that you are not alone :slight_smile:

Sorry, but this is not great advice, that thread is useless (and now I see it’s been locked, thanks @eelik)

Feature requests get made in GitLab and existing ones get voted on in GitLab. I think the original point of that thread was for people to talk about things that already had been made for V10 that they were excited about, but it quickly devolved into people just asking for things, and the development team does not decide on what to do based on a forum thread.

Here’s the relevant one to vote for: Properties Search / Parametric Search / Find Similar Objects (#8390) · Issues · KiCad / KiCad Source Code / kicad · GitLab

I think I need more experience with KiCad to add a ‘solid’ feature request, that’s why I liked the (now closed) thread. Just to shoot on things and see what gets more likes than the other before doing a feature request. The fact people used it for asking things shows there’s a need for a place to discuss feature requests imho.

Thanks for the GitLab link :grinning:

I also said that he should not vote there and post it on GitLab instead

Sure, but I think even directing people to that thread is a mistake. It is very confusing to have a thread full of what looks like people making feature requests when those are not feature requests.

1 Like

You can discuss feature ideas here with other users, but it should generally be one feature per thread (like this one! I think opening this thread was fine). The problem with that thread is that some people seemed to be interpreting it as a wishlist for V10 rather than a place to discuss whether or not any given feature should be implemented.

While there is nothing inherently wrong with users making a wishlist for V10, I think it shouldn’t be encouraged because a lot of new users find this forum who aren’t familiar with how KiCad is developed, and they might confuse it for an official wishlist that will mean something.

1 Like

Okay, thanks for the replies!

I added my upvote and I see it’s a popular request (#7 in the top 10 requests) :+1:

2 Likes

Is not the same thing. “find similar objects” only select. So in propierties you will find all common fields and do everything that you want. For example:

  1. Select all strings with Arial 10 and change it to Times.
  2. Select all resistors and change the library symbol to capacitors if you want
  3. Select only labels in red
  4. Select all resistors with NC and mark as NO BOM

The list is big, very big because “find similar objects” not do anything, only select the elements

1 Like

I second that. And the fact it works in every editor (schematic, layout, footprint, symbol) with just one rightclick away makes so simple and versatile.

I just had ChatGPT create some examples, to show how powerfull Find Similar Objects (FSO) is. This list is virtually endless and no complex search operators are needed (just set wat you want or not want):

Schematic (SCH) — smart recipes

Normalize power pin visibility
Goal: Hide VCC/GND pins on logic ICs.
FSO: Object Kind = Pin, Electrical Type = Power, Component = Same Library Ref.
Action: Inspector → Visible = False.

Standardize parameter casing
Goal: Force Manufacturer and MPN parameters to uppercase.
FSO: Components with Parameter “Manufacturer” Any (exists).
Action: Inspector → Manufacturer = =Upper(Manufacturer) (Inspector supports simple functions).

Lock critical net labels
Goal: Prevent accidental drags on high-risk nets.
FSO: Net Labels with Net = VCORE or BOOT*.
Action: Locked = True.

Bulk swap room membership
Goal: Move selected sheet’s components into a named Room.
FSO: Components, Source Document = ThisSheet.
Action: Room = MyRoom_Analog.

Unify designator placement rules
Goal: Keep designators outside sheet symbols.
FSO: Designator strings inside Sheet Symbols (Location Within Object = Sheet Symbol).
Action: Move by ΔX/ΔY or Justification to chosen corner.

PCB — precision control

Retarget only “non-rule” track widths
Goal: Bring odd widths back to rule.
FSO: Tracks where Width ≠ Rule (Set Width = Different).
Action: Inspector → Width = From Rules.

Lift micro-vias out of paste-mask pads
Goal: Un-tent vias only when they sit inside SMD pads on Top.
FSO: Vias; Layer Pair = Top-Mid, In Component Pad = True, On Top Layer = True.
Action: Tenting (Top) = False.

Normalize diff-pair members
Goal: Set width/clearance for both members without disturbing others.
FSO: Tracks, Net Class = (your diff pair class).
Action: Width = 0.1 mm, Clearance = 0.1 mm, then Length Tuning = Reset.

Bump only stubs on a given net
Goal: Find & delete stubs on a high-speed net (cleanup).
FSO: Tracks, Net = PCIE_TX*, Connection Kind = Stub.
Action: Delete or Slide.

Re-priority overlapping polygons
Goal: Set GND pour to higher priority than AGND only in a region.
FSO: Polygons in Area (use selection area) with Net = GND or AGND.
Action: Priority = GND:10, AGND:5, Pour = Repour.

Tighten keepout for courtyard breaches
Goal: Expand component keepouts only for tall parts.
FSO: Components, Height > 8 mm.
Action: Generate/Resize Component Keepout (Inspector) or add Room and apply clearance rules.

Uniform pad fillet tweak (wavesolder)
Goal: Only THT pads on Bottom to have larger solder mask expansion.
FSO: Pads, Hole Type = Plated, Layer = Bottom Side, Pad Type = Thru-hole.
Action: Solder Mask Expansion = 0.08 mm (Manual).

3D body housekeeping
Goal: Hide 3D Bodies on assembly layers for a quick 2D assembly export.
FSO: 3D Bodies, Layer = Mechanical 1/13 (your ASM layer).
Action: Visible = False.

DRC exception containment
Goal: Mark only intentional neck-downs as “Waived”.
FSO: Tracks, Net = VBUS, Min Width Violating = True, Within Room = “USB_PWR”.
Action: DRC = Create Waiver (context) with note.

Flip-side text unification
Goal: Force all Bottom Overlay designators to mirrored + 1.2 mm.
FSO: Strings, Layer = Bottom Overlay, IsDesignator = True.
Action: Mirrored = True, Height = 1.2 mm.

Via stitching, but only inside copper islands
Goal: Stitch GND islands beneath RF can.
FSO: Regions/Polygons, In Component = RF_Shield, Net = GND.
Action: Add Stitching Vias (Inspector) → pitch and grid as required.

Variants / BOM / assembly

Variant: set Fitted by class
Goal: Unfit all components in class DEBUG_ONLY for Release variant.
FSO: Components, Component Class = DEBUG_ONLY.
Action: Fitted = False (in Variant Manager through Inspector).

Normalize supplier links
Goal: Clear obsolete “Supplier 2” only where stocked “Supplier 1” exists.
FSO: Components with Parameter “Supplier 1” Any & “Supplier 2” Any.
Action: Supplier 2 = (blank).

Assembly side sanity
Goal: Ensure LEDs on front only.
FSO: Components, Comment contains “LED”, Layer = Bottom.
Action: Flip (or relocate) or Mark Variant Unfitted.

xSignals / timing

Retarget one interface timing quickly
Goal: Re-apply length target to all xSignals in DDR3_DQS0 room.
FSO: xSignals, In Room = DDR3_DQS0.
Action: Matched Length Target = 40.0 mm, Tolerance = ±0.5 mm.

Fix serpentine amplitude only on over-tuned lines
Goal: Reduce meanders that exceed amplitude.
FSO: Length-Tuning Objects, Amplitude > 0.8 mm.
Action: Amplitude = 0.6 mm, Gap = 0.2 mm.

Mechanical / documentation

Regenerate paste-mask for fine-pitch only
Goal: Halve paste for <0.4 mm pitch parts.
FSO: Components, Pitch < 0.4 mm.
Action: Paste Mask Expansion = Rule/Custom, Paste Cutout = 50%.

Tight assembly drawing
Goal: Show only RefDes + Outline on ASM layer.
FSO: Component Outlines on Mechanical 13 + Designator strings.
Action: Visible = True; hide everything else on that layer via FSO.

Power moves (FSO + Inspector tricks)

Scope by “Same”, then push to Query
In FSO, tune fields (e.g., Net Class = Same, Layer = Same), click Create Expression → save in PCB Filter for one-click reuse later.

Delta-move precisely
After FSO selection, in Inspector use ΔX/ΔY to nudge a whole class (e.g., shift all bottom-side designators by +0.2 mm Y).

Conditional numeric edits
Inspector supports From Rules and numeric =Max/Min() style helpers; e.g., set Width to =Max(Width, 0.15mm) across selection.