StabilityProofOpen the calculator

Preparing your stability data

Paste or drop the table you already have. It does not need to be cleaned first: units, condition formats, <LOQ results and drifting RRTs are handled automatically, and every decision is listed in the data log.

Download the template (CSV)

The usual layout

One row per sample, one column per result:

BatchTime (days)ConditionRRT 0.45RRT 0.82Assay (%LC)
AInitialInitial<0.050.02100.2
A750°C/75%RH0.080.0499.9
A270°C/75%RH0.140.0799.4

The values above are made up to show the format.

One row per result (LIMS exports)

Most LIMS export one row per result instead. Paste that as it is; it is recognised and reshaped automatically:

BatchConditionTime pointTestAnalyteResultUnits
A50°C/75%RHDay 7Related substancesRRT 0.450.08% area
A50°C/75%RHDay 7Related substancesRRT 0.820.04% area
A50°C/75%RHDay 7AssayAssay99.9% LC
A50°C/75%RHDay 7Water (KF)Water2.1% w/w

Everything set aside is listed in the data log, so you can check nothing was missed.

Columns that are recognised

ColumnWhat works
TimeNumbers with the unit in the header: hours, days, weeks, months or years ("Time (weeks)", "Days"). "Initial", "T0" and "0" mark the starting point.
ConditionOne column such as 50°C/75%RH, 50/75 or 50C 75% RH, or separate temperature and humidity columns. Kelvin and humidity as a fraction (0.75) are converted.
DegradantsOne column per peak, headed by RRT or name ("RRT 0.82", "Imp B"). Peaks within ±0.02 RRT that never appear in the same sample are treated as one degradant.
AssayOptional. Used to model assay loss from the initial value against the lower limit.
Total degradantsOptional. If missing, the total is the sum of the reported peaks, leaving out peaks seen only under harsh stress.
One row per resultInstead of one column per peak: a peak name (or RRT) column and a result column, optionally with test name, batch and units. See above.

Results below the limit

<LOQ, ND, <0.05 and blank cells in samples where other peaks were reported are all accepted. By default they are treated as known to be below the limit (statistically censored), which avoids the bias of replacing them with zero or half the limit. You can choose either of those instead.

Study design that predicts well

The tool checks these for every degradant and says when the design limits what can be concluded.

Excel workbooks

.xlsx files are read in your browser. If the workbook has several sheets with data, you choose which one to use. Old .xls files need saving as .xlsx or CSV first, or you can copy the table and paste it.

Results as data (JSON)

The Results JSON button downloads every result in a structured file you can load into a database, a notebook or your own models. For each degradant, the total and the assay it holds:

The file also carries the settings, the data fingerprint, the engine version and the study details you entered (product, active ingredient, dosage form, packaging, batch). Shelf lives beyond 10 years are written as null with beyondHorizon: true. Field names stay the same within a schemaVersion, so files from different studies can be combined.