Skip to content


rwst edited this page Aug 11, 2012 · 12 revisions

Welcome to the jchempaint wiki!


  • July-August 2012: Basic SVG output is implemented
  • July 2012: Move to github is finished now; first release after hiatus already, a bugfix release
  • May 2012: Development, wiki, and tracker is being moved to github. Please forgive any anachronisms.
JChemPaint (or JCP for short here) is the editor and viewer for 2D chemical structures developed using CDK. It is implemented in several forms: a Java application and two varieties of Java applet.

Table of Contents

JChemPaint Editor applet

  • An applet is a Java program that runs only within a web page.
  • The JCP Editor allows the user to draw chemical structures, and to import and export structure data in plain-text formats (SMILES, Molfile, CML)
  • It also allows to programmatically load and display a chemical structure, which can then be edited by the user.
For demonstration, the Steinbeck group (EBI) hosts various releases of the applet. You can try the stable relase there, or preview the development version.

A snapshot of the 3.0 release applet is given below:

To learn how to insert and use the applet within a web page, see JChemPaint Inside Webpages.

JChemPaint Viewer applet

  • (An applet is a Java program that runs only within a web page.)
  • The JCP Viewer only allows to programmatically display a chemical structure, which the user cannot modify.
  • Demo page

To learn how to insert and use the applet within a web page, see JChemPaint Inside Webpages.

JChemPaint application

  • The application is a stand-alone program. It needs an installed Java Virtual Machine for operation. If your system does not have a JVM, get it from Sun's Java website.
  • The JCP application has all the functionality of the JCP Editor applet (see below), plus file input and output.
Below a screenshot of the 3.0 release:


These are the most prominent capabilities of the application; most of them are also available in the applets.

  • Drawing and deletion of single, double, triple and stereo bonds.
  • Ring templates (3-8 atoms) with one-click attachment.
  • An extensive template library.
  • Colouring of atom types, and other rendering settings.
  • Editing of atomic charges, isotopes and hydrogen count.
  • Loading and saving of structures in Chemical Markup Language (CML) and as MDL MOL files and SDF files (loading only).
  • Automated Structure Layout, also known as Structure Diagram Generation.
  • Loading structures from the Internet using CAS or NSC number.
  • Normalization of structures, currently limited to aromaticity detection.
  • Saving bitmap pictures of the structures.
  • Saving structures as graphics (PNG, BMP, Scalable Vector Graphics (SVG)).
  • Postscript printing.
In some aspects JChemPaint is different from other 2D editors:
  • JChemPaint is open source and free software. We believe that scientific software, especially when its development was publicly funded, should be free. As the GNU people put it: «`Free software´ is a matter of liberty, not price. To understand the concept, you should think of `free speech´, not `free beer´». Everyone can participate in the development of the program. Everyone can download and change the source code, provided that they make the changes publicly available again, according to the GNU Lesser General Public License, LGPL. This ensures that the community can take advantage of any bugfix or enhancement made to the system. It also ensures that a scientist, who needs a standard piece of software like a structure editor as a helper application in his/her new program, does not have to reinvent the wheel over and over again because all the structure editors that have been written before are now proprietary software. If there is a free structure editor, he/she can focus on the real science.
  • JChemPaint is in constant development and you can help (see below).
  • Since JChemPaint is written in Java, it runs on any computing platform and operating system for which a Java Virtual Machine (of version >= 1.3 up to JCP 2.4 and version >= 1.5 for JCP > 2.4) has been implemented (like Linux, Windows, Solaris, AIX and others).
  • JChemPaint is available free of charge.
  • JChemPaint is translated into several languages: Dutch, French, German, Polish, Portuguese and Spanish.

Who did it?

JChemPaint was originally written by Christoph Steinbeck, soon after co-developed with Egon Willighagen, and is now developed by the Steinbeck Group group and a team of international developers.

The project was started by Christoph Steinbeck in the late 1990's to be the complementary structure editor to Jmol. It was then co-developed by Egon Willighagen and others. Jmol again is a visualisation and analysis tool for 3D molecular structures, started by Dan Gezelter at Notre Dame University, initiator of the Open Science Project and, like JChemPaint, developed by an international team of opensource programmers.

How can I participate?

JChemPaint is developed as a GitHub project and we haven't decided about the final location. This may well be it. GitHub provides the repository, wiki pages, and bugtracking. The mailing list stays at sourceforge for the moment.

There is more than one way to participate:

  • You can participate in the dicussion lists, by making recommendations for new features, submitting bug reports, etc. Bugs reports and feature requests can be made with our bugtracker Issues
  • You can write documentation.
  • You can write source code.
  • You can translate the interface into other languages, or help maintain the existing translations.
If you want to write documentation or start coding, please check the GitHub site documentation on how to use git. If you actively want to contribute, please get a GitHub account, and clone the repo.

How can I get it?

The JChemPaint files (application and applet) can be downloaded from the downloads page of the CDK project at SourceForge. The application is a single jar file (executable using Java), while the applet is packed as a zip file containing a set of jar files; unzip them all together to a single folder in your computer.

To get the stable release (JCP3), go for the "JChemPaint, version 3.x" link.

At you can also find a nightly build of the applet and the application. For the applet, try the html pages, for the application, download jchempaint-xxx.jar.

Tips and Tricks

Font smoothing

On Linux, you can use

on startup. This enables font smoothing, giving a better image.


JCP is internationalized and localized. This means that its interface can be shown in different languages (in addition to the English default). Language can be chosen from inside JCP via the View->Language menu

Available translations are (not all are complete): Arabic, Czech, Dutch, German, Hungarian, Norvegian Bokmal, Polish, Portuguese (Brazil), Russian, Spanish, Thai. The status of the translations can be viewed on launchpad.

If needed, the language can be changed in this way:

  • You can start the application in a certain language from a command line (or from a shortcut):
java.exe -Duser.language=nl -jar jchempaint-2.3.4.jar
(you may need to insert the paths to Java and to JCP)
  • For the applet, add a parameter tag like
<param name="language" value="de">
to the <applet> tag in the html page.


Developers, please refer to the Development-jcp page.


Literature & Citations

  • "An Applet Release of JChemPaint"
Stefan Kuhn. CDK News 3 (1), 21-23 (March 2006). PDF download, mirror 1 · PDF, mirror 2.
  • "JChemPaint - Using the Collaborative Forces of the Internet to Develop a Free Editor for 2D Chemical Structures"
Stefan Krause, Egon Willighagen and Christoph Steinbeck. Molecules 5, 93-98 (2000). Full-text html.

Webpages that use JCP

These are places where you may get a feel of how JCP can be used, and get pieces of html / js source code too.

  • NMRShiftDB - choose a structure and then the "J" little icon; you will see a JCP viewer coupled to NMR tabular and graphic data.
  • ChEBI - Chemical Entities of Biological Interest at European Bioinformatics Institute, go to "Advanced Search"


Something went wrong with that request. Please try again.