I2C pull-up resistor calculator

Picking 4.7k by habit fails on a long or heavily loaded I2C bus at 400 kHz. Minimum and maximum pull-up per the I2C specification, with the closest E24 value.

Open the calculator in EM·LINKBelow is a worked example. The working calculator runs free in EM·LINK.

Worked example

Example inputs

3.3V
Fast-mode, 400 kHz▾
150pF
0.4V
3mA

Example result

E24 pick2.2 kΩ

The largest E24 value inside the valid range, so the bus draws the least current.

QuantityValue
Rp(min)967 Ω
Rp(max)2.36 kΩ
Rise time with 2.2 kΩ280 ns of 300 ns
Sink current with 2.2 kΩ1.32 mA
Rise time with 4.7 kΩ597 ns, too slow

Valid E24 values run from 1.0 kΩ to 2.2 kΩ.

Calculations run in your browser. Nothing is sent to us.

Run it with your own values

The working calculator is I²C Pull-Up Calculator in EM·LINK, our free browser tool. The button opens it directly.

Open in EM·LINK

How to read the result

If Rp(max) comes out below Rp(min), no resistor works at that speed. Shorten the bus, add a buffer, or slow down.

Estimate bus capacitance at about 10 pF per device plus 1 pF per cm of trace. The spec caps it at 400 pF.

How this is calculated

The lower limit comes from how much current a driver can sink while holding the line at VOL. The upper limit comes from the RC rise time allowed at the chosen speed.

Rp(min) = (Vdd - Vol) / Iol Rp(max) = tr / (0.8473 × Cb) tr: 1000 ns (100 kHz), 300 ns (400 kHz), 120 ns (1 MHz)
30 %70 %Vddt tr = 0.8473 × RC = 0.8473 × 2.2 kΩ × 150 pF = 280 ns The line charges through the pull-up. The specification measures rise time from 30 % to 70 % of Vdd,which takes ln(7/3) = 0.8473 time constants.

The full derivation, step by step, is in the EM·LINK documentation.

Calculated per NXP I2C-bus specification (UM10204). These tools are an engineering aid, not a certification.

Next step

Shipping hundreds of units? Get OTA updates and remote config without building it yourself.

Common questions

What pull-up for 400 kHz I2C?

Depends on bus capacitance. Enter Cb and the tool gives the valid range and an E24 pick.

Is 4.7k always fine?

For short 100 kHz buses usually. At 400 kHz with more load it is often too high.

Where does 0.8473 come from?

It is ln(7/3), the RC time constants between the 30 and 70 percent points that UM10204 uses to define rise time.