# IC50 and EC50 calculator with a four-parameter logistic fit

> Free IC50 and EC50 calculator: fit a four-parameter logistic dose–response curve, with 95% CI, Hill slope, relative and absolute IC50, chart and CSV.

URL: https://www.labcanvas.com/tools/ic50-calculator

Paste concentrations and responses (with replicates) and the calculator fits a four-parameter logistic (Hill) curve on a log-concentration axis. It gives the relative IC50 or EC50 with its 95% confidence interval, the Hill slope, the top and bottom plateaus and R², plus the absolute IC50 when you normalise to 0% and 100% controls, with a chart and a CSV.

## Quick answer

- **What it does:** Fits a four-parameter logistic (Hill) dose–response curve to concentrations and responses and gives the IC50 or EC50 with its 95% CI, Hill slope, plateaus and R².
- **Formula:** Y = Bottom + (Top − Bottom) ÷ (1 + 10^((logIC50 − log X) × HillSlope)); 95% CI = logIC50 ± t × SE, back-transformed.
- **Example:** The built-in 9-concentration triplicate inhibition curve fits to a relative IC50 of 35.29 nM (95% CI 29.59–42.08 nM), Hill slope −1.19, R² = 0.9901.

Free, in the browser, no account needed. Updated 2026-11-08.

## Features

- Four-parameter logistic (Hill) fit on log concentration, using the Levenberg–Marquardt fitter of the LabCanvas Graphs app (validated against SciPy)
- Inhibition (IC50) or stimulation (EC50) curves
- Relative IC50/EC50 with a 95% confidence interval, \(\log \mathrm{IC}_{50} \pm \mathrm{SE}\), Hill slope, top and bottom with their intervals, and R²
- Optional normalisation to 0–100% using your 0% and 100% controls, and the absolute IC50 where the curve crosses 50%
- Fix the top and/or bottom when a plateau is not reached
- Any number of replicates; paste wide (one column per replicate) or long (one response per row) data from Excel
- Warnings for extrapolated IC50s and for absolute IC50s without enough points on each side of 50%
- Dose–response chart (mean ± SD and fitted curve) as PNG or SVG, results as CSV; nothing is uploaded

## How to use it

1. **Enter the data**: Type or paste each concentration with its replicate responses. Concentrations must be above zero; zero-drug wells are the untreated control.
2. **Choose the direction**: Pick Inhibition for an IC50 (response falls with concentration) or Stimulation for an EC50 (response rises).
3. **Normalise if you have controls**: Enter the 0% and 100% control responses and tick Normalise to scale the data to percent of control and get the absolute IC50.
4. **Decide on the plateaus**: Leave top and bottom free if the data reach both plateaus; fix them (often 100 and 0 after normalising) if one is not reached.
5. **Read and export**: Read the IC50 or EC50 with its 95% confidence interval and Hill slope, check the warnings, and download the chart and CSV.

## At a glance

| | |
| --- | --- |
| Model | Four-parameter logistic (Hill), fitted on log concentration |
| Fitting | Least squares, Levenberg–Marquardt (validated against SciPy) |
| Gives | Relative IC50/EC50 with 95% CI, Hill slope, top, bottom, R², absolute IC50 |
| Confidence interval | \(\log \mathrm{IC}_{50} \pm t \times \mathrm{SE}\), back-transformed (Ritz et al. 2015) |
| Input | Concentrations with any number of replicates; pasted from Excel |
| Export | Chart as PNG or SVG; results as CSV |

## How it works

The calculator fits the four-parameter logistic model, also called the Hill equation (Gadagkar and Call 2015), with the logarithm of the IC50 as a parameter:

$$Y = \mathrm{Bottom} + \frac{\mathrm{Top} - \mathrm{Bottom}}{1 + 10^{(\log \mathrm{IC}_{50} - \log X) \cdot \mathrm{HillSlope}}}$$

\(X\) is the concentration, Top and Bottom are the plateaus, and the Hill slope sets the steepness (negative when the response falls with concentration). Fitting log IC50 rather than IC50 is preferred for small datasets because the estimate is closer to normally distributed on the log scale (Ritz et al. 2015). Parameters are found by least squares with the Levenberg–Marquardt method; replicates are fitted as separate points.

**Confidence interval.** Standard errors come from the inverse of the information matrix scaled by the residual variance. The 95% interval of log IC50 is the estimate \(\pm\, t(0.975, n - p) \times \mathrm{SE}\), where \(n\) is the number of points and \(p\) the number of free parameters, and it is back-transformed to concentration (Ritz et al. 2015), so it is not symmetric around the IC50.

**Relative and absolute IC50.** The relative IC50 is the fitted parameter: the concentration giving a response midway between the fitted top and bottom. The absolute IC50 is the concentration where the curve crosses the 50% control, the mean of the 0% and 100% controls (Sebaugh 2011). The calculator scales responses as 

$$100 \times \frac{Y - \text{mean 0\% control}}{\begin{array}{c} \text{mean 100\% control} \\ -\ \text{mean 0\% control} \end{array}}$$

 and solves the fitted curve for 50%.

Sources: Ritz C, Baty F, Streibig JC, Gerhard D. Dose-response analysis using R. *PLoS One* 2015;10:e0146021, [doi:10.1371/journal.pone.0146021](https://doi.org/10.1371/journal.pone.0146021). Sebaugh JL. Guidelines for accurate EC50/IC50 estimation. *Pharm Stat* 2011;10:128–134, [doi:10.1002/pst.426](https://doi.org/10.1002/pst.426). Gadagkar SR, Call GB. Computational tools for fitting the Hill equation to dose-response curves. *J Pharmacol Toxicol Methods* 2015;71:68–76, [doi:10.1016/j.vascn.2014.08.006](https://doi.org/10.1016/j.vascn.2014.08.006).

## Worked example

The built-in example is a synthetic inhibition curve generated from Top 100, Bottom 4, IC50 40 nM and Hill slope −1.1, with nine concentrations (3000 nM down to 0.457 nM in 3-fold steps) in triplicate and random noise added.

With top and bottom free, the fit gives a relative IC50 of **35.29 nM (95% CI 29.59 to 42.08 nM)**, logIC50 1.548 ± 0.037, Hill slope −1.19 (−1.42 to −0.956), top 99.20 and bottom 6.30, with R² = 0.9901 from 27 points (23 degrees of freedom). The interval contains the true 40 nM.

Normalised to a 0% control of 2, 3 and 4 and a 100% control of 99, 100 and 101, the relative IC50 is unchanged at 35.29 nM, and the curve crosses 50% at an absolute IC50 of **36.92 nM**. Fixing the top at 100 and the bottom at 0 on the raw data instead gives 41.30 nM (35.72 to 47.76 nM), Hill slope −1.00.

## Questions

### How do I calculate IC50 from my data?

Enter each concentration with its responses (replicates in columns), leave out the zero-drug wells or use them as the 100% control, and fit the four-parameter logistic curve. The IC50 is read from the fitted curve, not from the nearest data point. Reading it by straight-line interpolation between the two points around 50% is only a rough check.

### How do I convert IC50 to Ki?

For a competitive inhibitor of an enzyme, the Cheng–Prusoff equation gives \(K_\mathrm{i} = \mathrm{IC}_{50} / (1 + [S] / K_\mathrm{m})\), where \([S]\) is the substrate concentration in the assay and \(K_\mathrm{m}\) its Michaelis constant (Cheng and Prusoff 1973, doi:10.1016/0006-2952(73)90196-2). It does not apply to non-competitive or tight-binding inhibitors.

### What is the difference between relative and absolute IC50?

The relative IC50 is the concentration giving a response halfway between the fitted top and bottom plateaus of the curve. The absolute IC50 is the concentration where the curve crosses 50% of control, the mean of the 0% and 100% assay controls (Sebaugh 2011). They agree only when the curve runs from exactly 100% to 0%.

### Should I report the relative or the absolute IC50?

Following Sebaugh (2011): use the relative IC50 when the assay has no stable 100% control, or when the 50% control mean may be off by more than 5%. Use the absolute IC50 only when the 100% control is accurate and stable and the 50% control mean is within 5%.

### How many concentrations do I need?

At least as many as free parameters (four), and in practice more. Sebaugh (2011) recommends reporting a relative IC50 only with at least two concentrations beyond each bend of the curve, and an absolute IC50 only with at least two concentrations predicted below 50% and two above.

### How is the 95% confidence interval of the IC50 calculated?

The fit estimates log IC50 with a standard error from the scaled inverse information matrix; the interval is \(\log \mathrm{IC}_{50} \pm t \times \mathrm{SE}\) with \(n - p\) degrees of freedom, back-transformed to concentration (Ritz et al. 2015). That is why it is wider above the IC50 than below.

### What does the Hill slope mean?

It sets how steep the curve is. A slope of −1 (inhibition) or +1 (stimulation) is the standard one-site shape; a larger magnitude means a steeper curve. The sign only says whether the response falls or rises with concentration.

### Should I fix the top and bottom?

Leave them free when your data reach both plateaus. If a plateau is not reached, a free fit can drift and the IC50 becomes poorly determined; fixing the top and bottom (often at 100 and 0 after normalising to controls) is the usual choice.

### Why is concentration zero left out?

The curve is fitted against log concentration, and the log of zero is undefined. Zero-drug wells are your untreated control: tick Normalise and they are used as the 100% control for an inhibition assay or the 0% control for a stimulation assay.
