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.

calculated
calculated
calculated
calculated
Type in any field to change it. Press × on a value to calculate that field instead.

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.

Embed this calculator

Free to use on your website or blog. Copy this code: