I2C Pull-up Resistor Calculator
Compute the valid pull-up resistor range for I2C buses. Balance rise-time limits against sink-current constraints across 100 kHz, 400 kHz and 1 MHz modes.
About This Calculator
I2C uses open-drain drivers, so every bus needs pull-up resistors. The value is bounded: low enough to meet the rise-time requirement (with bus capacitance) and high enough not to violate the controller's low-level sink current (Iol) at VOL. This calculator finds both bounds and a practical mid-point.
How to Use
- Enter the total line capacitance: trace estimate (~1-2 pF/cm on FR4) plus every device pin on the bus.
- Select the fastest speed mode you will use — this sets the allowed rise time (1000/300/120 ns).
- Set the bus supply voltage and the VOL/Iol from the weakest driver on the bus.
- A 'Valid = 1' means a workable range exists between the two bounds.
Formulas
| Min pull-up | R(min) = (Vcc − VOL) / Iol |
| Max pull-up | R(max) = t(rise) / (0.8473 × C(bus)) |
| Recommendation | R(rec) = √(R(min) × R(max)) |
Design Notes
Rise time constant: V rises to 70.7% (0.8473 factor) of the rail in t = 0.8473 × R × C.
PMBus/SMBus may have additional sink-current limits — check each device's Iol spec instead of assuming 3 mA.