Documentation
What each PV Ivy tool does, what it needs from you, and how to read what it returns. The data sources and the public API are at the end.
PV Explorer
Open PV ExplorerPick a manufacturer and model and PV Explorer plots the IV and PV curves from the module's six-parameter single-diode coefficients (pvlib, De Soto model, Lambert W solution), with the maximum power point, Isc and Voc marked. These are the same coefficients every other tool on the site uses. The page opens on a random module.
- Operating conditions. Irradiance (W/m²), cell temperature (°C) and modules per string, above the chart. The curve redraws on every change. Reset to STC restores 1000 W/m², 25 °C and one module.
- Keypoint table. Pmp, Vmp, Imp, Voc, Isc and fill factor from the nameplate next to the modeled values at your conditions. With more than one module per string, voltage and power in both columns are for the string. Under it: technology, cells in series, size and the temperature coefficients in %/°C. The table exports to CSV.
- Module actions. Download a .PAN file for PVsyst, open the module's page in the Module Database, open it in the Calculators, and open the manufacturer's datasheet when PV Ivy has confirmed one for that exact model.
- Measured data. Paste V/I pairs (tab or space separated, up to 5,000 rows) to overlay a field or flash-test curve on the model. The keypoint table gains a Measured column.
- Degradation. A first-year drop and an annual rate, filled in from the manufacturer's published warranty when PV Ivy has it, editable otherwise. Set a start and end date and the curve scales by the remaining power at that age: 100 % minus the first-year drop minus the annual rate times (years − 1).
- Anomaly detection (beta). A random-forest classifier that compares the shape of your measured curve with the model and suggests an anomaly category. Use it as a first pass. The IV Analyzer gives a full diagnosis.
- Chart tools. Hide or show the power curve, reset the zoom, and export the chart as PNG, copy it as an image, or download every plotted point (model and measured) as CSV.
- Copy link. Puts the module, conditions and any degradation dates in the URL, so whoever opens the link sees the same curve.
- Save. Signed-in users can save the module, conditions, degradation inputs and measured overlay, then reopen them with Load or from the profile page.
Module Database
Open the Module DatabaseOne page per module, grouped by manufacturer. Each manufacturer page lists its models with STC power and a CSV export. Click any column heading to sort by it, and click again to reverse the order. Each module page shows nameplate keypoints, efficiency, dimensions, temperature coefficients in %/°C, the single-diode coefficients, the degradation warranty and datasheet link when PV Ivy has them, and an IV chart.
- Sources on every table. Each block of numbers names where it came from, with a link. See Data sources.
- Additional model sources. When Sandia has fitted the PVsyst single-diode model to the same module, a second table lists those parameters with the fit's error on Pmp. Two fits of one module rarely agree to the last digit, and seeing both shows how much the choice of model matters.
- Measured data. Published lab or field measurements for the module, grouped by source, with the irradiance and temperature range covered. Most modules have none yet.
- Shortcuts. Download a .PAN file for PVsyst, open the module in PV Explorer, compare it with a similar module, or open it in the Calculators, from the top of the page.
Missing a module? Request it with a link to the manufacturer's datasheet (sign-in required). Requests for the same module are pooled, and everyone who asked gets an email when its page goes live.
Module Lookup
Open Module LookupReverse search. You know a module's numbers (from a nameplate, a datasheet or a field measurement) but not its exact model. Enter any of STC power, Voc, Isc, Vmp, Imp, fill factor, length and width, and PV Ivy returns the modules that fit.
- A module matches when every field you filled in is within the tolerance of your value (5 % by default, adjustable). Blank fields are ignored.
- Manufacturer and technology filters narrow the search by partial name.
- Fill factor, if you leave it blank, is computed as (Vmp × Imp) / (Voc × Isc) from the values you did enter.
- Results are ranked by mean relative difference across your fields, closest first, up to 50 rows by default. The table exports to CSV.
PAN File Builder
Open the PAN File BuilderTurns a module's single-diode coefficients into a .PAN file that PVsyst can import. Pick a manufacturer and model and the page shows every value before you download.
- Nameplate check. PV Ivy reads the finished file back, models it, and compares Voc, Isc, Vmp, Imp and Pmp with the nameplate. This checks the file itself, after rounding.
- Parameter table. Each value is tagged direct (copied across, for example RSerie = Rs), derived (computed, for example Gamma from the diode ideality factor and the cell count) or assumption (a PVsyst default with no equivalent in the source data, for example NDiode = 3). Click a row for the derivation.
- Sandia fit values. When Sandia's PVsyst fit exists for the module, its Rp_0 and muGamma replace the generic defaults and those rows read direct.
- Warnings. A cell count corrected because the listed one does not fit Voc, dimensions estimated from module area when the length and width are missing, and a note that PVsyst refits Gamma and I₀ from the keypoints. Thin-film modules sometimes come out with a negative maximum series resistance, which PVsyst asks you to adjust.
In PVsyst: Databases, PV modules, Import.
Compare
Open CompareTwo modules side by side. Pick module A and module B and PV Ivy overlays their IV and PV curves at the same irradiance and cell temperature.
- Spec table. Every nameplate value and coefficient for both modules, with a CSV export.
- String check. Enter modules per string and a cold and hot cell temperature, pick an inverter from the CEC list or type its AC voltage and MPPT window, and PV Ivy computes each module's cold Voc and hot Vmp and whether the string stays inside the inverter's MPPT window and maximum DC voltage.
- Copy link. Puts both modules, the conditions, the string size and the inverter in the URL.
Calculators
Open CalculatorsSmall what-if calculations for one module or string. Pick a manufacturer and model once and every calculator on the page uses it (the page opens on a random module). Each calculator has its own irradiance, cell temperature and modules per string (STC and one module by default), so changing one never moves the other. Module pages and the module card in PV Explorer link straight to the page with that module filled in.
- Soiling loss. Enter the drop in Isc (0 to 50 %). PV Ivy finds the irradiance that gives that Isc at the same cell temperature, then reports clean and soiled Isc, Voc, Imp, Vmp and Pmp, the change in each, and Pmp lost per 1 % of Isc. Isc is close to proportional to irradiance, but the model also scales shunt resistance with light, so the irradiance is solved for exactly. This covers uniform soiling only. Patchy soiling behaves like partial shading and can cost much more.
- Off-MPP operation. Enter how far the operating voltage sits from Vmp, as a percent of Vmp or in volts. PV Ivy reads current and power off the curve at that voltage below and above Vmp and reports the change against the maximum power point. The loss is small near Vmp and larger on the high-voltage side, where current falls off past the knee. An offset that reaches Voc reads as zero power.
- Strings. With more than one module per string, voltages and powers are for the whole string and a volt offset is the string voltage, split evenly across modules. Current does not change.
- Copy link. Each calculator has its own. The link holds the module, that calculator's inputs and conditions, and scrolls to it when opened.
IV Analyzer
BetaBeta. The diagnosis rules have been checked on simulated faults and on about 3,000 measured outdoor curves from two public datasets: healthy modules, modules with known series resistance added, and partly shaded modules. Treat a named cause as a lead to confirm on site. The rules will change as more measured data comes in.
Upload one or many Solmetric PVA IV curve exports, or paste one V/I curve. The Analyzer checks the data, translates it to standard test conditions, compares it with the modeled curve for that module, and suggests a cause.
Data checks
Based on IEC 60904-1 and IEC 61829. Each measurement gets a list of flags.
- Irradiance out of range (error): outside 0 to 1200 W/m².
- Irradiance too low (error): under 400 W/m². Translating that far to STC adds too much error, so the curve is not diagnosed.
- Irradiance below the recommended window (warning): 400 to 700 W/m². IEC 61829 recommends 700 W/m² or more.
- Irradiance changing (warning): more than a 30 % swing between measurements taken within 15 minutes of each other.
- Temperature out of range (error): module temperature outside −25 to 75 °C.
- Temperature sensor suspect (warning): a thermocouple reading exactly 0 °C, or two thermocouples more than 5 °C apart.
- Curve checks: a truncated curve is a warning. Fewer than 20 points, voltage that does not rise steadily, or a negative Isc or Voc is an error.
An error marks the measurement Retest. It is still shown but not diagnosed. Warnings lower confidence but do not block a result.
Translation to STC (IEC 60891, procedure 1)
Every point of the measured curve is moved to 1000 W/m² and 25 °C with the module's temperature coefficients:
I₂ = I₁ + Isc·(G₂/G₁ − 1) + α·(T₂ − T₁)
V₂ = V₁ − Rs·(I₂ − I₁) − κ·I₂·(T₂ − T₁) + β·(T₂ − T₁)
Isc and Voc come from a straight-line fit at each end of the curve. Pmp, Vmp and Imp come from a quadratic fit around the highest-power point.
Diagnosis
A set of rules compares the shape of the translated curve with the model: keypoint ratios, the slope near Isc (shunt paths), the slope near Voc (series resistance), steps in the power and current curves (shading or mismatch), and missing substring voltage (a shorted bypass diode). Each candidate cause comes with a confidence, the evidence, and a suggested next step.
The Analyzer does not guess. If no cause reaches 50 % confidence, or the top two disagree, the result is Indeterminate with the observations listed and a note to retest at a steady 700 W/m² or more. A shortfall smaller than the measurement uncertainty reads Within uncertainty.
Measurement uncertainty
Each result shows the expanded uncertainty (about 95 %) of the translated Pmp, combined from irradiance sensor error (±4 % by default), cell temperature error (±3 °C by default) times the module's power temperature coefficient, and tracer error (±1 %). Enter your own sensor accuracy under Settings.
Status per measurement
- Pass: STC power meets the degraded-model threshold and no confident fault was found.
- Within uncertainty: power is below the model by less than the measurement uncertainty.
- Retest: a data error, or a result too uncertain to call.
- Otherwise the suggested next step is the status, for example "Inspect for PID or shunt paths".
MPPT check
Compares the string Vmp (as measured, and projected to a hot day after degradation) with the inverter's lowest MPPT voltage, taken as the larger of its MPPT low limit and √2 × its AC voltage. Below that the inverter cannot track the maximum power point. A shortfall is flagged with the projected power loss.
Every analysis downloads as an Excel workbook with full detail or as a PDF report.
Solmetric Project Builder
BetaBeta. Generated files were opened in the Solmetric PV Analyzer PC software on test projects with fixed-tilt and tracker sites, harness levels and large sites. Open the project in the PC software before you go to site.
Builds a Solmetric PV Analyzer project file (.pvapx) with Site Info filled in and every inverter, combiner and string in the Array Navigator already named. Enter the layout once instead of adding each node by hand on the analyzer.
Inputs
- Site Info. Project name, latitude and longitude, time zone (Eastern, Central, Mountain, Pacific, Alaska, Arizona and Hawaii without daylight saving, or UTC), array type (fixed tilt or horizontal single-axis tracker), azimuth and tilt. Leave tilt blank for trackers.
- Module and string. Any module in the database, modules per string, strings per measurement (strings in parallel on one trace), wire gauge and one-way wire length.
- Array layout. Inverters, combiners per inverter, an optional harness level, and strings per combiner or harness. Up to 20,000 strings per project.
Naming
Each level has a name pattern and a start number. {n} is the node's own
number and {i} is its parent's. Add :02 to pad to two digits,
so CB-{i}.{n:02} gives CB-1.01, CB-1.02 under inverter 1.
In the Array Navigator preview, click any name to rename that one node, and click a string count to change it for one combiner or harness. Real sites often have one combiner with 8 strings next to ones with 10. Edited names and counts show in green and go into both downloads.
Summary
Totals for inverters, combiners, harnesses, strings and modules, and the DC nameplate in kW. With a module picked, the summary also shows string Voc at 25 °C and at the design low temperature you enter (−10 °C by default), from the module's CEC Voc temperature coefficient:
Voc,string = N × Voc × (1 + β × (T − 25 °C))
Above 1,500 V the summary turns amber. Check the module's maximum system voltage and the inverter's DC input limit. Use the site's record low or the ASHRAE extreme annual minimum for the design temperature.
Downloads
- .pvapx project. Open it in the PV Analyzer PC software. The file carries the module's record built from the CEC data. A module PV Ivy lacks the temperature data for is left out of the file, and PV Analyzer asks you to pick it when you open the project.
- CSV manifest. One row per string with its inverter, combiner, harness, string name and full path, plus the fields the project file has no place for: strings per measurement, performance factor, module, project name and address. It works whether or not the project file imports.
- Settings. Export saves every input, rename and edited count as a JSON file, and Import loads one back. No account needed. Signed-in users can also Save and Load projects on their profile.
Saving to your profile
Signed-in users can save named snapshots of PV Explorer, the IV Analyzer and the Solmetric Project Builder. Each page has Save and Load buttons (they ask you to sign in otherwise). Your profile page lists everything you saved, with Open, rename and delete. Open takes you back into the tool with the saved state restored.
A saved Analyzer run keeps your settings and a summary of the results (status, keypoints, diagnosis). The uploaded files are not stored, so run Analyze again after loading if you want fresh numbers.
Case Studies
Read the case studiesShort articles that run IV curves through PV Ivy's tools and show the working. Each one ends with a Method box that says what data was used and whether it was measured or simulated, and links the tool that made the figures, so you can reproduce it.
Data sources
The PV Ivy module database combines several public sources. Each value on a module page names its source. Nothing is copied from a paid database.
| Source | What PV Ivy uses | Coverage |
|---|---|---|
| California Energy Commission, Solar Equipment Lists, PV module list, as packaged in the NREL System Advisor Model library: SAM 2021.12.02 (list of 16 November 2022) and SAM 2026.7.3 (list of 23 June 2026) | Module identity, nameplate keypoints, cell count, area, temperature coefficients and the six-parameter single-diode coefficients. Modules on both lists keep their 2022 values. CEC lists every color and frame variant of a module separately, so listings outnumber distinct modules. Some listings give a cell count that does not fit their Voc (cells per bypass substring, or every half cell). PV Ivy infers the cells in series from the model name, a multiple of the listed count, or Voc, and the module page shows both. | 16,223 modules 25,124 listings |
| Sandia National Laboratories, PVsyst single-diode fits of the CEC list (pvpmc.sandia.gov) | A second model per module. The PAN File Builder takes Rp_0 and muGamma from it. | 9,846 modules |
| Manufacturer limited warranties | First-year and annual power degradation, cited per manufacturer | 21 manufacturers |
| Manufacturer datasheets | A datasheet link, only where the official file names that exact model. Datasheets are also the source for modules added on request, fitted with pvlib and reviewed before they are published. | Growing |
| Sandia National Laboratories, PV module performance matrix and temperature coefficient data (2019) | Measured Isc, Voc, Imp, Vmp and Pmp across irradiance and temperature | 9 modules |
| California Energy Commission inverter list, via the SAM library | AC voltage, MPPT window and DC limits for the MPPT check in Compare and the IV Analyzer | 3,264 inverters |
The IV Analyzer was tested on measured curves from the OptimalPV project (Lappalainen et al., Zenodo) and from Piliougine and Spagnuolo (Zenodo), both CC BY 4.0. Those curves are used for testing and are not shown on module pages.
Spotted a wrong number? Use "Report a data problem" on the module's page.
API reference
Read-only JSON endpoints. No sign-in and no key.
These are the endpoints PV Ivy's own pages call. Base URL https://www.pvivy.com.
GET
/api/manufacturers/
Every manufacturer name in the module database, sorted A to Z.
Parameters: none.
Returns: {"manufacturers": ["Ablytek", "Advance Power", ...]}
curl https://www.pvivy.com/api/manufacturers/
GET
/api/models/
The models for one manufacturer.
Parameters: manufacturer (required), the exact name as /api/manufacturers/ returns it.
Returns: {"models": ["MSE260SO5T", "MSE265SO5T", ...]}. An unknown manufacturer returns an empty list.
curl "https://www.pvivy.com/api/models/?manufacturer=Mission%20Solar%20Energy%20LLC"
GET
/api/module-details/
Everything PV Ivy has for one module as a flat object: nameplate keypoints, single-diode coefficients, dimensions, degradation warranty (deg_ fields), datasheet link, the Sandia PVsyst fit (pvsyst_ fields) when there is one, and page_url, the module's page on PV Ivy.
Parameters: manufacturer and model (both required, exact).
Returns: one object keyed by field name. Missing values are null. 400 if a parameter is missing, 404 with an empty object if no module matches.
Some model names start with a space in the source list. Trim before comparing.
curl "https://www.pvivy.com/api/module-details/?manufacturer=Mission%20Solar%20Energy%20LLC&model=MSE300SQ8K"
GET or POST
/api/module-lookup/
Reverse search by numbers. See Module Lookup above for the matching rule.
Parameters: any of stc, v_oc_ref, i_sc_ref, v_mp_ref, i_mp_ref, fill_factor, length, width (numbers, blank or zero ignored), manufacturer and technology (partial name), tolerance (percent, default 5), limit (default 50, at most 500). Query string for GET, JSON body for POST. At least one number or name filter is required.
Returns: {count, total_matches, tolerance_pct, criteria, results}, where each result has Manufacturer, Model, Technology, STC, V_oc_ref, I_sc_ref, V_mp_ref, I_mp_ref, fill_factor, Length, Width and match_pct. Best match first. 400 with no criteria.
curl "https://www.pvivy.com/api/module-lookup/?stc=300&tolerance=3&limit=5"
GET or POST
/api/iv-curve/
A 100-point IV and PV curve from the module's single-diode coefficients, the same call PV Explorer makes.
Parameters: manufacturer and model (required), irradiance or poa (W/m², above 0 and up to 2000, default 1000), temperature or cell_temperature (°C, -40 to 100, default 25), modules (modules per string, 1 to 200, default 1, scales voltage and power). Query string for GET, JSON body for POST.
Returns: {"voltage": [...], "current": [...], "power": [...]}. 400 for a value out of range, 404 with up to five closest_matches when the module is not found.
curl -X POST https://www.pvivy.com/api/iv-curve/ \
-H "Content-Type: application/json" \
-d '{"manufacturer": "Mission Solar Energy LLC", "model": "MSE300SQ8K", "irradiance": 800, "temperature": 45}'
GET
/api/calc/soiling/
The Soiling loss calculator: clean and soiled keypoints when uniform soiling cuts Isc by a given percent.
Parameters: manufacturer and model (required), isc_loss (percent, 0 to 50, default 5), irradiance and temperature as for /api/iv-curve/, modules (1 to 200, default 1, scales voltage and power).
Returns: {conditions, isc_loss_pct, effective_irradiance, clean, soiled, delta, pmp_per_isc, curves}. clean and soiled hold isc, voc, imp, vmp and pmp. delta holds abs and pct for each. curves holds the clean and soiled voltage, current and power arrays. 400 for a value out of range, 404 if the module is not found, 422 if it has no single-diode coefficients.
curl "https://www.pvivy.com/api/calc/soiling/?manufacturer=Mission%20Solar%20Energy%20LLC&model=MSE300SQ8K&isc_loss=5"
GET
/api/calc/off-mpp/
The Off-MPP calculator: current and power with the operating voltage held a set distance below and above Vmp.
Parameters: manufacturer and model (required), offset (default 2), unit (pct for percent of Vmp, 0 to 50, or v for volts, default pct), irradiance, temperature and modules as above. With modules above 1, a volt offset is the string voltage.
Returns: {conditions, offset, unit, offset_v, offset_pct, mpp, below, above, curve}. below and above hold valid, voltage, current, power, pmp_pct, imp_pct and power_loss. valid is false with reason beyond_voc (power 0) or below_zero. Same errors as /api/calc/soiling/.
curl "https://www.pvivy.com/api/calc/off-mpp/?manufacturer=Mission%20Solar%20Energy%20LLC&model=MSE300SQ8K&offset=10&unit=v&modules=20"
GET
/api/inverters/manufacturers/, /api/inverters/models/, /api/inverters/details/
The CEC inverter list (3,264 inverters) behind the MPPT checks. Same shape as the module endpoints.
Parameters: none for manufacturers, manufacturer for models, manufacturer and model for details.
Returns: details gives {manufacturer, model, vac, paco, vdcmax, idcmax, mppt_low, mppt_high, pnt, cec_date, v_mppt_min}. v_mppt_min is the larger of mppt_low and √2 × vac. cec_date is null when the list has no date. 400 if a parameter is missing, 404 if not found.
curl "https://www.pvivy.com/api/inverters/details/?manufacturer=ABB&model=MICRO-0.25-I-OUTD-US-208"
GET
/api/module-sources/
Every published source for one module: each fitted parameter set (CEC, and the Sandia PVsyst fit when there is one) with its citation, license and fit error, plus a summary of each published measurement.
Parameters: manufacturer and model (both required, exact).
Returns: {module, parameter_sets, measured_records}. Measurements come without curve points. Fetch those one at a time with /api/measured-record/. 400 if a parameter is missing, 404 if the module is not found.
curl "https://www.pvivy.com/api/module-sources/?manufacturer=Mission%20Solar%20Energy%20LLC&model=MSE300SQ8K"
GET
/api/measured-record/<id>/
One published measurement in full, with the voltage and current points when it is a full curve.
Parameters: the id from /api/module-sources/, in the path.
Returns: the summary fields plus module, modules_in_string, strings_in_parallel, latitude, longitude, notes, external_id, v_points and i_points (null when only keypoints were measured). 404 for an unknown or unpublished id.
curl https://www.pvivy.com/api/measured-record/<id>/
GET
/api/secondary-measurements/
Sandia's 2019 performance matrix and temperature coefficient measurements (9 modules, 360 points) as flat rows. /api/module-sources/ carries the same data per module.
Parameters: manufacturer and model (both optional, partial name). With neither, every row comes back.
Returns: {"rows": [{manufacturer, model, source, test, module_id, temperature_c, irradiance_wm2, isc_a, voc_v, imp_a, vmp_v, pmp_w}, ...]}. Fill factor is not included. It is (imp_a × vmp_v) / (isc_a × voc_v).
curl "https://www.pvivy.com/api/secondary-measurements/?manufacturer=Hanwha"
© 2026 PV Ivy. All Rights Reserved.