Choose and check an I2C pull-up resistor using voltage, bus capacitance, speed, and any existing pull-ups.
Table of contents
How to use our Pull Up Resistor Calculator
- Enter the Pull-up voltage (V), choose the I2C speed, and enter the estimated Bus capacitance (pF) for one signal line.
- Enter the Resistor you may use (ohms) to check what happens if you install that value on SDA and SCL.
- 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.
- Select Calculate, then compare Your resistor check with Smallest safe final pull-up and Largest safe final pull-up.
- 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.

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.
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
- I2C Pull-Up Resistor Calculation: A Complete Guide with Formulas - semiconductor.tools Blog - Semiconductor
- Why Your I2C Bus Hangs: Pull-up Resistor Failures - Embedwise
- [FAQ] Selecting the Appropriate Pull-Up Resistor for Open-Drain Comparators - Amplifiers forum - Amplifiers - TI E2E support forums - TI