NPTH Mounting Holes ... AAAaarrgh! Or, how to get them right the first time


Well, I THINK have them figured out now, but it has taken me several hours for 2 friggen holes… LOL

To have a great search-able post, I’ll work through the steps here. Make any corrections or suggestions and I’ll edit this OP.

1) Help me Obi-Wan Kenobi, you’re my only hope… Open PcbNew, and depress the “o” key (( or left click the “Add Component” button) (or find it in the menu bar)), then click the location on the board where you want a mounting hole. A new window will pop-up, and I recommend choosing the “Select by Browser” method.

1a) Once the above button is clicked, navigate to the “Mounting_Holes” library in the left pane and left click on it. There are a lot of choices, but none of them were exactly right for my needs. It was easiest to just pick one at random (to edit after placement); left double click on one of them!

1b) Despite being required to click a location first, it is required to left click again to confirm that is where you wanted to place it.

HINT/NOTE: It LOOKS like a single pad, it really is not. It is a component without a body. It is needed to select the component for the next step.

  1. Select the mounting hole component (recommend by left-clicking on the outside of the visual edge and “clarifying” the selection) the and depress the “e” key (or right click on:

2a) Legacy canvas: “Edit Parameters”

or: OpenGL canvas: “Properties”

Note: It really is simpler to just depress the “e” key.

  1. You’re Going to Need a Bigger Boat… Notice that in the “Move and Place” section, the “Lock Pads” option is selected. Change that selection to “Free”; then click “OK”.

  2. Left click in the center of the component (on the pad itself) and depress the “e” key or ^^^ select as shown above ^^^.

  3. In the “Pad Type” drop down menu, select “NPTH, Mechanical”.

5a)Edit the pad dimensions to your requirements.

HINT/NOTE: The number on the pad is no longer visible, but it is still a component.

  1. Toto, I’ve a feeling we’re not in Kansas anymore. Using OpenGL Canvas) Left click on the center of the pad/component and depress “Ctrl” + “e”.

6a)Edit the pad dimensions to your requirements.

HINT/NOTE: Since, even now it remains a component; even though we just want a hole, I recommend changing the “Ref**” text, and the “MountingHole…” text (on the fab layer) to invisible.

HINT/NOTE: KiCad itself knows that this text is there. The Gethub library names are very long. I recommend changing the name to just “hole” and later moving the hidden text INSIDE the board edges. If you are curious as to why, leave the long name way outside the board edges. After finishing step 9) in this post, then depress the “Home” key to find out.

  1. Left click, on the top menu bar, the “Update footprint in current board”. Close the editor.

8)Select the mounting hole component (recommend by left-clicking on the outside of the visual edge and “clarifying” the selection) the and depress the “e” key or ^^^ select as shown above ^^^.

  1. Notice that in the “Move and Place” section, the “Free” option is selected. Change that selection to “Lock footprint”; then click “OK”.

HINT/NOTE: In the Netlist importer, There is an option to Keep or Delete Single Pad Nets. Well, I usually check Delete for all the selections. Guess what “Single Pad Nets” actually means and how I figured it out when my holes all vanished every time I re-read the Netlist. I know that locking the footprint keeps the Netlist reader from making the PCB holes vanish. Select, or test, locking only the “pad” at your own peril.

  1. Hey Steve, did ya bring me any pizza Steve? Duplicate the hole as many times as needed.

[Solved] How to add holes to footprint?
Simple via and mounting holes troubleshoot

I really did spend nearly 3 hours to get two holes in my board correct. I really did spend a bit of that time doing searches, Here, Google, and YouTube; to no avail.

Zero “comments”, zero “likes”, and I’m left wondering why. I’ve got two theories.

  1. Everyone else already knew this.

  2. My Google-Fu was very weak that day.

I spent quite a bit of time on this post and I see that it is slowly fading away into the distance. I’d like to know why before I spend such time again.


Well to be honest it is quite a long post and i didn’t read it the first time round.

Now a long answer to your long post:

I was confused by that. Is it correct that you do that because you lock the component and don’t want to get a warning everytime you move it? The problem here is that if you only move the pad, your fab and courtyard layer markings do not move with them. (I have placed components to close to mounting holes before. I would strongly advice you mark the needed space on courtyard and fab layers and check if you violate them.)

There are plenty of mounting holes with none plated through holes in the library you mentioned.
Example: MountingHole_3.2mm_M3 (or just look in the preview. The footprints without a copper ring are the npth type mounting holes.)

I am also convinced that it might be a good idea to create a custom footprint if none of the footprints in the library fulfill your requirements. (Why? because you will need mounting holes on all of your pcbs. And i’m sure that a lot of them will be mounted in the same manner.)

As said above i would also show the outline of the screw or whatever you use to mount your board on the fab and crtyd layers. (You will thank me sometime in the future for this advice.)
Don’t forget that you will need space for your tools. (The fab layer has the outline of the screw head the crtyd layer the outline of the tool plus a bit extra.)

Very good idea if you don’t have the mounting holes in the schematic. Also very usefull for stuff like logos. They also vanish if you are not careful when importing the netlist. (or when using the new tool update pcb from schematic that is available in nightly)
But as said above this creates “problems” if you want to move the part. I would suggest you place the mounting holes where you need them and after that you do this.

A hint from my side: If you place the mounting holes use a grid that is as large as possible. This way you get nice measurements for the mounting hole distances. I normally use 0.5 or even 1mm grid for placing mounting holes and for the board outline. (The mechanical engineer that designs your housing will thank you for that.)

If you have external constrains on mount hole placement this thread has a quite good solution by @Joan_Sparky:


I’ve not had any issues, just using add component in pcbnew, pick required mounting hole from list and place where required.

I don’t know if this is a difference between the nightly version i have and version 4.


I noticed that very few people actually like posts. Not even posts that solved their problem get a like. A lot of times there is no message back. So one is left wondering if one has helped or if the original poster simply gave up.

I also noticed a trend whereby controversial opinions get more likes than genuinely good information. (This holds true everywhere on the Internet. It’s better here than elsewhere but still noticeable.) So don’t take it personally if you don’t always get a like. It’s just how it is.

Also note that good posts might get likes later on when someone with the same problem comes along and finds your post helpful.

And don’t take me to serious either. It’s two o clock in the morning here and I really should go to sleep.


I’m trying to sort through the EXTREMELY HELPFUL information that you provided; I’ve read it three times now.

I’ll have a reply by tomorrow.


Well as stated it’s late here maybe some of it is not written well. My English gets worse when I’m tired.




Visually it’s a little bit like a wall of text and as I personally have my way I didn’t bother to read it :wink:

Images help with this - they take the boringness out, say more than a thousand words and work as visual anchor points that cause curiosity.

If you want to place text emphasis there is the ‘#’ symbol, which will cause:
if placed on their own line.

PS: I also like answers all the time, as the posters will get special powers (edit posts, change thread titles/categories) after they’ve been on the forums for a while… sharing the workload a bit and make their life easier as well, as they can do more.


I have a standard HOLE_M3 component I place on schematic
That is automatically associated with a HOLE_M3 footprint
I position the holes on the PCB using the grid, (or sometimes set the positions using the dialog)

Creating the lib parts took a few minutes. I don’t know how many hours of using KiCad it took to get to the point where creating new lib parts takes a few minutes, many more than 3 hours I guess.

I tend not to google for walkthroughs or video how to’s, my brain remembers stuff better if I worked out principles first hand. Even if I make a list, I forget where I put the list…


Above, Rene_Poschl mentioned using this method as well.


I’ve never seen a “professional” schematic with “physical holes” described on it.

I do GET why though, as I was tinkering with trying to figure out what was going on I also placed holes on my schematic. Then I realized how non-standard that idea was.

Simply put, HOLES have ZERO functionality on a schematic and have NEVER been on any of the hundreds (thousands?) of schematics I have read.

On top of that ^^^ PcbNew allows adding components, such as mounting holes, to the physical board; it just doesn’t do it very intuitively.

HAH! I really wanted to get my design uploaded to OSH Park for fab ASAP. As such, I was trying to find any short cut or cheat that I could to save myself time! Otherwise, I would have spent the time to figure out exactly what the differences were between locked pads and locked footprints; at this time I only know that I discovered that locked footprints worked for me and the steps taken in my OP.

Thanks for your feedback!


Well, I DON’T CARE at all what you think, even if you SHOUT AT ME. :slight_smile: But you asked for comments :wink:

Invariably when people ask for comments, they don’t mean that, they just want a pat on the back and a “well done!”.

I’m sorry now I made a comment, so to avoid further dispute I will place your username on my ignore list.


I did say, “Thanks for your feedback!”… should it have been, “THANKS FOR YOUR FEEDBACK!!!” ?

The text I wrote was never meant to be any sort of personal attack.

Oh, and BTW, even before your post, I had already started to edit my OP based upon earlier suggestions. The suggestions were good, but not as easy to implement as I thought they would be.


I don’t like it either. I also never put things like mounting holes on a schematic, then again I don’t put footprints, part numbers or mounting hardware on a schematic either.


I have a whole (local) library of mounting hole footprints - several standard sizes, with or without washer clearances, a few plated-through with copper pads for explicit chassis ground connections, etc. I plunk them on the board in PCBNew and accept the fact that they’ll trigger a DRC response. (Same thing for some company logos that the boss likes to see on the silkscreen.) LEARNING to create footprints took a while but even while still a KiCAD Apprentice it wasn’t tedious or burdensome to make a mounting-hole footprint.



Some mounting holes are plated through, and are used for chassis ground connections. To make that work, they need to be on the schematic.

Holes which aren’t plated through can be put on the schematic or not. I actually have seen many schematics where NPT holes are on the schematic, along with callouts for screws, standoffs, firmware part numbers, even the PCB itself. (You want the PCB on the BOM, right?)

This is one of those places where Kicad’s flexibility is helpful. You can do it your way, @bobc and I can do it our way. Complaining to us that “our way” is wrong doesn’t help. Present a positive case why your way is better and it’ll be considered.

  1. I like to test such recipes before commenting on them (and have nothing to add to yours since it works).

I’ve also seen quite a few schematics that contained more than just the symbols for the electronic parts, so I guess it’s two vs. one :wink:

As for

[quote=“Sprig, post:11, topic:5799”]
I DON’T LIKE IT! [/quote]

Simply create a subsheet and put all holes, vias, etc. there. Out of sight, out of mind but still useful for BOM management and minimizing DRC errors.


I mentioned that I have been primarily employed as a military avionics technician; space and weight considerations are not things that should be on a schematic for a technician to muddle through.

The mechanical are always on a separate document; and FAR more complex then just mounting holes that do NOT connect to the pieces to the ground chassis.

Having “holes” on the schematic would appear to be “amateurish” among the professionals that I work with. If KiCad wants to be invited by professionals, then it needs to visually present itself as a professional tool.

I don’t hold any “feelings” about this issue.

A suggestion would be to add a mechanical layer to the schematic; handling only visual details on non-PCB technical layers off to be represented for mechanical requirements. The 3D viewer seems to be able to do some of this.

It took me some time, but I figured out how to do it the way the professionals in my industry present it; but it was neither intuitive or quickly accomplished.

And, I AM going to finish editing the OP with all of the suggestions provided; but I’ve been STUCK trying to work out the KiCad libraries mess…



PS: [quote=“Sprig, post:18, topic:5799”]
A suggestion would be to add a mechanical layer to the schematic; handling only visual details on non-PCB technical layers off to be represented for mechanical requirements.

Sounds nice, but will take a damn long time, as essentially it would require some sort of CAD code that would enable you to draw like in a 2D CAD tool - hopefully with driving dimensions.
Don’t know if the schematic capture program would be the right tool for this either.

IMHO - What people here talk about is merely a ‘hacky’ means to automate footprint loading in the Layout tool via the netlist that is based on the schematic.


Sprig- Just came across this posting of yours. Excellent info and I almost understood it all - lol. I’m on my tablet at the moment but will reread and try the workflow on a tiny pcb I’m working on as my very first Kicad design. I’m using 5.0.2 on Windows and have been slowly grinding my way through the docs. It’s slow going but I’m making progress.

Are there any changes to your outlined steps now that kicad 5 is officially out ?

Thanks again for a great post and cheers from sunny Canada,