InfyCalculator
💻

I2C Pull-Up Resistor Calculator

Calculate the minimum and maximum I2C pull-up resistor for SDA and SCL from the supply voltage, bus speed mode and bus capacitance (NXP UM10204), plus a suggested standard value and its rise time.

Pull-up supply voltage
Bus speed mode
Bus capacitance
Loading calculator…

How it works

R_p(min) = (V_DD − V_OL(max)) ÷ I_OL · R_p(max) = t_r ÷ (0.8473 × C_b) · V_OL = 0.4 V (0.2 × V_DD below 2 V) · I_OL = 3 mA (Standard / Fast), 20 mA (Fast-mode Plus) · t_r = 1000 ns / 300 ns / 120 ns

I²C lines are open-drain, so a pull-up resistor pulls SDA and SCL high and the devices pull them low. Too small a resistor makes the low level exceed 0.4 V because the driver can only sink 3 mA (20 mA in Fast-mode Plus); too large a resistor and the RC charge of the bus capacitance is too slow to meet the rise-time limit (the 0.8473 factor is ln(0.7/0.3), the 30%–70% rise). These limits come from the NXP I²C-bus specification UM10204. Any value between them works; lower values are faster but draw more current.

Worked example

A 3.3 V Fast-mode (400 kHz) bus with 200 pF: R_min = (3.3 − 0.4) ÷ 3 mA = 966.7 Ω and R_max = 300 ns ÷ (0.8473 × 200 pF) = 1.77 kΩ, so the pull-up range is 967 Ω – 1.77 kΩ. The suggested E12 value is 1.2 kΩ, giving a rise time of 203.4 ns and a low-level current of 2.75 mA.

Sources: NXP UM10204 — I²C-bus specification and user manual (section 7.1) · Texas Instruments SLVA689 — I2C Bus Pullup Resistor Calculation

Frequently asked questions

What pull-up resistor should I use for I2C?

It depends on voltage, speed and bus capacitance. 4.7 kΩ is a common default for 100 kHz on short buses; at 400 kHz with 100–200 pF you usually need 1–2.2 kΩ. Use the range here rather than a fixed rule.

Why does bus capacitance matter?

The pull-up charges the bus capacitance through an RC curve. Rise time is 0.8473 × R × C, so doubling the capacitance halves the largest resistor that still meets the rise-time limit.

Do I need pull-ups on both SDA and SCL?

Yes, one on each line, normally a single pair for the whole bus. Many breakout boards already include 4.7 kΩ or 10 kΩ pull-ups; several boards in parallel lower the effective resistance.

What if no resistor value fits?

The bus capacitance is too high for the chosen speed. Shorten wiring, remove devices, drop to a slower mode, use Fast-mode Plus drivers, or add a bus buffer or active pull-up such as an LTC4311 or P82B96.

Related calculators

This calculator is for educational purposes. Double-check important results before acting on them.