Stacy Lu
Support Team
Feedback:
support@nextpcb.comI²C is an open-drain bus: every device on SDA and SCL can only pull the line LOW, never drive it HIGH. Without an external pull-up resistor connecting each line back to VDD, the bus would float and logic HIGH would never be reliably reached. Getting the pull-up value (RP) right is a balance between two failure modes — too high, and the bus can’t rise fast enough for your clock speed; too low, and you waste power and risk exceeding a driver’s sink current rating.
This guide walks through how I²C pull-ups work, how to calculate the correct RP for your bus speed and capacitance, and gives quick-reference tables so you don’t have to run the math on every design.
> Related reading: What Are 10 kΩ Resistors and Their Advantages?

Both SDA and SCL use open-drain (or open-collector) drivers. A device pulls its line LOW by switching on an internal transistor to ground; it never actively drives the line HIGH. The external pull-up resistor RP, connected from each line to VDD, is what restores the line to a logic HIGH once every device on the bus releases it.
This arrangement is what makes I²C a true multi-master, multi-slave bus: any device can pull a line LOW at any time (for arbitration or clock stretching) without risk of contention, since no device is ever actively driving HIGH against another device driving LOW.
The trade-off is speed. The rising edge of SDA or SCL is not driven — it’s an RC charge curve, governed by RP and the total parasitic capacitance on the bus, Cb (trace capacitance, pin capacitance of every connected device, connector capacitance, etc.). A larger RP or larger Cb both slow that rise, which is why RP can’t be chosen independently of your bus speed and bus capacitance.
Correct RP selection means finding a value that sits between a minimum, set by the driver’s current-sink capability, and a maximum, set by the rise-time your bus speed allows.
RP must be large enough that when a device pulls the line LOW, the resulting current does not exceed the driver’s maximum sink current rating (IOL,max), and the resulting LOW-level voltage stays under the maximum allowed VOL:
RP,min = (VDD − VOL,max) / IOL,max
Per the I²C-bus specification, VOL,max is typically 0.4 V and IOL,max is typically 3 mA. At VDD = 3.3 V, that gives RP,min ≈ (3.3 − 0.4)/0.003 ≈ 0.97 kΩ. At VDD = 5 V, RP,min ≈ 1.53 kΩ. Going below this bound risks exceeding a device’s sink current rating or pulling VOL out of spec.
RP must also be small enough that the RC rise time stays within the maximum allowed for your bus speed. A commonly used approximation, based on the logic threshold levels defined in the I²C-bus specification, is:
RP,max ≈ tr(max) / (0.8473 × Cb)
where tr(max) is the maximum allowed rise time in nanoseconds, Cb is total bus capacitance in picofarads, and RP,max comes out in kilo-ohms. Maximum rise time is defined per speed mode: 1000 ns for Standard-mode (100 kHz), 300 ns for Fast-mode (400 kHz), and 120 ns for Fast-mode Plus (1 MHz).
Cb is the term most engineers underestimate — it’s not just the two I²C pins on your target IC. It’s the sum of every device’s pin capacitance on the bus, PCB trace capacitance, connector capacitance, and any level-shifter or ESD protection capacitance in the signal path. On a board with several sensors sharing one bus, Cb adds up quickly.
Once RP sits between RP,min and RP,max, the remaining decision is where in that range to land, and that’s a speed-vs-power trade-off:
For most designs, choosing RP roughly in the middle of the valid range — not hugging either bound — gives the best margin against component tolerance, temperature drift, and any bus capacitance you didn’t fully account for.
The table below gives approximate RP,max values at a few common bus capacitances, using the rise-time formula above. Always verify against your actual measured or estimated Cb.
| Speed Mode | Clock Frequency | Max Rise Time | RP,max @ Cb=100 pF | RP,max @ Cb=200 pF | RP,max @ Cb=400 pF |
|---|---|---|---|---|---|
| Standard-mode | 100 kHz | 1000 ns | ≈11.8 kΩ | ≈5.9 kΩ | ≈2.95 kΩ |
| Fast-mode | 400 kHz | 300 ns | ≈3.54 kΩ | ≈1.77 kΩ | ≈0.88 kΩ |
| Fast-mode Plus | 1 MHz | 120 ns | ≈1.42 kΩ | ≈0.71 kΩ | ≈0.35 kΩ |
In practice, common off-the-shelf values follow this pattern:
What is the best pull-up resistor value for I²C?
There is no single best value — it depends on bus speed and total bus capacitance. 4.7 kΩ is the most common general-purpose choice; use the formulas and table above to verify it fits your specific design.
Can I use 10 kΩ pull-ups for I²C?
Yes, but only for Standard-mode (100 kHz) buses with low total capacitance (roughly under 100 pF). For Fast-mode (400 kHz) or higher-capacitance buses, 10 kΩ is usually too large and will violate the rise-time requirement.
Do I need pull-up resistors on both SDA and SCL?
Yes. Both lines are open-drain and require their own pull-up resistor to VDD, sized using the same method.
What happens if my I²C pull-up resistor is too small?
Rise time improves, but static current increases every time a device pulls the line LOW, and you risk exceeding the driver’s maximum sink current rating (IOL,max), pulling VOL out of spec.
What happens if my I²C pull-up resistor is too large?
The bus can’t rise fast enough within your clock period, causing timing violations, misread bits, or bus errors — more likely to show up intermittently as bus length or device count increases.
Do I need pull-up resistors if my microcontroller has internal ones enabled?
For low-speed, short, lightly loaded buses it can work, but internal pull-ups (typically 20–50 kΩ) are too weak for most real I²C designs. External resistors sized per the formulas above are the reliable approach.
I²C pull-up resistor selection comes down to two bounds: RP,min, set by driver sink current, and RP,max, set by rise time and bus capacitance at your target speed. Landing comfortably inside that range — not defaulting to whatever value is already in your parts bin — is what separates a bus that works reliably on the bench from one that fails intermittently once it’s in the field with a full set of sensors attached.
If you’re laying out a board with multiple I²C devices and want a second opinion on bus capacitance or pull-up placement, NextPCB’s engineering team can review your schematic and layout as part of our PCB assembly service.
Engineer Consultation Custom Printed Circuit Boards at NextPCB
Still, need help? Contact Us: support@nextpcb.com
Need a PCB or PCBA quote? Quote now