TOOL
RDKit logo

RDKit

RDKit is an open-source cheminformatics and machine-learning toolkit whose core is written in C++ and exposed through a first-class Python wrapper (built with Boost.Python), plus Java and C# bindings generated via SWIG, JavaScript bindings compiled with Emscripten, and CFFI wrappers. It originated as the in-house toolkit of the company Rational Discovery, was written largely by Greg Landrum, and was released under the permissive BSD license around 2006 after the company closed. It is now a mature, community-driven project with roughly six-monthly major releases, an annual User Group Meeting, and heavy adoption across academia and the pharmaceutical industry.

At its heart RDKit models a molecule as a graph: atoms are nodes and bonds are edges, decorated with chemical semantics such as element, formal charge, aromaticity, stereochemistry, and ring membership. This graph is the substrate for the rest of the library, so RDKit sits squarely in the graph-data world even though its vocabulary is chemical rather than network-analytic. It reads and writes the standard molecular exchange formats, including SMILES, SDF, Molfile, InChI (and InChIKey, InChIKey), MOL2, and PDB, and it uses SMARTS as its substructure query language and SMIRKS/reaction SMARTS for encoding chemical transformations. This makes it a de facto format-conversion hub for small molecules, comparable in role to Open Babel, with which it is often paired.

Core capabilities include canonical SMILES generation, substructure and similarity searching, 2D depiction and 3D conformer generation (via the ETKDG algorithm with UFF/MMFF force-field minimization), and a rich family of fingerprints and descriptors—Morgan/ECFP, topological, and MACCS keys among them—that feed downstream machine-learning and QSAR work. A PostgreSQL cartridge adds in-database substructure and similarity queries, and RDKit powers cheminformatics nodes in KNIME and underpins many Python data-science pipelines alongside Biopython for the biomolecular side.

RDKit's strengths are breadth, correctness, permissive licensing, and a large tested codebase; its practical limitations are that it targets small-molecule and (partially) biopolymer chemistry rather than general graphs, offers no built-in molecular docking or quantum chemistry, has a steep API surface, and depends on a sizable C++/Boost build that can complicate installation outside the packaged conda and wheel distributions.

Graph Formats(Input & Output)

Input Formats

Output Formats

Frequently Asked Questions

What graph file formats does RDKit support?

See the list on this page — it shows every format RDKit can read, write and display.

How do I import a graph into RDKit?

Convert your file to a format RDKit can read, then open it in RDKit. Use GraphInOut to get a RDKit-compatible file in seconds.

How do I convert a file so RDKit can open it?

Use the convert links above — upload or paste your graph, pick a format RDKit accepts and download the result, right in your browser.