I2C Pull-Up Resistor Calculator (Min & Max Rp)
I²C lines are open-drain, so pull-up resistors set both the low-level current the devices must sink and the rise time of every edge. This I2C pull-up resistor calculator finds the allowed range from the I²C specification and the rise time of the value you pick — background on pull-up and pull-down resistor values and SPI vs I²C.
How to use the I2C pull-up resistor calculator
Enter the pull-up supply, choose the bus speed (which sets the maximum rise time from the I²C specification), and enter the sink current and bus capacitance. The calculator returns the allowed range of pull-up values. Enter the resistor you plan to fit to check its rise time and sink current.
I2C pull-up formulas
Rp(min) = (VDD − VOL(max)) / IOL · Rp(max) = tr / (0.8473 × Cb)
Worked example
3.3 V bus, Fast mode (tr ≤ 300 ns), VOL = 0.4 V at 3 mA, 200 pF:
- Rp(min) = (3.3 − 0.4) ÷ 3 mA = 967 Ω
- Rp(max) = 300 ns ÷ (0.8473 × 200 pF) = 1,770 Ω
- A 2.2 kΩ resistor gives tr = 373 ns — too slow; a 1.5 kΩ gives 254 ns and passes
Maximum pull-up resistor vs bus capacitance
| Bus capacitance | Standard (1000 ns) | Fast (300 ns) | Fast-mode Plus (120 ns) |
|---|---|---|---|
| 50 pF | 23.60 kΩ | 7.08 kΩ | 2.833 kΩ |
| 100 pF | 11.80 kΩ | 3.54 kΩ | 1.416 kΩ |
| 200 pF | 5.90 kΩ | 1.77 kΩ | 0.708 kΩ |
| 300 pF | 3.93 kΩ | 1.18 kΩ | 0.472 kΩ |
| 400 pF | 2.95 kΩ | 0.89 kΩ | 0.354 kΩ |
I²C timing limits (NXP UM10204)
| Mode | Clock | Max rise time | Max bus capacitance | IOL at VOL = 0.4 V |
|---|---|---|---|---|
| Standard | 100 kHz | 1000 ns | 400 pF | 3 mA |
| Fast | 400 kHz | 300 ns | 400 pF | 3 mA |
| Fast-mode Plus | 1 MHz | 120 ns | 550 pF | 20 mA |
Notes
- Fit one pull-up per line (SDA and SCL) for the whole bus — module boards often add their own, which appear in parallel.
- If no value satisfies both limits, reduce capacitance, use a bus buffer, or use an active current-source pull-up.
Frequently asked questions
How do I calculate the I2C pull-up resistor value?
R_min = (V_DD − V_OL) ÷ I_OL and R_max = t_r ÷ (0.8473 × C_b). Any value between the two works; pick a lower value for faster edges and a higher one for lower power.
Where does the 0.8473 factor come from?
I²C rise time is measured from 30% to 70% of V_DD. For an RC charge that takes RC × ln(0.7/0.3) = 0.8473 RC.
Is 4.7 kΩ right for I2C?
For 100 kHz with modest capacitance, yes. At 400 kHz and 200 pF the maximum is about 1.8 kΩ, so 4.7 kΩ gives too slow a rise time — use 1.5–2.2 kΩ.
How do I estimate bus capacitance?
Add about 10 pF per device pin plus roughly 1–2 pF per cm of PCB trace or cable; measure the rise time with an oscilloscope to confirm.