Interactive tool
Molecule workbench
Draw, paste or name a molecule to get its properties, drug-likeness checks, a 3D shape and the most similar approved drugs, all computed in your browser, then see where it sits on a map of approved drugs.
Loading the workbench…
What it shows
Give it a molecule by drawing it, pasting a SMILES string or typing a name, and it reports the standard medicinal-chemistry descriptors (molecular weight, Crippen logP, polar surface area, hydrogen-bond donors and acceptors, rotatable bonds, rings, fraction sp3), Lipinski's rule of 5 and Veber's rules with the reason for each pass or fail, the QED drug-likeness score with the eight inputs that set it, and any PAINS substructure alerts.
It then builds a 3D shape, finds the ten most structurally similar approved drugs, and places the molecule on a map of 2,197 approved small-molecule drugs from ChEMBL 37, so you can see whether its property profile looks like that of approved drugs (ChEMBL max_phase 4: approved in at least one country, including some later withdrawn). The map colours each drug by the routes ChEMBL records for it: oral, parenteral (injected or infused) but not oral, topical only, or other or unknown; a drug given both by mouth and by injection counts as oral. Lipinski's rule of 5 is about absorption and permeation and Veber's rules about oral bioavailability, so the colours show where orally given drugs sit among the rest. They are records for approved drugs, not a forecast for your molecule. Links of the form ?smiles= or ?name= open a molecule directly, and the address updates as you work, so any view can be shared. If a link has both, the SMILES decides the structure and the name is only a label.
How it works
All chemistry runs in your browser, apart from the opening example (imatinib), whose results the pipeline works out in advance with the same code, so opening the page does not download the chemistry engine; it loads when you choose, type or draw a molecule, or open a link to one. RDKit.js (the RDKit C++ toolkit compiled to WebAssembly) runs in a Web Worker and computes the descriptors, the 2D drawing and Morgan fingerprints (radius 2, 2,048 bits). RDKit.js has no QED, no PAINS catalogue and no similarity function, so those are ported: QED follows RDKit's QED.py with the same patterns, parameters and weights, PAINS uses the 480 filters from RDKit's FilterCatalog, and Tanimoto similarity is computed on the fingerprint bits. A salt or other multi-part input is described by its largest organic fragment (imatinib mesylate as imatinib), unless another part holds a metal other than a simple counter-ion such as sodium or calcium: PubChem writes carboplatin as its ligands plus a separate platinum ion, so such an input is kept whole and treated as a metal complex. A structure that matches a library drug only after redrawing, such as another tautomer, is recognised by its standard InChIKey.
The ports are checked against Python RDKit of the same release (2026.03.6). On all 2,197 library drugs, the browser gives the same QED to within 3 × 10⁻¹⁶, the same descriptors, formulae and canonical SMILES, the same Morgan bits and the same PAINS matches; 124 of those drugs match at least one PAINS filter, so the positive case is covered too.
The 3D shape comes from OpenChemLib in a second worker: its conformer generator starts from the most likely torsion angles in its built-in torsion tables and avoids clashes, then the MMFF94s+ force field minimises the result. 3Dmol.js draws it. The map is a principal component analysis of nine standardised descriptors. Your molecule is projected with the stored means, standard deviations and loadings, so it lands in the same fixed space as the library, and a drug already in the library lands exactly on its own point.
How it was built
A Node pipeline downloads every approved molecule that ChEMBL types as a small molecule (max_phase 4) from the ChEMBL web services with timeouts and retries, checks that the release is ChEMBL 37, keeps the 2,197 parent molecules that have a structure, describes each with the same RDKit.js code the page uses, fits the PCA and writes one 250 KB JSON file (about 80 KB compressed) with ChEMBL ids, names, SMILES, ChEMBL approval year (its first_approval field), route flags and map coordinates. For the route flags it also downloads every ChEMBL record flagged oral, parenteral or topical, so a flag that ChEMBL sets only on a salt or other form of a drug still counts for the drug. The pipeline also runs the page's own analysis and similarity code on the opening example and saves the result (about 27 KB compressed); a test checks that it matches what the page computes. A Python script with RDKit produces the reference values the tests compare against and converts RDKit's PAINS definitions.
Fingerprints are not shipped. Storing them would add about 110 KB compressed, while computing them from the SMILES takes a second or two in the background worker once RDKit has loaded (the page shows the time it took on your device), and guarantees they match the query fingerprint bit for bit. Names are resolved against the library first and then with PubChem's PUG REST service, using its current SMILES property (requests for the older IsomericSMILES and CanonicalSMILES names now return SMILES and ConnectivitySMILES).
Limits
- For research and education only. It is not a prediction of whether any molecule will work, be absorbed or be safe, and it is not medical advice.
- Rules of thumb and QED describe typical oral drugs. Many approved drugs break them (natural products, antibiotics, drugs taken up by transporters, injectables), so a fail is a prompt to look closer, not a verdict. They are not given for metal complexes or inorganic salts, which they were never fitted to.
- Crippen logP and TPSA are fast calculated estimates (the Wildman-Crippen and Ertl methods), not measurements; Crippen logP is not the BioByte CLOGP that Lipinski used. The rotatable-bond count uses RDKit's strict definition, which can differ from the software used in the original papers.
- A salt or mixture is described by its largest organic fragment, with its charge as drawn: the tool does not neutralise it. If a smaller fragment holds a metal other than a simple counter-ion such as sodium, potassium, magnesium or calcium, the whole input is kept instead.
- The 3D shape is one conformer from a single seeded run, minimised in vacuum. Real molecules move between many shapes, and a bound drug may look different. Stereocentres not defined in the input (racemic drugs such as ibuprofen and thalidomide, for example) are given an arbitrary configuration in 3D. Molecules with over 100 heavy atoms (in the largest fragment) are not built, large or ring-rich ones (cyclosporin, for example) can take a minute or more, and metal complexes are not modelled.
- The library holds approved parent molecules that ChEMBL types as small molecules and that have a structure. Drugs without a structure (many metal complexes, such as cisplatin, and mixtures) are missing. So are drugs ChEMBL types as proteins, oligosaccharides or unknown, which include peptides and some small molecules such as theophylline, ciclosporin, carfilzomib and acarbose.
- Route groups come from ChEMBL's oral, parenteral and topical flags, which mark routes a drug is known to be given by. They are records, not predictions, and the tool does not say whether any molecule would be orally active. A missing flag means ChEMBL has none, not that the route is never used. ChEMBL counts inhaled and eye products as topical (salmeterol, latanoprost). A flag set only on a salt or other form counts for the drug; this adds one, bortezomib. Of the 2,197 drugs, 1,268 are oral, 371 parenteral but not oral, 221 topical only and 337 other or unknown.
- 75 library drugs are stored by ChEMBL as salts (sodium benzoate, for example) and are compared as stored, so a salt can score below 1.00 against its own parent.
- Approval years are ChEMBL's first_approval field. For many older drugs this is the US approval year, which can be decades after the drug was first used elsewhere: metformin shows 1995, but it was first reported as a diabetes treatment in France in 1957 (Bailey CJ, Diabetologia 2017;60:1566-1576). Some drugs have no year, including many approved only outside the US (gliclazide and domperidone) and a few approved in the US (bortezomib, approved in 2003); some drugs approved only outside the US do have one (agomelatine, 2009). 268 of the 2,197 drugs are flagged by ChEMBL as withdrawn for toxicity in at least one country; they stay in the library and on the map.
- The map keeps 68% of the variance in the nine descriptors (43% on the first axis, 25% on the second), so points close on the map can still differ in ways the map does not show. It compares properties, not structures or targets.
Next step
Need a tool like this built?
Want to talk about a role, a project or any of the work here? Get in touch and I will reply within a working day.
Available from September 2026 for full-time roles and selected freelance projects.