Solar cell I-V curve analyser: Voc, Jsc, fill factor, efficiency, series and shunt resistance, single-diode fit

Open or paste a solar cell's I-V curve and get the open-circuit voltage, short-circuit current and current density, maximum power point, fill factor and efficiency, series and shunt resistance from the slopes, and a single-diode model fit (solved exactly with the Lambert W function) for the ideality factor, saturation current, Rs and Rsh with standard errors.

Keep it one tap away for everyday use.

Bookmark Solar cell I-V analyser?

Press Ctrl + D now. Your browser opens its own bookmark box, where you choose the name and folder.

  1. I-V data
  2. Voc, Isc
  3. FF and η
  4. Diode fit
Nothing is uploadedWorks offline once open

I-V curve

Either sign convention works: if the current at 0 V is negative, the page flips it so the photocurrent is positive. The area is the cell's active (or aperture) area; it turns current into current density and gives the efficiency with the irradiance (1000 W/m² is standard test light). Temperature sets the thermal voltage kT/q for the diode fit, and cells in series multiply it. The slopes use the points nearest Voc and 0 V.

What it does

A solar cell’s current-voltage (I-V) curve under light holds most of what there is to know about it. This page reads it the way a test lab does:

  • Short-circuit current Isc (and the current density Jsc with the cell area), where the curve crosses 0 V.
  • Open-circuit voltage Voc, where the current falls to zero.
  • Maximum power point: the highest V·I along the measured curve, with Vmp and Imp.
  • Fill factor FF = Pmax / (Voc · Isc), and efficiency η = Pmax / (irradiance × area).
  • Series and shunt resistance from the slopes: −dV/dI through the points nearest Voc and nearest 0 V. Quick, but the Voc slope also contains the diode’s own slope, so it is an upper limit for Rs.
  • Single-diode model fit. The model I = Iph − I0[exp((V + IRs)/(n·Ns·kT/q)) − 1] − (V + IRs)/Rsh is solved for I exactly with the Lambert W function and fitted to every point by least squares. It gives the photocurrent, saturation current, ideality factor, series and shunt resistance, each with a standard error, and the model’s own Voc, Isc, Pmax and FF.

How to use it

  1. Paste or open the curve: voltage in volts, then current. Pick whether the current is in A, mA or mA/cm². Either sign convention is fine.
  2. Give the cell’s active area and the irradiance (1000 W/m² for standard test light) for current density and efficiency.
  3. For the fit, give the cell temperature and, for a module, the number of cells in series. The ideality factor is then per cell.
  4. Read the figures of merit and the fit table; check the plot to see the model follows the points. Download the points, model and residuals as CSV, or the report as PNG, PDF or Word.

Worked example

Press Use the example: a made-up 4 cm² cell drawn from the single-diode model with Iph = 150 mA, I0 = 1 nA, n = 1.3, Rs = 0.5 Ω and Rsh = 300 Ω at 25 °C, from −0.05 to 0.66 V with a little noise. The page reads Isc = 149.73 mA (Jsc = 37.43 mA/cm²), Voc = 0.6283 V, Pmax = 64.861 mW at 0.47 V, FF = 68.95 % and, under 1000 W/m² on 4 cm² (400 mW), η = 16.22 %. The slopes give 0.7233 Ω near Voc (higher than the true 0.5 Ω, as expected) and 284.6 Ω near 0 V.

The fit gets back n = 1.29956 ± 0.00075, I0 = (9.93 ± 0.11) × 10⁻¹⁰ A, Rs = 0.50021 ± 0.00020 Ω and Rsh = 300.0 ± 1.6 Ω, with an RMS misfit of 14.53 µA: the values the curve was drawn with, within the noise.

Tips

  • Measure a little below 0 V and a little past Voc, so both crossings are inside the data and the slopes are steady.
  • Noisy points near 0 V make the shunt slope jumpy; raise Points for the slopes.
  • An ideality factor far outside 1 to 2 usually means the one-diode model is not enough (a second diode, or a barrier), or the temperature or cell count is wrong.
  • The area should be the illuminated (aperture) area, as masked in the measurement, or the efficiency will be off.

FAQ

Why is the model’s Pmax a little different from the measured one? The measured value follows straight lines between your points; the model is a smooth curve through all of them.

Can it fit a dark I-V curve? No: it needs a photocurrent. Dark curves need a different fit.

Is my data uploaded? No. Everything happens in your browser.

Where the numbers come from

  • Isc, Voc, fill factor, efficiency and the single-diode model with its explicit Lambert W solution are standard photovoltaics; the code is written by fibub and checked in the tests against scipy.special.lambertw, pvlib (i_from_v and singlediode), NumPy and scipy.optimize.least_squares.
  • The example curve is made up by the page from a single-diode model (Iph 150 mA, I0 1 nA, n 1.3, Rs 0.5 Ω, Rsh 300 Ω, 4 cm², 25 °C) with a little made-up noise.
  • A file you open is read on the page only. It is never uploaded or stored.

Standard scientific values, such as constants, atomic weights and melting points, are facts found in every textbook; we name where ours were checked. If you are an author or publisher and want a value, a credit or a table changed or removed, tell us and we will act quickly.

Last updated 2026-11-09.

Related tools

Impedance (EIS) equivalent circuit fitter #111 Paste or open an electrochemical impedance spectrum and fit an equivalent circuit (R(RC), R(RQ), Randles with Warburg diffusion, two-arc R(RQ)(RQ) or a blocking CPE) by complex non-linear least squares. Get each element with its error, the effective capacitance, time constants, exchange current density and a comparison of all circuits. Publication plot maker #27 Paste columns or open a CSV or Excel file and get a clean scientific figure with error bars, sized for a journal column. Download vector SVG or PDF, or PNG at 300 or 600 dpi. Your data stays in your browser. CubeSat power budget #510 Work out a small satellite's orbit-average power: eclipse time from altitude and beta angle, solar panel output by attitude (nadir, Sun pointing or tumbling) with efficiency, packing, temperature and ageing, loads with duty cycles in each operating mode, and a battery simulation over several orbits with depth of discharge. Carrier concentration and Fermi level #862 Work out the intrinsic carrier density, the electron and hole densities and the Fermi level of a doped semiconductor at any temperature. The band gap follows Varshni's formula, Nc and Nv come from your effective masses, and charge neutrality is solved with dopants that are only partly ionised, using the Fermi-Dirac integral so heavy doping is right too. Plots show the freeze-out, extrinsic and intrinsic regions. Tauc plot band gap #863 Open a UV-Vis spectrum and get the optical band gap from a Tauc plot: absorbance, transmittance or diffuse reflectance (Kubelka-Munk) turned into (αhν)^n for direct or indirect transitions, the straight part of the edge found for you or chosen by hand, the gap where the line meets zero or a baseline, with its error and window spread, plus the Urbach energy. Thin-film thickness from fringes #865 Work out a thin film's thickness from the interference fringes in its transmittance or reflectance spectrum: Swanepoel's envelope method gives the refractive index at every fringe and the thickness from whole-number orders; with a known index (constant or Cauchy) the fringe positions are enough; or count fringes between two wavelengths.