ChemistryDrug Discovery Tools

Lipinski's Rule of Five Calculator: Check Drug-Likeness from SMILES in Seconds

Free Lipinski Rule of Five calculator from SMILES. Check molecular weight, LogP, HBD, HBA instantly. History, exceptions, beyond Ro5, and top FDA drug analysis.

Ryan Bethencourt
April 8, 2026
9 min read

What Is Lipinski's Rule of Five?

In 1997, Christopher Lipinski and his colleagues at Pfizer published a paper that would fundamentally change how drug designers think about molecular properties. After analyzing thousands of compounds in clinical trials, they noticed a striking pattern: most successfully absorbed oral drugs shared a common set of physical property ranges. Molecules outside these ranges tended to fail in clinical development due to poor absorption.

The result was Lipinski's Rule of Five (Ro5), a set of four simple guidelines that predict whether a compound is likely to be orally bioavailable. The name comes from the convenient fact that all the numerical cutoffs are multiples of five:

  • Molecular Weight (MW) ≤ 500 Da: Larger molecules have more difficulty crossing biological membranes. Above 500 Da, oral absorption drops significantly.
  • LogP ≤ 5: LogP measures lipophilicity (how much a molecule prefers oil over water). Excessively lipophilic compounds dissolve poorly in aqueous environments like blood plasma and tend to accumulate in fat tissue.
  • Hydrogen Bond Donors (HBD) ≤ 5: HBDs are OH and NH groups. Too many make the molecule overly polar for passive membrane permeation.
  • Hydrogen Bond Acceptors (HBA) ≤ 10: HBAs are oxygen and nitrogen atoms. Like HBDs, excess acceptors increase polarity and reduce membrane crossing.

The original paper, "Experimental and computational approaches to estimate solubility and permeability in drug discovery and development settings," published in Advanced Drug Delivery Reviews, has been cited over 20,000 times. It remains one of the most influential publications in pharmaceutical science, and the Rule of Five is taught in every medicinal chemistry program worldwide.

Note
The Rule of Five applies specifically to oral drugs absorbed through passive diffusion. Compounds that are actively transported (like many antibiotics), injected, or applied topically are not constrained by these rules. The rules also do not apply to natural products, peptides, or biologics.

Why Each Rule Matters

Understanding the physical chemistry behind each rule makes you a better drug designer. These are not arbitrary numbers – each cutoff reflects real constraints imposed by human biology on drug absorption.

Molecular Weight: The Size Barrier

Cell membranes are lipid bilayers roughly 7–8 nanometers thick. For a drug molecule to cross from the intestinal lumen into the bloodstream, it must slip between or through these membranes. Larger molecules face increasing difficulty with this process. Above 500 Da, the probability of oral absorption drops sharply because the molecule is simply too bulky to permeate efficiently.

There is also a practical consideration: larger molecules tend to be more complex, harder to synthesize, and more likely to trigger immune responses. Keeping molecular weight below 500 is not just about absorption – it pushes designs toward simpler, more practical compounds.

LogP: The Lipophilicity Sweet Spot

Drug absorption requires a balancing act. The molecule must be lipophilic enough to cross cell membranes (which are made of lipids) but hydrophilic enough to dissolve in the aqueous environment of the bloodstream and cytoplasm. LogP quantifies this balance.

A LogP between 1 and 3 is generally ideal for oral drugs. Below 0, the molecule is too hydrophilic to cross membranes. Above 5, it is too lipophilic – it will dissolve poorly in water, bind excessively to plasma proteins, accumulate in fatty tissues, and often cause off-target toxicity. The LogP ≤ 5 cutoff in Lipinski's rules represents the upper boundary of acceptable lipophilicity.

Hydrogen Bond Donors and Acceptors: The Polarity Tax

Every hydrogen bond donor or acceptor on a molecule must be desolvated (stripped of its water shell) before the molecule can cross a lipid membrane. This desolvation costs energy. With five or fewer donors and ten or fewer acceptors, the energetic penalty is manageable. Beyond these limits, the cost of desolvation becomes prohibitive, and the molecule cannot efficiently partition into the membrane.

This is why highly polar molecules like sugars (many OH groups) are not orally bioavailable as drugs despite being small. Each hydroxyl group is both a donor and an acceptor, creating a polarity burden that prevents membrane crossing.

Checking Lipinski Properties with SciRouter

SciRouter's molecular properties endpoint calculates all four Lipinski parameters from a SMILES string in milliseconds. No software installation, no RDKit setup, no Python environment configuration. Just send a SMILES string and get back a complete property profile.

Check Lipinski properties for any molecule
import os, requests

API_KEY = os.environ["SCIROUTER_API_KEY"]
BASE = "https://api.scirouter.ai/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# Check Lipinski properties for caffeine
result = requests.post(f"{BASE}/chemistry/properties", headers=HEADERS, json={
    "smiles": "Cn1c(=O)c2c(ncn2C)n(C)c1=O"
}).json()

print(f"Molecule: Caffeine")
print(f"Molecular Weight: {result['molecular_weight']:.1f} Da")
print(f"LogP: {result['logp']:.2f}")
print(f"HBD: {result['hbd']}")
print(f"HBA: {result['hba']}")

# Check each Lipinski rule
mw_ok = result["molecular_weight"] <= 500
logp_ok = result["logp"] <= 5
hbd_ok = result["hbd"] <= 5
hba_ok = result["hba"] <= 10

violations = sum([not mw_ok, not logp_ok, not hbd_ok, not hba_ok])
print(f"\nLipinski Violations: {violations}")
print(f"Drug-like: {'Yes' if violations <= 1 else 'No'}")

For caffeine (Cn1c(=O)c2c(ncn2C)n(C)c1=O), you would see MW ~194.2, LogP ~-0.07, HBD 0, HBA 6 – comfortably within all Lipinski limits. This aligns with the fact that caffeine is one of the most readily absorbed oral drugs in existence.

Batch Analysis: Screen a Compound Library

When you need to evaluate an entire compound library, loop through your SMILES and collect the results. This is the standard workflow for filtering virtual screening hits or generative chemistry outputs.

Batch Lipinski screening
import os, requests

API_KEY = os.environ["SCIROUTER_API_KEY"]
BASE = "https://api.scirouter.ai/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

molecules = [
    {"name": "Aspirin",     "smiles": "CC(=O)Oc1ccccc1C(=O)O"},
    {"name": "Ibuprofen",   "smiles": "CC(C)Cc1ccc(cc1)C(C)C(=O)O"},
    {"name": "Caffeine",    "smiles": "Cn1c(=O)c2c(ncn2C)n(C)c1=O"},
    {"name": "Metformin",   "smiles": "CN(C)C(=N)NC(=N)N"},
    {"name": "Atorvastatin","smiles": "CC(C)c1n(CC[C@@H](O)C[C@@H](O)CC(=O)[O-])c(-c2ccccc2)c(-c2ccc(F)cc2)c1C(=O)Nc1ccccc1"},
    {"name": "Sorafenib",   "smiles": "CNC(=O)c1cc(Oc2ccc(NC(=O)Nc3ccc(Cl)c(C(F)(F)F)c3)cc2)ccn1"},
]

print(f"{'Name':15s} {'MW':>7s} {'LogP':>6s} {'HBD':>4s} {'HBA':>4s} {'Violations':>10s} {'Status':>8s}")
print("-" * 62)

for mol in molecules:
    r = requests.post(f"{BASE}/chemistry/properties",
        headers=HEADERS, json={"smiles": mol["smiles"]}).json()

    mw = r["molecular_weight"]
    logp = r["logp"]
    hbd = r["hbd"]
    hba = r["hba"]

    v = sum([mw > 500, logp > 5, hbd > 5, hba > 10])
    status = "PASS" if v == 0 else f"WARN({v})"

    print(f"{mol['name']:15s} {mw:7.1f} {logp:6.2f} {hbd:4d} {hba:4d} {v:10d} {status:>8s}")

Top 10 FDA-Approved Drugs: A Lipinski Analysis

Let us examine how the ten best-selling prescription drugs in the United States score against Lipinski's rules. This analysis shows that most blockbuster drugs comfortably satisfy the Rule of Five, but there are instructive exceptions.

1. Adalimumab (Humira)

Humira is a monoclonal antibody, not a small molecule. Lipinski's rules do not apply to biologics. It is administered by injection, not orally. This illustrates the first and most important exception: the Rule of Five is strictly for oral small molecules.

2. Apixaban (Eliquis)

MW ~459.5, LogP ~1.7, HBD 1, HBA 7. Zero violations. Apixaban is a textbook Lipinski-compliant oral drug – small, moderately lipophilic, and with minimal hydrogen bonding.

3. Pembrolizumab (Keytruda)

Another monoclonal antibody. As with Humira, Lipinski's rules are irrelevant for biologics. Keytruda is administered intravenously.

4. Lenalidomide (Revlimid)

MW ~259.3, LogP ~-0.4, HBD 2, HBA 5. Zero violations. Lenalidomide is notably small and hydrophilic for an oncology drug, contributing to its excellent oral bioavailability of ~70%.

5. Rivaroxaban (Xarelto)

MW ~435.9, LogP ~1.5, HBD 1, HBA 7. Zero violations. Like apixaban, rivaroxaban exemplifies how modern anticoagulants are designed within Lipinski space for reliable oral dosing.

6. Ibrutinib (Imbruvica)

MW ~440.5, LogP ~3.0, HBD 1, HBA 6. Zero violations. Ibrutinib demonstrates that even kinase inhibitors – a drug class known for occasionally pushing Lipinski boundaries – can be designed within the rules.

7. Upadacitinib (Rinvoq)

MW ~380.4, LogP ~1.6, HBD 1, HBA 5. Zero violations. This JAK inhibitor is compact and well-optimized, with excellent oral bioavailability (~73%).

8. Atorvastatin (Lipitor)

MW ~558.6, LogP ~4.1, HBD 4, HBA 9. One violation (MW exceeds 500). Atorvastatin is one of the most prescribed drugs in history despite exceeding the molecular weight cutoff. Its oral bioavailability is only ~12%, which is lower than smaller statins, but its potency compensates. This is the classic example of a single Lipinski violation being acceptable when other properties are favorable.

9. Sorafenib (Nexavar)

MW ~464.8, LogP ~3.8, HBD 3, HBA 7. Zero violations. Sorafenib sits right at the edge of Lipinski space without crossing any boundaries.

10. Abiraterone (Zytiga)

MW ~349.5, LogP ~4.2, HBD 1, HBA 2. Zero violations. Abiraterone is administered as the acetate prodrug, and its small size and moderate lipophilicity enable efficient oral absorption.

Note
Of the small molecule drugs in this top-10 list, only atorvastatin violates a Lipinski rule (molecular weight). The rest are fully compliant. This strongly validates the Ro5 as a practical design guideline: the world's most commercially successful oral drugs almost all fall within Lipinski space.

Famous Exceptions: Drugs That Break the Rules

While most successful oral drugs are Lipinski-compliant, some important exceptions demonstrate that the rules are guidelines, not laws. Understanding when and why violations are tolerated helps calibrate your filtering strategy.

Cyclosporine A (MW ~1202, LogP ~2.9, HBD 5, HBA 23)

Cyclosporine massively violates the molecular weight and HBA rules. It is an orally available immunosuppressant, but its absorption relies on active transport mechanisms and formulation tricks (microemulsion). It is the exception that proves the rule: achieving oral bioavailability with a molecule this large requires extraordinary pharmaceutical engineering.

Paclitaxel (MW ~853, LogP ~3.0, HBD 4, HBA 14)

Paclitaxel violates MW and HBA limits. It is essentially not orally bioavailable and must be administered intravenously. Its Lipinski violations correctly predict its absorption challenges.

Venetoclax (MW ~868, LogP ~8.0, HBD 3, HBA 11)

Venetoclax violates three rules (MW, LogP, HBA) yet achieves oral bioavailability through amorphous solid dispersion formulation and food-enhanced absorption. It is dosed orally but requires careful formulation – exactly the kind of challenge Lipinski's rules warn about.

Beyond Lipinski: Extended Drug-Likeness Rules

Since 1997, several researchers have proposed refined or additional rules to complement Lipinski's original framework. Using multiple rule sets together gives a more complete picture of drug-likeness.

Veber's Rules (2002)

Daniel Veber and colleagues at GlaxoSmithKline found that two additional parameters strongly predict oral bioavailability in rats:

  • Polar Surface Area (PSA) ≤ 140 angstroms squared: PSA measures the surface area occupied by polar atoms (O, N, and attached H). High PSA correlates with poor membrane permeability.
  • Rotatable Bonds ≤ 10: Flexible molecules pay a larger entropic penalty when binding to a target and when crossing membranes. Rigid molecules with fewer than 10 rotatable bonds have better bioavailability on average.

Ghose Filter (1999)

Ghose and colleagues proposed tighter ranges specifically for drug-like compounds:

  • LogP between -0.4 and 5.6
  • Molecular weight between 160 and 480 Da
  • Molar refractivity between 40 and 130
  • Total atom count between 20 and 70

PAINS Filters (2010)

Pan-Assay Interference Compounds (PAINS) are structural motifs that cause false positives in high-throughput screening assays. They are not about oral bioavailability but about data quality. Common PAINS substructures include rhodanines, catechols, quinones, and certain Michael acceptors. Filtering PAINS out of your compound library prevents wasting resources on promiscuous compounds that appear active but are actually assay artifacts.

Tip
The SciRouter molecular properties endpoint returns PSA and rotatable bond counts alongside the standard Lipinski parameters, allowing you to apply Veber's rules without a separate API call.

Applying Multiple Rule Sets with SciRouter

A modern drug-likeness filter should apply Lipinski, Veber, and optionally Ghose criteria together. Here is how to implement a multi-rule screening pipeline using the SciRouter API.

Multi-rule drug-likeness filter
import os, requests

API_KEY = os.environ["SCIROUTER_API_KEY"]
BASE = "https://api.scirouter.ai/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

def check_drug_likeness(smiles: str, name: str = ""):
    """Apply Lipinski + Veber rules to a molecule."""
    r = requests.post(f"{BASE}/chemistry/properties",
        headers=HEADERS, json={"smiles": smiles}).json()

    mw = r["molecular_weight"]
    logp = r["logp"]
    hbd = r["hbd"]
    hba = r["hba"]
    psa = r.get("tpsa", 0)
    rotatable = r.get("rotatable_bonds", 0)

    # Lipinski rules
    lipinski_violations = sum([mw > 500, logp > 5, hbd > 5, hba > 10])

    # Veber rules
    veber_ok = psa <= 140 and rotatable <= 10

    return {
        "name": name,
        "smiles": smiles,
        "mw": mw,
        "logp": logp,
        "hbd": hbd,
        "hba": hba,
        "psa": psa,
        "rotatable_bonds": rotatable,
        "lipinski_violations": lipinski_violations,
        "veber_compliant": veber_ok,
        "drug_like": lipinski_violations <= 1 and veber_ok,
    }

# Test with well-known drugs
drugs = [
    ("Aspirin", "CC(=O)Oc1ccccc1C(=O)O"),
    ("Ibuprofen", "CC(C)Cc1ccc(cc1)C(C)C(=O)O"),
    ("Caffeine", "Cn1c(=O)c2c(ncn2C)n(C)c1=O"),
    ("Metformin", "CN(C)C(=N)NC(=N)N"),
]

for name, smi in drugs:
    result = check_drug_likeness(smi, name)
    status = "Drug-like" if result["drug_like"] else "Not drug-like"
    print(f"{result['name']:12s}  MW={result['mw']:.0f}  LogP={result['logp']:.1f}  "
          f"HBD={result['hbd']}  HBA={result['hba']}  PSA={result['psa']:.0f}  "
          f"RotB={result['rotatable_bonds']}  -> {status}")

Practical Tips for Drug-Likeness Filtering

After decades of applying Lipinski's rules in industrial drug discovery, the community has developed practical wisdom about how to use them effectively. Here are the most important lessons.

One Violation Is Usually Fine

Lipinski himself noted that violating one rule is often acceptable. The probability of poor absorption increases significantly only when two or more rules are violated simultaneously. Do not reject a promising compound just because its molecular weight is 510 Da. Focus on the total violation count.

LogP Is the Most Important Parameter

Among the four Lipinski parameters, LogP has the strongest correlation with clinical failure due to poor pharmacokinetics. Excessively lipophilic compounds are associated with toxicity, poor solubility, high metabolic clearance, and promiscuous off-target binding. If you had to pick one parameter to optimize, reduce LogP.

Context Matters

The appropriate drug-likeness filter depends on your therapeutic area and route of administration. CNS drugs need to cross the blood-brain barrier, requiring even tighter constraints (MW < 400, LogP 1–3, PSA < 90). Topical drugs can tolerate higher molecular weights. Intravenous drugs bypass oral absorption entirely, making Lipinski irrelevant.

Use Rules as Guardrails, Not Walls

The best medicinal chemists use Lipinski's rules as early-stage guardrails that keep optimization on track, not as hard cutoffs that eliminate promising candidates. If a compound violates one rule but has outstanding activity and selectivity, it deserves further evaluation – not immediate rejection.

Try It: Free Molecular Weight Calculator

SciRouter offers a free Molecular Weight Calculator that lets you paste a SMILES string and instantly see molecular weight, LogP, HBD, HBA, and other key properties. No API key required, no sign-up, no installation. It is the fastest way to check Lipinski compliance for a single molecule.

For programmatic access to the same calculations, the SciRouter API provides the Molecular Properties endpoint. Combined with ADMET Prediction, you can screen entire compound libraries for both drug-likeness and safety in a single pipeline.

Next Steps

Lipinski's Rule of Five is the starting point for evaluating drug candidates, not the finish line. After confirming drug-likeness, the next questions are: Can the molecule actually be synthesized? What are its ADMET properties? Does it bind the intended target?

Explore our Synthetic Accessibility Guide to learn how to check whether your drug-like molecules can be made in a lab. For ADMET profiling, see the ADMET Prediction Explained deep dive. And for a broader overview of computational drug design tools, our What Is Drug-Likeness? article covers the full landscape.

Create a free SciRouter account to start checking Lipinski properties programmatically. With 500 free API calls per month and the Python SDK, you can integrate drug-likeness filtering into any computational chemistry pipeline in minutes.

Frequently Asked Questions

What is Lipinski's Rule of Five?

Lipinski's Rule of Five is a set of guidelines for predicting whether a small molecule is likely to be orally bioavailable. Published by Christopher Lipinski at Pfizer in 1997, it states that poor absorption is more likely when: molecular weight exceeds 500 Da, LogP exceeds 5, the molecule has more than 5 hydrogen bond donors, or more than 10 hydrogen bond acceptors. The name comes from the fact that all cutoff values are multiples of five.

Can a drug violate Lipinski's rules and still work?

Yes. Approximately 6% of FDA-approved oral drugs violate one or more of Lipinski's rules. Notable examples include atorvastatin (Lipitor), cyclosporine, and several kinase inhibitors. The rules are statistical guidelines, not absolute laws. Violating one rule is often acceptable, but violating two or more significantly reduces the probability of oral bioavailability.

What is LogP and why does it matter?

LogP is the logarithm of the partition coefficient between octanol and water, measuring how hydrophobic (lipophilic) a molecule is. A LogP of 0 means equal solubility in oil and water. Positive values indicate lipophilicity, negative values indicate hydrophilicity. LogP matters because it affects how a drug crosses cell membranes, dissolves in the gut, and distributes through the body. Excessively lipophilic drugs (LogP > 5) tend to have poor aqueous solubility, high plasma protein binding, and increased toxicity risk.

What are hydrogen bond donors and acceptors?

Hydrogen bond donors (HBD) are groups that can donate a hydrogen atom in a hydrogen bond, typically OH and NH groups. Hydrogen bond acceptors (HBA) are groups that can accept a hydrogen bond, typically oxygen and nitrogen atoms with lone pairs. Too many HBD or HBA groups make a molecule too polar to efficiently cross cell membranes by passive diffusion, reducing oral absorption.

Are there better rules than Lipinski's Rule of Five?

Several extended rule sets have been developed since 1997. Veber's rules add constraints on polar surface area (PSA less than 140 angstroms squared) and rotatable bonds (10 or fewer). Ghose's rules define tighter ranges for LogP, molecular weight, molar refractivity, and atom count. PAINS filters identify promiscuous substructures that cause false positives in assays. Modern drug discovery typically applies multiple rule sets together rather than relying on Lipinski alone.

How do I check Lipinski properties for my molecule?

You can check Lipinski properties instantly using the SciRouter Molecular Properties API. Send a SMILES string to the /v1/chemistry/properties endpoint and the response includes molecular weight, LogP, hydrogen bond donor count, hydrogen bond acceptor count, and a Lipinski compliance summary. No software installation is required. The free tier includes 500 API calls per month, or you can use the free Molecular Weight Calculator tool on the SciRouter website.

Try this yourself

500 free credits. No credit card required.