Why do some PCB designers put pull-up resistors on pins where there is already an internal pull-up?

Because the pull-up/down may not be active in some operating modes

Pull-ups by their nature can cause a continuous current draw if the input is at 0V. This is undesirable in a low-power shutdown, so they may be disabled when the device is powered down. Other devices (especially microcontrollers) may be configurable for whether an input pulls up or down, and typically by default will start high-impedance. In both these cases, an external pull-up/down may be needed instead to ensure lines start off in the correct state.

Because the pins may also do other things

Some pins on some devices may have multiple purposes. I am currently using a microcontroller where the state of some pins is read at startup to tell the micro what memory addressing to use. The pins may then be used as general I/O, which may include pull-ups/downs. We have weak external pull-ups/downs to get the initial state we want, and the pins are then used normally with the stronger internal pull-ups/downs giving the desired I/O behaviour.

Because an internal pull-up/down may not be the resistance you want/need

Check the datasheet for your device. If you've got even 10% tolerance on your internal pull-ups/downs, that's unusually good for internals. Of course for a regular resistor though, that's pretty bad. If your design requires an accurate resistance - for example, if it feeds an ADC - then you need something better, and you're going to want a discrete resistor.

Alternatively your application may need a stronger or weaker pull-up than the I/O pin gives you, depending on what's on the other end. Commenters have seen this in various applications.

I've also seen this myself where the pull-up in conjunction with an external capacitor formed a low-pass filter with a cut-off at an inconvenient frequency. Again, an external pull-up was needed to set the correct cut-off. Sure, the capacitor could have been changed instead, but small value caps have their own issues, and production methods mean you want to restrict the number of unique components if you're having them made by a pick-and-place machine.

(Thanks for input from commenters to improve this.)


For improved noise immunity.

The internal pullups (or pulldowns) tend to be fairly weak in most devices, 20 Kohms->100 Kohms, and with wide variability. Depending on your environment, these may not be strong enough to prevent coupled noise from being seen as a valid logic level. This is especially true if that input goes off board or out of the box.


Many people leave resistors on unused pins in case they need to use those pins in the future; a pull-up (or down) resistor is a half-decent place to solder a wire and the presence of a resistor doesn't usually prevent the IO line still being used retrospectively.

You should also read the fine print carefully: -

enter image description here

Some applications may require it!!