◒ StabilityKit

A FIVE-MINUTE WALKTHROUGH

From two columns to a measured lifetime.

Use this small synthetic dataset to check every step yourself. These examples explain the calculation; they are not experimental evidence or lifetime guarantees.

1. Prepare your measurements

Put elapsed time or cycle count in the first column and performance in the second. Keep the units consistent. For a battery, for example, the second column can contain capacity in Ah; for a solar cell it can contain PCE. The tool converts performance to retention relative to your selected reference.

time,performance
0,100
100,90
200,80
300,70

Download the linear example CSV

Each x value must be unique and nonnegative. Blank lines are ignored. Use decimal points, not decimal commas. Do not include units inside numeric cells. Combine replicate measurements appropriately before importing; this tool does not estimate replicate uncertainty.

2. Analyze with the default settings

Open the CSV in the analyzer. Choose Hours, an 80% threshold, First measured value, Fit start 0 and an empty Fit end. Click Analyze data.

Measured T80: 200 h

The reference is 100, so retention is 100%, 90%, 80%, 70%. The measurements reach 80% at 200 hours.

Linear slope: −0.1

Retention drops by 10 percentage points every 100 hours: −0.1 percentage points/hour. This is an empirical slope, not a universal physical constant.

Linear estimate: 200 h

The fitted line is y = 100 − 0.1t. Solving 80 = 100 − 0.1t gives 200 h. Agreement here follows from the deliberately linear example.

3. Understand crossings between observations

If retention is 82% at 100 h and 78% at 120 h, the interpolated T80 is 100 + (80 − 82) / (78 − 82) × (120 − 100) = 110 h. That is a straight-line estimate between the two observations. It does not tell you the exact time of an unobserved event.

“Measured” in this tool includes this interpolation. An increasing curve or a curve that remains above the threshold has no observed downward crossing.

4. Recognize an unobserved lifetime

Download a slower-aging example with retention 100%, 95%, 90%, 85% at 0, 100, 200, 300 h. Its measured T80 is Not reached. Its linear estimate is 400 h, extrapolated: outside the measured fit interval. Do not replace the missing measured lifetime with 400 h.

Upload both examples to Compare CSVs. The first series has a measured T80 of 200 h; the second remains unknown. Separate normalization makes the curves comparable in retention, but does not establish equal absolute performance or equal test conditions.

5. Save enough context to reproduce the result

Download Results JSON to keep the raw measurement points, selected settings, actual fitted range and model results together. The downloaded JSON contains your measurements, so share it only when you intend to share those data. CSV preserves the single-series measurements, calculated retention, units, workflow, normalization reference, threshold and requested fit interval; the comparison CSV summarizes each file, including the fitted point count, actual first/last fitted measurement and model RMSE in percentage points. Actual fitted bounds may differ from the requested interval when no observation falls exactly on a boundary. Chart SVG is editable vector artwork. Keep your original measurements, units and test conditions alongside the exports.

To resume a single-series analysis, use Open saved JSON in the analyzer. A Results JSON containing raw measurements restores your workflow, units, threshold and fit interval. All results are recalculated with the current engine; stored coefficients are not trusted. For comparison JSON, use Open saved comparison JSON on the Compare CSVs page (32 MB maximum). Successful series are recalculated with shared settings; failed original inputs lack saved measurements and are omitted with a visible list. The omission list is preserved in subsequent JSON exports and the comparison CSV, and reappears when you reopen the saved comparison. Starting with new CSV files or examples clears that history. All restored curves start visible. Older exports without raw measurements require the original CSV files. The maximum saved JSON size is 8 MB.

Why does changing the fit interval change the estimate?

Only points inside the chosen fit interval determine the fitted models. Measured threshold crossings still use all input points, and the normalization reference still comes from the full series. Fit start does not reset time. Selecting a later interval is not automatic burn-in correction or TS80 analysis.

Which model should I trust?

Linear and log-linear exponential fits have different assumptions and fitting objectives. Higher R² alone does not establish a mechanism or justify extrapolation. StabilityKit does not provide confidence intervals, accelerated-aging conversion, certification calculations or a validated prediction model.