CovaSyn
All Articles
Guide8 min readJuly 15, 2026

Extractables and Leachables: A Screening Workflow

A structure-first extractables leachables screening workflow: match peaks to known additives, set the AET, then hand structures to toxicological triage.

OK

Oliver Kraft

CovaSyn

Extractables and Leachables: A Screening Workflow

An extractables study gives you a peak list, often 200 to 600 features. The hard part is not acquiring it. The hard part is deciding which peaks are above the analytical evaluation threshold, which of those you can name, and which named compounds actually carry a toxicological question. This article walks the screening half of that workflow with real tool output, and is explicit about where the automation stops.

The order the decisions actually happen in

USP <1663> covers the extractables study design (exaggerated conditions, multiple solvents, container closure components). USP <1664> covers leachables, the subset that migrates into the drug product under real storage. In practice you run four steps, in this order:

1. Set the AET. Below it you do not report. Above it you must identify. 2. Match what is matchable. Common polymer additives are a known, finite list. Hit them first. 3. Escalate the rest. Unmatched peaks above AET go to formula determination and MS/MS. 4. Hand structures to toxicology. Only once you have a structure does the safety question become answerable.

Steps 2 and 4 are where a structure-first toolchain earns its place. Steps 1 and 3 stay judgement-heavy.

Step 1: the AET is an arithmetic step, not a model

The AET is derived, not predicted. In the common form:

AET = (SCT [ug/day] / daily dose [containers or mL per day]) x (1 / response factor uncertainty)

The safety concern threshold is set by the dosage form. PQRI recommended 0.15 ug/day as the SCT for orally inhaled and nasal drug products, and the same value for parenteral and ophthalmic products in its later recommendation. For mutagenic impurities, ICH M7 sets the TTC at 1.5 ug/day for durations up to 10 years. You then apply an uncertainty factor to the estimated AET because you are quantifying unknowns against a surrogate response factor, commonly by dividing by 1.5 to 2.

No tool should hand you this number. It depends on your dose, your container count, your dosage form and your RF database. Compute it, document the assumptions, and use it as the cut line for everything below.

Step 2: match the known additive list

covams_extractables_leachables screens a peak list against a curated additive library for a given container type. It matches on protonated monoisotopic mass at a 20 ppm window, which is deliberately wide for a first pass.

Run on a seven-peak list from a polymer container extract (container_type: "plastic"), it returned four identifications:

Peak m/zAssignedFormulaMass error
229.1223Bisphenol AC15H16O21.31 ppm
391.2843DEHPC24H38O40.77 ppm
282.2791OleamideC18H35NO0.35 ppm
338.3417ErucamideC22H43NO0.89 ppm

Overall risk_level came back "high", which in this tool is a count rule (more than three hits) and not a toxicological verdict. Three peaks did not match: 647.4587, 1177.7914 and 114.0913. The same call with container_type: "rubber" on a stopper extract assigned m/z 221.190 to BHT at 0.00 ppm error and returned risk_level: "medium" on one hit.

Be clear about what this is.

The shipped library is a small curated set of the most frequent additives per container type, not an exhaustive E&L information system. It matches [M+H]+ only, so additives that ionise better as [M+NH4]+, [M+Na]+ or [M-H]- will not hit even when present. Treat a match as a hypothesis to confirm against a reference standard, and treat a non-match as no information at all.

Step 3: unmatched peaks go to formula determination

The 647.4587 peak from the run above is a typical unknown: high intensity, late retention, no library entry. covams_formula at a 5 ppm window returned 45 candidate formulae. The top-ranked one was C42H63O3P, exact mass 646.45148, mass error 0.0926 ppm, RDBE 12, overall score 0.9815. That is consistent with Irgafos 168, a very common phosphite antioxidant.

It is also where the honesty matters. The second candidate, C32H62N4O9, scored 0.9199 on mass error but carried a *higher* Bayesian plausibility score (0.3406 versus 0.2114). Forty-five formulae fit inside 5 ppm at m/z 647. Accurate mass alone does not identify anything at that mass range. You need the isotope pattern (a P-containing formula has a distinctive envelope), MS/MS fragments, and ideally a retention time match to a standard. The tool ranks candidates; it does not close the identification.

Step 4: structures go to toxicological triage

Once you have structures, the question changes from analytical to toxicological. covatox_screen_batch in quick mode (Ames, hERG, DILI) across the five confirmed and suspected compounds returned all five as overall_risk: "medium", with these composite risk scores:

  • Caprolactam 0.418 (flagged as the worst compound in the batch)
  • DEHP 0.387
  • Bisphenol A 0.340
  • Oleamide 0.104
  • BHT 0.101
Ranking bar chart from an extractables and leachables screening workflow: caprolactam scores 0.418, DEHP 0.387, bisphenol A 0.340, oleamide 0.104 and BHT 0.101 on composite risk.
The composite orders the review queue, but all five compounds came back overall_risk medium - use it to prioritise, not to clear anything. Source: Verbatim covatox_screen_batch output in quick mode (Ames, hERG, DILI) on the five confirmed and suspected compounds from this extractables run.

The individual predictions are more informative than the composite. DEHP returned hERG 0.2754 against a 0.2 decision threshold, marked in_domain: true with nearest training similarity 1.0 and production launch tier, plus DILI 0.0436 at confidence 0.9128, also in domain. Those two are usable signals.

The Ames output on the same batch is not. Bisphenol A, DEHP, BHT and oleamide all returned exactly 0.0685, every one flagged in_domain: false, nearest_similarity: 0.0, confidence_modifier: 0.1, launch tier experimental. That is the model returning its base rate and telling you so. Polymer additives are chemically far from the drug-like Ames training set. Do not read 0.0685 as "not mutagenic." Read it as "this model has nothing to say about this molecule."

Table from an extractables and leachables screen showing bisphenol A, DEHP, BHT and oleamide all returning an identical Ames probability of 0.0685 with in_domain false and similarity 0.00.
An identical value across four unrelated polymer additives is the base rate, not a prediction. Read 0.0685 as no information, not as low mutagenic risk. Source: Verbatim covatox_screen_batch output; every one of these calls returned in_domain false, nearest_similarity 0.0, confidence_modifier 0.1 and launch tier experimental.

For context on where the models are calibrated: the CovaTox hERG classifier scores AUROC 0.856 on a scaffold-split holdout of n=7500, and the Ames classifier 0.736 balanced accuracy scaffold-split (0.848 random-split) on n=1089. Good numbers inside the domain; irrelevant outside it, which is exactly what the applicability domain flag is for.

The ICH M7 read is the one that drives action

For the mutagenicity question specifically, covatox_ich_m7 runs a dual assessment (structural alerts plus statistical model):

  • Bisphenol A: Class 3. One alert fired, quinone_methide_precursor (SMARTS Oc1ccc(C)cc1, mechanism "oxidation to quinone methide, Michael addition to DNA", evidence strength labelled *low*, ref Bolton et al. 2000). Statistical score 0.0685, statistical call negative. Confidence 0.588. Class 3 means alerting structure, unrelated to the API, with no mutagenicity data: control at the TTC or generate an Ames test.
  • Caprolactam: Class 5. No alerts, statistical score 0.1677, negative. Confidence 0.348. Class 5 is treat as non-mutagenic, but note the low confidence value and that the statistical arm was out of domain here too.

The Class 3 verdict on BPA is the actionable output of the whole chain. It converts a peak at m/z 229.1223 into a specific next experiment.

What this workflow does not tell you

  • It does not quantify. Every number above is an identification or a hazard score. Concentration against the AET requires your calibration and your response factors.
  • It does not confirm identity. A 20 ppm library match and a top-ranked formula are hypotheses. Regulatory identification needs a reference standard, or at minimum matching MS/MS and retention time.
  • It does not do the toxicological risk assessment. A qualified toxicologist reads the ICH M7 class, the PDE derivation and the exposure calculation. The tools narrow the list they read.
  • The additive library is small and container-typed. Absence of a hit is not absence of a compound.
  • Out-of-domain predictions are labelled and should be ignored, not discounted. Four of five Ames calls in this batch were out of domain.

Frequently asked questions

What is the analytical evaluation threshold (AET) in an E&L study?

The AET is the concentration above which an extractable or leachable must be reported and identified. It is calculated, not predicted: divide the safety concern threshold for the dosage form by the maximum daily dose (containers or mL per day), then apply an uncertainty factor for response factor variability, commonly a division by 1.5 to 2. PQRI recommended an SCT of 0.15 ug/day for orally inhaled, nasal, parenteral and ophthalmic products.

What is the difference between USP <1663> and USP <1664>?

USP <1663> covers extractables: what comes out of a packaging or manufacturing component under exaggerated conditions such as aggressive solvents, elevated temperature and long contact. USP <1664> covers leachables: what actually migrates into the drug product under normal storage and use. Extractables define the worst-case candidate list. Leachables define what a patient is actually exposed to, and are usually a small subset.

Can software identify an unknown extractable from accurate mass alone?

No. At m/z 647 with a 5 ppm window, covams_formula returned 45 candidate formulae. The top hit by mass error was C42H63O3P at 0.09 ppm, consistent with Irgafos 168, but a competing formula scored higher on Bayesian plausibility. Accurate mass narrows candidates. Confirmation requires the isotope pattern, MS/MS fragmentation, and a retention time match to a reference standard.

How should mutagenicity be assessed for an identified leachable?

Use the ICH M7 dual approach: an expert-rule structural alert system plus a statistical QSAR model. In our run, covatox_ich_m7 classified bisphenol A as Class 3, one alerting structure (quinone methide precursor) with a negative statistical call, meaning control at the TTC of 1.5 ug/day or generate an Ames test. Caprolactam came back Class 5, no alerts, treat as non-mutagenic.

Why do in-silico tox models sometimes return the same value for different compounds?

Because they are out of applicability domain and returning a base rate. Four polymer additives in our batch returned an identical Ames probability of 0.0685, each flagged in_domain: false with nearest training similarity 0.0 and confidence modifier 0.1. Polymer additives sit far from drug-like training data. A model that flags this is behaving correctly; the value should be discarded, not treated as low risk.

Does an automated screen replace a toxicological risk assessment?

No. The screen triages: it names the peaks that are nameable, ranks formulae for the rest, and separates compounds that carry a structural alert from those that do not. A qualified toxicologist still derives the PDE, judges the exposure, and signs the assessment. The value is that they review a prioritised shortlist instead of a raw feature table.

Related reading

Every tool call in this article runs on the free tier, so you can put your own peak list through the same four steps before deciding whether it is worth more. - Nitrosamine Risk Assessment: An ICH M7 Workflow

Tools for this topic

Use these in your AI agent right away.

  • CovamsMass spectra, formula prediction, impurity profiling.
  • CovatoxICH M7, Tox21, CYP450, structural alerts, ADMET triage.
Extractables and Leachables: A Screening Workflow | CovaSyn