Pull Up Resistor Calculator

Choose and check an I2C pull-up resistor using voltage, bus capacitance, speed, and any existing pull-ups.

Advanced options
Installed parts and recommendation
Low-signal limits
Best resistor to add on each line
Recommendation result
Final value with your resistor
Your resistor check
Smallest safe final pull-up
Largest safe final pull-up
Rise time with your resistor
Low-signal current with your resistor
Assumptions used
Did we solve your problem today?


How to use our Pull Up Resistor Calculator

  1. Enter the Pull-up voltage (V), choose the I2C speed, and enter the estimated Bus capacitance (pF) for one signal line.
  2. Enter the Resistor you may use (ohms) to check what happens if you install that value on SDA and SCL.
  3. Open Advanced options if you have Existing pull-ups on this line (ohms), a different Allowed low voltage (V), a weaker Weakest sink current (mA), or a preferred Round recommendation to setting.
  4. Select Calculate, then compare Your resistor check with Smallest safe final pull-up and Largest safe final pull-up.
  5. Sanity-check the result: Rise time with your resistor should be at or below the speed limit, and Low-signal current with your resistor should not exceed the weakest device limit.
Example inputs for Pull Up Resistor Calculator
Example inputs for Pull Up Resistor Calculator

Definitions

I2C speed: The bus mode you plan to use. Faster modes allow less rise time, so they usually need a lower pull-up resistance.

Pull-up voltage (V): The voltage connected to the pull-up resistors. This sets the high signal level and affects low-signal current.

Bus capacitance (pF): The total capacitance on one I2C signal line from chips, traces, wires, and connectors. More capacitance makes the line rise more slowly.

Allowed low voltage (V): The highest voltage that still counts as a low signal when a device pulls the line down.

Weakest sink current (mA): The lowest current limit of any device that must pull the I2C line low.

Existing pull-ups on this line (ohms): Pull-up resistors that are already connected to the same signal line, such as resistors on sensor breakout boards.

Final value with your resistor: The effective resistance after the checked resistor is placed in parallel with any existing pull-ups.

Rise time: The estimated time for the signal to rise from 30% to 70% of the pull-up voltage.


I2C pull-up rise-time limitsMaximum allowed 30% to 70% signal rise time by I2C speed mode. Lower measured rise time is better; values above the selected mode limit are too slow.I2C pull-up rise-time limitsMaximum allowed 30% to 70% signal rise time by I2C speed modeFast+FastStandard0 ns120 ns300 ns1000 nsRise time limit (ns)
I2C pull-up rise-time limits
Lower measured rise time is better; values above the selected mode limit are too slow.

Common mistakes and quick fixes

Mistake: Entering the chip supply voltage instead of the actual Pull-up voltage (V) .
Fix: Use the voltage connected to the pull-up resistors, such as 3.3 V or 5 V.

Mistake: Leaving breakout-board resistors out of Existing pull-ups on this line (ohms) .
Fix: List every pull-up already connected to the same SDA or SCL line, separated by commas.

Mistake: Using a guessed Bus capacitance (pF) that is far too low for long wires or many modules.
Fix: Raise the estimate when the bus has long leads, connectors, several devices, or a large board trace.

Mistake: Treating Resistor you may use (ohms) as the final value when existing pull-ups are also present.
Fix: Read Final value with your resistor , because parallel resistors make the final resistance lower.

Mistake: Leaving Weakest sink current (mA) blank when a device data sheet allows less than the I2C default.
Fix: Enter the lowest sink-current rating from the connected devices.

Mistake: Ignoring a failing Your resistor check because one detail looks good.
Fix: A usable value must pass both Rise time with your resistor and Low-signal current with your resistor .


Limitations & Key Assumptions / Boundary Conditions

  • The calculator is for passive resistor pull-ups on an I2C-style open-drain or open-collector bus.
  • Results depend strongly on Bus capacitance (pF). If capacitance is only guessed, treat the answer as a design estimate and verify the real bus if timing is tight.
  • The default Weakest sink current (mA) is 3 mA for Standard and Fast mode, and 20 mA for Fast-mode Plus. Enter a device-specific value if a data sheet is lower.
  • The default Allowed low voltage (V) is 0.4 V. Some devices or voltage levels may use a different low-level limit.
  • Adding another pull-up resistor can only lower the final resistance. It cannot fix a bus where Existing pull-ups by themselves are already too strong.
  • The math does not model active pull-ups, rise-time accelerators, level shifters, bus buffers, leakage current, signal ringing, or layout problems.
  • I2C normally needs matching pull-ups on both SDA and SCL, but the capacitance and existing resistors can differ between lines.

Methodology

Safe range

The calculator first finds the allowed final pull-up resistance range. The smallest safe value is set by low-signal current. The largest safe value is set by rise time.

R_min = (V_DD - V_OL_max) / I_OL

R_max = t_r / (0.8473 * C_b)

V_DD is Pull-up voltage (V), V_OL_max is Allowed low voltage (V), I_OL is Weakest sink current (mA) converted to amps, and C_b is Bus capacitance (pF) converted to farads. The 0.8473 factor is the 30% to 70% rise-time part of an RC charge curve.

Checked resistor

If Existing pull-ups on this line (ohms) are entered, the calculator combines them with Resistor you may use (ohms) as parallel resistors.

R_parallel = 1 / (1/R_1 + 1/R_2 + ... + 1/R_n)

It then estimates the checked rise time and the current a device must sink while holding the line low.

t_r_checked = 0.8473 * R_effective * C_b

I_low = (V_DD - V_OL_max) / R_effective

The checked value passes only when the final effective resistance is at least R_min and at most R_max.

Recommendation

When a safe range exists, the exact target is the middle of the safe range on a ratio scale.

R_target = sqrt(R_min * R_max)

If there are no existing pull-ups, the recommended resistor is the target rounded to the selected common series when possible. If existing pull-ups are present and are higher than the target, the calculator solves for the extra resistor that would make the final parallel value land near the target.

R_add_exact = 1 / (1/R_target - 1/R_existing)

For E12 or E24 rounding, the calculator tests common resistor values and chooses the candidate whose final effective resistance is inside the safe range and closest to the target on a ratio scale.

best = smallest abs(ln(R_candidate_effective / R_target))

Mini example

For 3.3 V Fast-mode I2C, 100 pF bus capacitance, 0.4 V allowed low voltage, and the default 3 mA sink current, the safe range is about 967 ohms to 3541 ohms. The target is about 1851 ohms, so an E24 recommendation is 1800 ohms. A checked 4700 ohm resistor gives about 398 ns rise time and 0.617 mA low-signal current, so it is too weak for the 300 ns Fast-mode rise-time limit even though its current is safe.


Sources