ESmol & NDKmol - Molecular Viewer for Android

About ESmol & NDKmol

Screenshot of NDKmolESmol and NDKmol are open-source molecular viewers for Android. You can view three dimensional structures of proteins and small molecules on your Android phone/tablet. Both are licensed under LGPL3.

ESmol is written in Java while NDKmol is written in C++ using Android NDK. ESmol is more portable and runs on almost all Android phones/tablets. NDKmol runs faster and supports bigger molecules than ESmol. NDKmol can even open GroES-EL complex! (try PDBID: 1AON)

ESmol and NDKmol have almost same functionality as GLmol, which is written in WebGL/Javascript and runs on Web browsers. You can try GLmol online.


Currently ESmol/NDKmol has following features. More is coming...

System requirements

Android 1.6 and newer is supported. NDKmol runs on most of modern devices.

How to use

When launched, NDKmol automatically loads Porin (PDBID: 2POR) as an example. You can rotate the molecule by your finger. (Two-finger gestures such as pinch-zoom is not supported yet.)

To zoom or translate the molecule, press MENU button in your phone/tablet and select the mode.

Everything can be done from the menu; changing representation of protein or ligand (non protein molecules), changing colors, showing biological assembly, crystal packing and/or unit cell.

To load other PDB files, please put the file in "PDB" directory of the SD card and select "Open" command in the menu. You can also download structures directly from RCSB PDB and NCBI PubChem web server. Select "Search and Download" in the menu.


You can download ESmol and NDKmol from Android Market. If your device doesn't support Market, you can also download from this server. In this case, you may have to change setting by checking Settings>>Applications>>Unknown sources.

For source codes, follow the link below.

Interaction with other softwares

ESmol and NDKmol have handlers for file extension pdb/sdf/mol. Once NDKmol or ESmol are installed, when users click(tap) a link to these files on Web browser, the viewer will be launched. If you are writing an application and want to invoke ESmol/NDKmol, the following code is enough.

To open local files,
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("file:///sdcard/test.pdb"))));

To download files from network,
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://some.server/pdbfile.pdb"))));


20120827: Version 0.90 (NDKmol) - Improved handling of BIOMT headers (biological assembly), Corrected display of proline sidechain, Can delete files in File Open dialog, Corrected multiple-bond (line) rendering
20120501: Version 0.80 (NDKmol) - Smoothing of beta sheets in ribbon/strand representation, Ribbon with thickness, Improved symmetry operation, Reversed chainbow color, C alpha trace will not be smoothened now, Initial model is now porin (2POR), Fixed bug in SDF/MOL parser, Fixed bug in "line" representation
20120123: Version 0.73 - Fixed a file open bug.
20120120: Version 0.72 - Disabled fog by default due to the coloring problem. Can be enabled from preference dialog.
20120118: Version 0.71 - Improved fog. Hopefully fixed a coloring bug which affected some devices. If still not fixed, please tell me with PDBID.
20120117: Version 0.7 - Added Fog, Added Slab, Added "Reset view", Added "Show header", Biological Assembly can now be drawn as cartoon/strand/B factor tube (Note: ligands are not shown for symmetry molecules), Improved File Open Dialog, Improved PDB/PubChem Search dialog, Improved of menu
NDKmol now has same features as ESmol 0.7
20111226: Version 0.6 (ESmol) - Added handlers for .pdb/.mo/.sdf files, Added RCSB PDB / NCBI PubChem searcher, Fixed bug in "color by structure", Fixed bug with 5' phosphorylated nucleic acid, Improved line lighting, Improved "color by B factor"
20111223: Version 0.5 (NDKmol) - Catch up on ESmol 0.5
20111214: Version 0.5 (ESmol) - New coloring: polar/nonpolar and temperature factor, New representations: B factor tube, strand, nucleic acid ladder(polygons), nucleic acid line, Display of solvents, Supported SDF/MOL files, Translation into Japanese, Improved bond detection; more accurate and faster, Bug fix
20111122: Version 0.4 - minor fix. First release on Android market.
20111120: Version 0.3 - Improved lighting. Added HTTP Proxy support. Improved bond detection involving sulfer or hydrogen atoms. Ignore alternative locations (ad hoc fix).
20111119: Version 0.2 - fixed a bug which caused crash on Honeycomb(Android 3.2) when "Open" dialog is closed.
20111116: Version 0.1 - first release


Comments and suggestions are welcome. Please mail to biochem_fan at or write in the forum.