Chemtool is a small program for drawing chemical structures on Linux and Unix systems using the GTK toolkit under X11. A short and possibly outdated description of the available functions is available here.


Chemtool relies on transfig by Brian Smith for postscript printing and exporting files in PicTeX and EPS formats. Its companion program, XFig, is recommended for enhancing the output of chemtool, and for creation of 2D diagrams and schematics in general. Both are included with most distributions of Linux, and are available through a number of websites including If you want to import chemtool drawings into word processing programs other than LaTeX, you will probably want to add a preview bitmap to them, as neither StarOffice/OpenOffice nor that software from Redmond seem to be able to display postscript inserts on screen without them. For this purpose, using either ps2epsi, which comes with ghostscript, or epstool, a part of gsview is recommended. Since chemtool-1.6, this option is supported directly (through the equivalent function offered by recent versions of transfig).

Chemtool was originally written by Thomas Volk, then a student of chemistry and biology at the university of Ulm, Germany. His version, which was described in an article in the german periodical LinuxMagazin, was using plain X11.

I became involved in development shortly after reading this article, adding a few bond types and such, and gradually took over from him as he was lacking time due to his exams drawing near, and probably generally moving on to other things. Note that i am not doing this alone - much of the progress is due to contributions of code, translations, examples or just ideas.

A more recent review of chemtool appeared in Nachr. Chem. Tech. Lab. 49 (2001) 1310-1314.
As Thomas Volk continued to host the project web pages for a long time, this page here is still a poor excuse for a webpage, mainly just a point to gather new versions. This will change... i promise. :-)

The "development snapshots" at the bottom of this page are usually not (intended to be) less reliable than the "released" version - they just may contain incomplete new features, or features that may be gone again in the next snapshot if they prove to be unnecessary or too hard to implement correctly.

Please contact me at if you have any questions or suggestions.

History of pre-1.4 changes

History of pre-1.5 changes

Latest stable version:

Chemtool-1.6.14 (August 13, 2013)

This is just an interim release to fix a crash bug in all output modes based on fig2dev. Also included is an update to the build scripts to facilitate building on ARM64 targets, and autodetection of recent versions of openbabel for im/export should work again.

chemtool-1.6.14, sourcecode in tar.gz format
chemtool-1.6.14-1.src.rpm, sourcecode in rpm format
chemtool-1.6.14-1.x86_64.rpm.suse113, openSuSE 11.3 (64bit) rpm package
chemtool-1.6.14-1.x86_64.rpm.suse113, openSuSE 12.2 (64bit) rpm package

Previous stable versions:

Chemtool-1.6.13 (December 24, 2011)

This release consists mainly of fixes for bugs that were exposed by recent versions of the gcc compiler, linker and X11 libraries - failures to build the program or to enable translations with the generated Makefile, and most importantly a bug that led to an immediate crash at startup on at least Fedora16. Also included is a new export module for the asymptote program and smaller fixes (entering Unicode symbol characters by cut-and-paste, saving/exporting to file paths containing spaces).

chemtool-1.6.13, sourcecode in tar.gz format
chemtool-1.6.13-1.src.rpm, sourcecode in rpm format

Chemtool-1.6.12 (June 7, 2009)

This release contains another round of fixes for label positioning and clipping of bonds around labels. The pen color button has been replaced by a drop-down menu, and a "white" pen for drawing on colored backgrounds has been added. Chemtool now automatically resizes its main window on small (netbook) screens, and it can also be used in an non-interactive mode to create postscript (etc.) output from previously created chemtool structure files. The Polish translation has been updated, and a new Bulgarian translation has been added.

chemtool-1.6.12, sourcecode in tar.gz format

Chemtool-1.6.11 (August 26, 2007)

This release contains numerous fixes for label positioning and sub/superscript kerning. Bond length and zoom factor are now stored with the drawing, bond clipping of multiple bonds was improved and new special key sequences for circled plus and minus symbols were added. The configuration dialog now lists gtklp among the supported print commands. Source layout and build system were reorganized to make addition of translations easier, and a Portuguese localization file was added.

chemtool-1.6.11, sourcecode in tar.gz format
chemtool-1.6.11-1.src.rpm, sourcecode in rpm format
chemtool-1.6.11-1.i586.rpm, SuSE 10.2 rpm package

Chemtool-1.6.10 (April 8th, 2007)

This release adds PNG export, round brackets, text output in east-european locales and some new templates. Several bugs related to special character handling in GTK2, screen display of labels and exporting to EPS and SVG have been fixed. The configuration dialog has been redone and now includes support for kprinter, and the labeling shortcuts no longer interfere with

Chemtool-1.6.10 (April 8th, 2007)

This release adds PNG export, round brackets, text output in east-european locales and some new templates. Several bugs related to special character handling in GTK2, screen display of labels and exporting to EPS and SVG have been fixed. The configuration dialog has been redone and now includes support for kprinter, and the labeling shortcuts no longer interfere with GTK's menu accelerators.

chemtool-1.6.10, sourcecode in tar.gz format
chemtool-1.6.10-1.src.rpm, sourcecode in rpm format
chemtool-1.6.10-1.i586.rpm.SuSE102, SuSE 10.2 rpm package
chemtool-1.6.10-1.i586.rpm.SuSE93, SuSE 9.3 rpm package

Chemtool-1.6.9 (March 6th, 2006)

This release fixes several issues with right-justified labels and drawing of triple and quadruple bonds.

chemtool-1.6.9, sourcecode in tar.gz format
chemtool-1.6.9-1.src.rpm, sourcecode in rpm format
chemtool-1.6.9-1.i586.rpm.SuSE93, SuSE 9.3 rpm package

Chemtool-1.6.8 (January 3rd, 2006)

This release fixes a bug (crash on startup) that was exposed by gcc 4. It also adds detection of the recently released OpenBabel 2.0 and the ability to use Openbabel for exporting to foreign file formats. Subscript encoding in the SVG export was tweaked again to work around current limitations in the SVG support of Firefox 1.5 and Konqueror 3.x.

chemtool-1.6.8, sourcecode in tar.gz format
chemtool-1.6.8-1.src.rpm, sourcecode in rpm format
chemtool-1.6.8-1.i586.rpm, SuSE 9.3 rpm package

Chemtool-1.6.7 (August 2nd, 2005)

This release fixes several serious bugs related to label rendering and printing that occured (only) when chemtool was built with GTK 2 instead of GTK 1.2 (characters being invisible or printed on top of each others)

To make this more than just another bugfix release, and because the development cycle for 1.7 is taking longer than intended, i have added some of the improvements from the 1.7 alphas:

NOTE: gcc 4.0.x apparently miscompile chemtool when the "-O2" optimizing option is used (as it is by default) - the resulting binary will crash on startup. If you need to use gcc-4, either compile it without optimization (remove the "-O2" option from the Makefile before running "make") or change the declaration of "const char *fontsizelabel" in line 2983 of file main.c to a "static const char*" UPDATE: This is actually not a gcc bug, but an error on my part that somehow did not usually lead to failures with older compilers. Instead of changing the declaration of fontsizelabel, change the "15" in the declaration of the bondnums array (line 2981) to a "22" or wait for 1.6.8 (thanks to Richard Guenther / Michal Marek).

chemtool-1.6.7, sourcecode in tar.gz format
chemtool-1.6.7-1.src.rpm, source rpm package
chemtool-1.6.7-1.i586.rpm, SuSE 9.1 binary rpm package (using GTK 1.2)
chemtool-1.6.7-1.i386.rpm, SuSE 8.2 binary rpm package (using GTK 1.2)
chemtool-1.6.7-1.x86_64.rpm, SuSE 9.2 binary rpm package for AMD64(using GTK 2)

Chemtool-1.6.6 (February 12th, 2005)

This release fixes the stupid bug that made the molfile preview crash immediately. It also corrects the rendering of wiggly (unknown stereochemistry) bonds and adds a sample .sdf file.

chemtool-1.6.6, sourcecode in tar.gz format
chemtool-1.6.6-1.src.rpm, source rpm package
chemtool-1.6.6-1.i586.rpm, SuSE 9.1 binary rpm package (using GTK 1.2)
chemtool-1.6.6-1.i386.rpm-SuSE81, SuSE 8.1 binary rpm package (using GTK 1.2)

Chemtool-1.6.5 (February 6th, 2005)

This release fixes several issues with MDL molfile im- and export, adds sdf file reading/browsing, v3000 molfile format reading and molfile preview as well as a Dutch translation (Myckel Habets) and FreeBSD portability fixes in the configure script.

NOTE: due to a silly last-minute editing blunder, loading any mdl molfile (except V3000 format) will cause an immediate crash in the previewer code with this version.
A hotfix version is available as chemtool-1.6.5a.tar.gz, which will be re-released as 1.6.6 (with rpms etc.) soon.

chemtool-1.6.5, corrected sourcecode in tar.gz format
chemtool-1.6.5, original sourcecode in tar.gz format
chemtool-1.6.5-1.src.rpm, source rpm package
chemtool-1.6.5-1.i586.rpm, SuSE 9.1 binary rpm package (using GTK 1.2)

Chemtool-1.6.4 (December 20th, 2004)

This version adds support for compiling with GTK 2.x and fixes a few issues with arrowhead sizing on curved arrows and some more cases of bad label placement. Also, a set of amino acids has been added to the template widget.

chemtool-1.6.4, sourcecode in tar.gz format
chemtool-1.6.4-1.src.rpm, source rpm package
chemtool-1.6.4-1.i586.rpm, SuSE 9.1 binary rpm package (using GTK 1.2)

Chemtool-1.6.3 (May 18th, 2004)

This adds portability fixes for 64 bit systems (particularly AMD64) and OS X (Darwin). Also, the sum formula / molecular weight calculator has been updated to handle the second and third row of transition elements.

chemtool-1.6.3, sourcecode in tar.gz format
chemtool-1.6.3-1.src.rpm, source rpm package
chemtool-1.6.3-1.i586.rpm.SuSE91, SuSE 9.1 binary rpm package
chemtool-1.6.3-1.i586.rpm.SuSE90, SuSE 9.0 binary rpm package
chemtool-1.6.3-1.i386.rpm.SuSE82, SuSE 8.2 binary rpm package
chemtool-1.6.3-1.i386.rpm.SuSE81, SuSE 8.1 binary rpm package
more rpm packages will follow soon

Chemtool-1.6.2 (May 6th,2004)

This is basically a re-release of 1.6.1 with the bugfix for exporting right-justified labels applied. (The last two items on the list of changes below are specific to 1.6.2., however).
As there had already been quite a number of downloads by the time the bug was noticed, this seems to me to be the cleanest solution. (Even with rpm's versioning, having both good and bad packages circulating via local mirrors would be a bad idead, and the problem is even more pronounced with the simple tar archive.)

chemtool-1.6.2, sourcecode in tar.gz format
chemtool-1.6.2-1.src.rpm, source rpm package
chemtool-1.6.2-1.i586.rpm, SuSE 9.0 binary rpm package
chemtool-1.6.2-1.i386.rpm.SuSE80, SuSE 8.0 binary rpm package

Fixes and enhancements in chemtool 1.6.2 over 1.6


chemtool-1.6, sourcecode in tar.gz format
chemtool-1.6-1.src.rpm, source rpm package
chemtool-1.6-1.i386.rpm, SuSE 8.0 binary rpm package
chemtool-1.6-1_rh9.i386.rpm, Red Hat 9.0 binary rpm package
chemtool-1.6-1_rh9.src.rpm, Red Hat 9.0 source rpm package
Debian package (at
package for Russian ALT linux distribution (Russian language page at package for Russian ALT linux distribution (English language page at

New features:

Previous stable version:


chemtool-1.5, sourcecode in tar.gz format
chemtool-1.5-1.src.rpm, source rpm package
chemtool-1.5-1.i386.rpm, SuSE 8.0 binary rpm package
chemtool-1.5-1mdk.i686.rpm, Mandrake 8.1 binary provided by Dominique Burget

more rpm packages may follow - .deb packages can be found at

Changes vs. 1.5.alpha27

Updated spec file (Radek Liboska). Fix for 'stepwise rotation' mode not working for counter-clockwise rotation (Michael Banck). Added a program icon to the main window, and .cht mimetype definitions for Gnome and KDE (Radek Liboska), and updated configure script and to install them as needed. Fixed return code checking for printing (was not recognizing failed attempts due to wrong print command or queue name). Fixed off-by-one error in print status message length that could cause memory corruption. Updated Brazilian Portuguese translation (Flavio Matsumoto). Updated Russian translation and added .sdf extension to molfile import patterns (Michael Shigorin). Changed SVG filename extension back to .svg, as this is more correct than .xml (and the .xml name turned out to be necessary only as a workaround for a bug in Mozilla that has been fixed in the meantime). Updated Polish translation (Nikodem Kuznik). Made a few cosmetic changes in (Michael Banck).

Changes vs. 1.4.1:

New drawing options:

Development versions leading up to 1.6

have moved here

Development versions for 1.7

ct17a1.tgz (12.02.05)
This version adds a clean separation between preview and drawing area - no more glitches in the canvas while a file dialog is displayed. More importantly, it adds the beginning of database support with (sub)structure searches in SDF files or MySQl databases using the checkmol program of Norbert Haider. See for this program and a description of the MySQL database setup.

ct17a2.tgz (13.02.05)
This adds a proper configuration dialog for the database settings.

ct17a3.tgz (26.02.05)
This adds runtime support for fig2sxd (export to OpenOffice Drawing format) and reading and presenting of optional property data (typically CAS numbers) found in sdf files.

ct17a4.tgz (04.03.05)
This version fixes a (harmless?) gdk assertion in the query result preview, and adds a preview dialog for browsing MySQL results (SDF browsing was already in a1). It is now possible to redisplay the results of the most recent search.

ct17a5.tgz (19.03.05)
Molfiles were exported upside down in some cases, and hydrogen count was off by one. The sdf preview was counting one entry beyond the end of the file.
There is now a new export option to append to existing sdf files. Adding and removing of (sdf) properties is now possible.

ct17a6.tgz (25.03.05)
Made MySQL result preview actually work. Added automatic retrieval of all property entries from table "mol" of the database when a result is chosen. Fixed compilation without MySQL. Corrected several memory overflow bugs in the database access code.

ct17a7.tgz (28.03.05)
Added a menu option to save molecules in a MySQL database - this automatically brings up the property dialog with all the fields in the "mol" table and uses checkmol to fill in the fingerprint data in the "molstat" and "molfg" tables.

ct17a8.tgz (25.04.05)
Added a MySQL database creation dialog. Fixed a bug that caused properties to always be retieved from the first database. The spacing between the lines of a double (triple,...) bond is now configurable.

ct17a9.tgz (27.04.05)
Fixed non-MySQL build. Fixed xfig/eps/sxd exports when compiled with GTK2 (character width was reported as zero, resulting in all characters being placed on top of each other). Made color button image wider. Export modes now report the actual number of bonds and labels written, previously the total was given even if only parts were marked.

ct17a10.tgz (2.05.05)
Fixed the screen rendering of multi-character subscripts in the gtk2 build. Corrected vertical placement of labels. Fixed a crash in the database creation function. Added "update entry" menu option for replacing the most recent hit in the database.
Modified the database insertion functions to not leak mysql handles on error, and to store (or replace) the corresponding molfile only after all database operations completed successfully. Property names are no longer displayed as editable in the 'show properties' window. Updated the INSTALL document.

ct17a11.tgz (6.05.05)
Added more MySQL data types to the database creation dialog. Added a simple property search widget.

ct17a12.tgz (7.05.05)
Combined all search widgets into a single menu option and dialog for searching any of the available sources for the current fragment and/or a database-specific property.

ct17a13.tgz (2.06.05)
Added xmlns specification to the svg file header. Moved superscripts a bit farther up in the xfig and xfig-based output formats. Fixed misdetection of fig2dev version that could lead to the generation of full-page Postscript instead of EPS files with gtk2 in some locales.

ct17a14.tgz (16.06.05)
GTK2 fixes for screen rendering of symbol characters and for a GTK2 color selector crash. New keyboard shortcut Shift+Keypad to draw electron pairs as pairs of dots. Fixed several multi-line format strings that modern gcc refuses to handle. Corrected SVG output of 'radical dot'.

ct17a15.tgz (16.07.05)
Added two new bondtypes for drawing filled and unfilled p orbital lobes.