# PAINS filters and pan-assay interference compounds

> PAINS filters are 480 substructure alerts that Baell and Holloway published in 2010 to flag compounds that often give false hits in screening assays. ProteinIQ ran them on 2,104 approved small-molecule drugs in ChEMBL 37: 122 (5.8%) trigger at least one alert, led by catechols such as levodopa and quinones such as doxorubicin.

Levodopa has treated Parkinson's disease since 1970, yet a PAINS filter rejects it. The catechol ring that the brain turns into dopamine is one of the 480 substructures that Baell and Holloway flagged in 2010 as frequent sources of false hits in screening assays. Doxorubicin fails too, for its quinone, and so do more than a hundred other medicines.

PAINS, short for pan-assay interference compounds, are molecules that look active in many unrelated assays because they disturb the assay rather than bind the target. PAINS filters are the substructure alerts written to catch them. We ran the filters over 2,104 approved small-molecule drugs in ChEMBL 37: **122 drugs (5.8%)** trigger at least one alert, close to the 5% to 6.5% reported since 2010. The [PAINS filter](/app/pains-filter) runs the same check on any list of [SMILES](/guides/smiles-notation).

Those drugs reached patients long after anyone could have mistaken them for assay artifacts. That is the main lesson of the numbers below: a PAINS alert is a warning about a screening result, not a verdict on a molecule.

## What are pan-assay interference compounds?

A screening hit is any compound that changes an assay's signal, and the usual assumption is that it does so by binding the protein. PAINS change the signal by other routes. They react with cysteine thiols and amines, cycle between redox states, chelate metals in the protein or the assay reagents, absorb or emit light at the assay's wavelengths, or form micelle-like aggregates.

None of these depends on the target, so the same compound turns up as a hit in screen after screen. Dahlin and colleagues found that nearly all the hits from one high-throughput screen against a histone acetyltransferase were such compounds, and confirmed by mass spectrometry and NMR that they reacted covalently with cysteines on several proteins. Some of the same chemotypes had already been published elsewhere as chemical probes or preclinical candidates.

The cost is time. A PAINS hit can show a clean dose-response curve and even respond to small structural changes, so a team can spend months optimizing a series that never had a binding mode. Baell and Nissink describe medicinal chemists who have "fruitlessly" tried to optimize such compounds.

## Where the 480 PAINS filters came from

Baell and Holloway at the Walter and Eliza Hall Institute in Melbourne screened a library of 93,212 commercial compounds in six high-throughput campaigns against protein-protein interactions. All six used the same detection technology, AlphaScreen, and most ran at 50 μM. Of the library, 7,972 compounds hit two or more assays and 362 hit all six.

They grouped the frequent hitters by shared substructure and wrote 480 filters, sorted into three families by how many library compounds supported each one. The names they gave the classes are now familiar to medicinal chemists: rhodanines, phenolic Mannich bases, hydroxyphenylhydrazones, alkylidene barbiturates, catechols and quinones.

<caption><strong>Table 1. The three PAINS families and how many approved drugs each flags.</strong> Library compounds per substructure is the size of each compound class in the original screening library. Approved drugs is ProteinIQ's count of 2,104 approved small molecules in ChEMBL 37 with RDKit 2025.03.5; a drug can match more than one family. Sources: Baell and Holloway (2010), ChEMBL (2024).</caption>
<thead>
<tr><th>Family</th><th>Substructures</th><th>Library compounds per substructure</th><th>Library compounds flagged</th><th>Approved drugs flagged</th></tr>
</thead>
<tbody>
<tr><td>A</td><td>16</td><td>150 or more</td><td>4,703</td><td>65 (3.1%)</td></tr>
<tr><td>B</td><td>55</td><td>15 to 149</td><td>2,196</td><td>42 (2.0%)</td></tr>
<tr><td>C</td><td>409</td><td>1 to 14</td><td>1,186</td><td>22 (1.0%)</td></tr>
<tr><td>Any family</td><td>480</td><td></td><td></td><td>122 (5.8%)</td></tr>
</tbody>

Most of the filters rest on very few compounds. Family C holds 85% of the substructures but only 15% of the flagged compounds, and Baell and Nissink write that a compound recognized only by a family C filter cannot be said to be a PAINS. Run against commercial vendor catalogues of the time, the filters flagged between 4.6% and 11.6% of compounds.

The original filters were written in SLN, a line notation from the Sybyl software. RDKit and most other open tools use a SMARTS translation that Saubern, Guha and Baell published in 2011, and RDKit names each filter with its class size in parentheses, as in `quinone_A(370)`. Translations do not agree perfectly, so counts can differ slightly between programs.

## How many approved drugs trigger PAINS alerts?

We ran RDKit's PAINS catalogue over the 2,104 approved small-molecule drugs in ChEMBL release 37, the European Bioinformatics Institute's curated database of drugs and bioactive molecules. Each drug is one parent compound, so salts and hydrates count once. 122 drugs match at least one of the 480 filters, 5.8% with a 95% confidence interval of 4.9% to 6.9%.

That agrees with every earlier count. Baell and Holloway checked drug collections in their original paper and found 5.0% of 1,808 launched drugs and 6.5% of the 743 compounds in the Australian Medicines Handbook. Capuzzi, Muratov and Tropsha found PAINS alerts in 87 of 1,460 small-molecule drugs from Drugs@FDA, which we calculate as 6.0%. Baell and Nissink summarize the literature as "ca. 5%" of FDA-approved drugs.

<caption><strong>Table 2. Published counts of approved drugs with PAINS alerts.</strong> Each study used its own drug collection and filter implementation: Baell and Holloway the original SLN filters, Capuzzi and colleagues the SMARTS from PubChem Promiscuity, and ProteinIQ RDKit 2025.03.5. Sources: Baell and Holloway (2010), Capuzzi et al. (2017), ChEMBL (2024).</caption>
<thead>
<tr><th>Study</th><th>Drug collection</th><th>Drugs</th><th>With a PAINS alert</th></tr>
</thead>
<tbody>
<tr><td>Baell and Holloway (2010)</td><td>Launched drugs in MDDR 2008.1</td><td>1,808</td><td>5.0%</td></tr>
<tr><td>Baell and Holloway (2010)</td><td>Australian Medicines Handbook 2008</td><td>743</td><td>48 (6.5%)</td></tr>
<tr><td>Capuzzi et al. (2017)</td><td>Small-molecule drugs in Drugs@FDA</td><td>1,460</td><td>87 (6.0%)</td></tr>
<tr><td>ProteinIQ (2026)</td><td>Approved small molecules in ChEMBL 37</td><td>2,104</td><td>122 (5.8%)</td></tr>
</tbody>

The flagged drugs rarely carry more than one problem: 114 of the 122 match a single filter, and only 31 of the 480 filters match any approved drug at all. If we keep only families A and B, as Baell and Nissink recommend for triage, 103 drugs (4.9%) remain. Oral drugs are flagged slightly less often than the rest, 5.4% against 6.4%.

The alerts cluster in a few corners of pharmacology. Antineoplastic agents have the highest rate among the larger drug classes, 22 of 177 (12.4%), followed by cardiac therapy with 6 of 51, mostly catecholamines such as dobutamine. Not one of the 35 drugs for diabetes or the 36 antiepileptics triggers an alert.

![Horizontal bar chart of approved drugs by PAINS family: catechols 24, dialkylanilines 23, quinones 16, 3-alkylindoles 9, 1,3-diketones 9, azo compounds 8, phenolic Mannich bases 6, phenothiazines 6 and 24 drugs in 16 other families](/images/charts/approved-drugs-pains-families.webp '**Figure 1. PAINS families among approved drugs.** Number of the 2,104 approved small molecules in ChEMBL 37 with at least one alert in each family; a family joins the lettered variants of one filter, such as `anil_di_alk_A` to `anil_di_alk_E`. A drug can count in several families. Source: [ProteinIQ analysis of ChEMBL 37 (2026)](/data/guides/pains-filters/summary.json).')

## Which approved drugs contain PAINS substructures?

Catechols lead the list with 24 drugs, and most of them are catechols because their targets are. Levodopa, carbidopa, methyldopa, dopamine, norepinephrine, epinephrine, dobutamine and isoproterenol all mimic or feed the body's catecholamines, and entacapone, tolcapone and opicapone inhibit the enzyme that degrades them. The antibiotic cefiderocol carries a catechol for a different reason: it binds iron, so bacteria pull the drug in through their iron-uptake channels.

Quinones come third with 16 drugs, and here the alert and the pharmacology overlap. The anthracyclines doxorubicin, daunorubicin, epirubicin, idarubicin and valrubicin are quinones, as are mitomycin, mitoxantrone, atovaquone and vitamin K. Capuzzi and colleagues found doxorubicin active in about 85% of the more than 4,000 PubChem assays that tested it, so a drug can be both a genuine medicine and a genuine pan-assay interferer.

Other matches are deliberate chemistry. Sulfasalazine, balsalazide and olsalazine are azo compounds because the azo bond is the delivery system: gut bacteria cleave it to release mesalazine in the colon. Epalrestat, an aldose reductase inhibitor approved in Japan for diabetic neuropathy, is the only ene-rhodanine in the set. Eltrombopag, flagged here as an imine ketone, began as an azo-containing screening hit.

Some flags say more about the filter than the drug. Zidovudine matches the azo filter because the pattern also fits its azide group. The 23 dialkylanilines include linezolid, ketoconazole, posaconazole and mifepristone, where the flagged nitrogen is an ordinary aryl morpholine, aryl piperazine or dimethylaniline. Baell and Nissink suggest that aniline-based PAINS may interfere with AlphaScreen specifically, probably by reacting with the singlet oxygen the assay uses to make its signal.

None of this means a PAINS hit from a screen is safe to pursue. Baell and Nissink point out that the PAINS-containing drugs were mostly found by observing efficacy downstream, not by target-based screening, and that their existence "has no relevance to low micromolar screening hits". The logic cuts both ways: an alert does not condemn levodopa, and levodopa does not clear a rhodanine that inhibits five unrelated enzymes.

## Has the share changed over time?

Drugs first approved in the 1950s and 1960s trigger PAINS alerts most often, 7.9% and 8.4%, and the share drifts down to 5.6% in the 2000s and 2010s and 4.6% for 2020 to 2024. None of the 43 drugs first approved before 1950 is flagged. Across the 1,805 drugs with a recorded approval year, 6.5% of those approved before 2000 carry an alert, against 5.4% of those approved since.

![Bar chart of the share of approved drugs with a PAINS alert by decade of first approval: 0% before 1950, 7.9% in the 1950s, 8.4% in the 1960s, 7.0% in the 1970s, 6.0% in the 1980s, 6.2% in the 1990s, 5.6% in the 2000s and 2010s, and 4.6% for 2020 to 2024](/images/charts/approved-drugs-pains-by-decade.webp '**Figure 2. Approved drugs with at least one PAINS alert, by decade of first approval.** ProteinIQ analysis of the 1,805 of 2,104 approved small molecules in ChEMBL 37 with a recorded first approval year, matched against RDKit 2025.03.5 PAINS families A, B and C. Decades hold 43 to 349 drugs, so each share has a 95% interval of roughly 3 to 5 percentage points either side. Source: [ProteinIQ analysis of ChEMBL 37 (2026)](/data/guides/pains-filters/summary.json).')

The decline is small, and the decades are too small to prove it. The 95% intervals for the two halves, 5.2% to 8.1% before 2000 and 3.9% to 7.4% since, overlap. The drugs approved since 2010 also came from programs that started before the filters existed, so the curve cannot yet show whether screening with PAINS filters changed what reaches the clinic.

What did change is the kind of alert. Catechols and quinones account for 30 of the 75 flagged drugs approved before 2000 but only 7 of the 35 approved since. The newer flags are mostly dialkylanilines, 13 of the 35, in kinase inhibitors such as gilteritinib and antimicrobials such as linezolid and delamanid: the family most likely to reflect AlphaScreen rather than the molecule.

## Why PAINS filters over- and under-flag

The filters inherit the limits of the experiment behind them: one library, one assay technology and one class of target. Capuzzi and colleagues counted that 328 of the 480 filters, 68%, were derived from four or fewer compounds, and 190 from a single compound. A pattern seen once in an AlphaScreen campaign is a hypothesis, not a rule.

When they tested the filters against public data, the alerts did not predict promiscuity. In PubChem's AlphaScreen protein-protein interaction assays, 97% of the compounds carrying PAINS alerts were infrequent hitters, and the alerts showed no rise in activity across luciferase, β-lactamase or fluorescence assays either. They also found 109 of the alerts among 3,570 compounds in Dark Chemical Matter, a set of molecules tested extensively and never active.

Jasial, Hu and Bajorath reached a similar view from more than 23,000 extensively tested compounds with PAINS substructures. Their median hit count was two to five across hundreds of assays, and the same substructure appeared in consistently inactive and in frequently active compounds, so the surrounding structure decides whether the motif causes trouble. Even in the original data, 86 of 370 quinones were clean.

The core of the filters holds up better than the tail. Of the 16 family A substructures, 13 were confirmed as problematic in AstraZeneca's screening data and the public Badapple promiscuity tool. Over-flagging is mainly a problem of family C and of filters fitted to AlphaScreen.

The filters also miss real PAINS. Baell and Nissink stress that "a compound not recognized as a PAIN may still be a PAIN". The original library excluded epoxides, aziridines and nitro compounds, so no filter covers them. Classes identified later, such as β-aminoketones, isothiazolones and toxoflavins, are absent, and because the original assays contained detergent, colloidal aggregators were largely suppressed and are not captured.

Broader filters trade the opposite way. The [Brenk filter](/app/brenk-filter) applies 105 rules that Brenk and colleagues wrote to keep mutagenic, reactive, pharmacokinetically poor and assay-interfering groups out of a screening library for neglected diseases. On the same 2,104 drugs it flags 982 (46.7%), led by long aliphatic chains in 222 drugs, isolated alkenes in 116 and N-O single bonds in 110. It also catches 84 of the 122 PAINS drugs.

<caption><strong>Table 3. Structural alert filters applied to approved drugs.</strong> 2,104 approved small molecules in ChEMBL 37, matched with RDKit 2025.03.5. The 95% intervals are Wilson score intervals. Sources: Baell and Holloway (2010), Brenk et al. (2008), ChEMBL (2024).</caption>
<thead>
<tr><th>Filter</th><th>Substructures</th><th>Drugs flagged</th><th>Share</th><th>95% interval</th></tr>
</thead>
<tbody>
<tr><td>PAINS family A</td><td>16</td><td>65</td><td>3.1%</td><td>2.4% to 3.9%</td></tr>
<tr><td>PAINS families A and B</td><td>71</td><td>103</td><td>4.9%</td><td>4.1% to 5.9%</td></tr>
<tr><td>PAINS, all families</td><td>480</td><td>122</td><td>5.8%</td><td>4.9% to 6.9%</td></tr>
<tr><td>Brenk</td><td>105</td><td>982</td><td>46.7%</td><td>44.5% to 48.8%</td></tr>
</tbody>

## How to use PAINS filters sensibly

Use the filters where they are strongest, as a question about a screening hit. Run the [PAINS filter](/app/pains-filter) on the hit list and look at which filter fired, not just whether one did. A family A match such as an ene-rhodanine, a phenolic Mannich base or a quinone deserves suspicion; a family C match supported by a handful of compounds deserves a look at the structure and little more.

Then test the hypothesis the alert raises. Baell and Nissink recommend checking purity, resynthesizing the hit and confirming it in an orthogonal assay with a different readout. Running the assay with and without a reducing agent such as DTT exposes cysteine-reactive compounds, and detergent in the buffer suppresses aggregation. A real binder keeps its activity and shows structure-activity relationships that make sense.

Consider the assay as well as the compound. A filter derived from AlphaScreen speaks most directly to AlphaScreen and other light-based readouts, and an unflagged compound in a luciferase or fluorescence assay can still interfere through mechanisms the filters never saw. Baell and Nissink also argue that compounds with confirmed PAINS behavior should not be used as tool compounds to probe biology.

Removing PAINS from a library before screening is a reasonable default, as long as the cut stays narrow. Families A and B would have removed 4.9% of today's approved drugs, which gives a sense of the price.

The rest of library design belongs to other filters: [Lipinski's rule of five](/guides/lipinski-rule-of-five), which the [Lipinski's rule of 5 calculator](/app/lipinskis-rule-of-5) checks from SMILES, the [lead-likeness filter](/app/lead-likeness-filter) for screening hits, and the Brenk rules for reactive and toxic groups.

Structural alerts are also not a toxicity forecast. For absorption, metabolism and toxicity, [ADMET-AI](/app/admet-ai) and [Admetica](/app/admetica) predict the endpoints directly from structure, and [ADMET prediction](/use-cases/admet-prediction) explains where those models fit. In [virtual screening](/use-cases/virtual-screening), all of these filters usually run before docking, so the compute goes to compounds worth buying.

## How we counted

We used the 2,104 approved small molecules from our analysis of Lipinski's rule of five: every molecule with `max_phase` 4 in ChEMBL 37, released on May 1, 2026, and read through the ChEMBL web services on October 29, 2026.

Salts and hydrates were merged into their parent compound, and biologics, metal-containing and inorganic compounds, mixtures and parents without a single defined structure were removed. This is the same set as our [approved drug library](/datasets/small-molecule-drugs).

We matched each parent structure, parsed from its ChEMBL canonical SMILES, against RDKit 2025.03.5's PAINS_A, PAINS_B and PAINS_C catalogues and its Brenk catalogue. RDKit's PAINS catalogue is also what ProteinIQ's PAINS filter runs. A family joins the lettered variants of one filter, such as `anil_di_alk_A` and `anil_di_alk_C`. The decade is that of ChEMBL's earliest first approval year for the drug or its salts, recorded for 1,805 drugs up to 2024.

The [per-drug table of matched alerts (CSV)](/data/guides/pains-filters/approved-drugs-pains.csv), [summary of every figure (JSON)](/data/guides/pains-filters/summary.json), [methods and definitions](/data/guides/pains-filters/README.md) and [analysis script](/data/guides/pains-filters/analyze.py) reproduce all of our numbers.

Because ChEMBL is licensed CC BY-SA 3.0, the data files are shared under the same license with credit to ChEMBL and ProteinIQ. We last checked them on October 29, 2026.
