This website is biased toward ReShiki, because its maintainer also maintains ReShiki. Please be careful.
Kekule.js
JavaScript toolkit for embedding chemical structure editors, molecule viewers, and cheminformatics functions in web applications.
Open source. 37 of 65 checklist features confirmed.
Main canvas
Default drawings
- Version taken from research file; demo displayed no version.
- The editor initially showed a Friedel-Crafts example.
- SMILES pasted into the default CML loader produced a load error.
- MOL round trips retained fixture atom and bond counts.
- The save dialog offered chemical formats but no image export.
- The hosted demo exposes Kekule.VERSION as 0.9.9.22022400 in its loaded code.
Facts
- GitHub stars
- 280 stars on 6 Nov 2026
- First commit
- 1 Feb 2015
- Repository activity
- 2,753 commits, 9 contributors, last push 21 Sept 2026
- Latest version
- v1.0.4
- Version we tested
- 0.9.9.22022400
- Runs on
- Browser, iOS, Android
- License
- MIT license; free use, modification and redistribution.
- Price
- Free
- Relies on
- Open Babel, Indigo, InChI. Own Composer canvas; Open Babel, Indigo, and InChI are optional chemistry modules.
- Draws with
- HTML Canvas 2D; optional SVG/VML via Raphaël; Three.js for 3D
- Chemistry from
- In-house Kekule.js; optional Open Babel, Indigo and InChI adapters
- Interface
- Kekule.Widget (HTML, CSS and JavaScript)
- Main language
- JavaScript
- Other languages
- C++: Optional Open Babel/Indigo WebAssembly chemistry; C: Optional InChI WebAssembly engine; PHP: Optional Moodle integration plugins
- Renderer
- Original: Kekule.Render.ChemCtab2DRenderer
- Third-party licenses
- Includes GPL-2.0-only (bundled Open Babel).
- Primarily a developer toolkit; the hosted Composer is a demonstration editor.
- Native SMILES support is output only; input requires an optional adapter.
- Stereo perception reports parity rather than R/S or E/Z labels.
In use
Screenshots from our test of this version.

Single, double and triple bonds
Single, double and triple bonds on the editor canvas.

Wedge, hash and wavy bonds
Solid and hashed wedge bonds on the editor canvas.

Ring tools
Benzene and five-membered rings on the editor canvas.

Chair and Haworth rings
A cyclohexane chair alongside ring drawings.

Lasso select and transforms
A selected molecule and selection controls in the editor.

Reaction arrows
Reaction arrows above a chemical scheme.

Curved mechanism arrows
Curved arrows beside a chemical reaction scheme.

Orbitals and symbols
Plus and heat symbols in a Friedel–Crafts reaction scheme.

Shapes, brackets and curves
Curved arrows beside a chemical reaction scheme.

MOL and SDF
MOL format and data preview beside a caffeine structure.
Features
- Tested by running it
- Seen in the app
- The manual says yes
- Partly, with the reason shown
- Not supported
- Not established, which is not the same as no
Select a mark for its proof. A filled mark opens our screenshot, or the manual if the check left nothing to picture. A ring opens the manual.
Drawing structures
- Yes, tested by running it: Drew single, double and triple bonds. Opens the screenshot.Single, double and triple bondsDrew single, double and triple bonds.github.com
- Partly: Drew solid and hashed wedges; no wavy tool visible. Opens the screenshot.Wedge, hash and wavy bondsDrew solid and hashed wedges; no wavy tool visible.github.com
- Yes, according to the manual: Coordinate and hydrogen bonds; coordinate tool requires configuration. Opens the cited page.Dative, hydrogen and quadruple bondsCoordinate and hydrogen bonds; coordinate tool requires configuration.github.com
- Not establishedChoose double-bond side
- Yes, tested by running it: Drew benzene and cyclopentane; other sizes shown. Opens the screenshot.Ring toolsDrew benzene and cyclopentane; other sizes shown.github.com
- Yes, tested by running it: Placed cyclohexane chair; Haworth tools also shown. Opens the screenshot.Chair and Haworth ringsPlaced cyclohexane chair; Haworth tools also shown.github.com
- Yes, according to the manual: Dragging controls zigzag chain length and displays atom count. Opens the cited page.Chain toolDragging controls zigzag chain length and displays atom count.github.com
- Yes, tested by running it: Placed Fischer projection; sawhorse templates also shown. Opens the cited page.Template libraryPlaced Fischer projection; sawhorse templates also shown.github.com
- Partly: Reusable serialized template API; user-save interface unverified. Opens the cited page.Save your own templatesReusable serialized template API; user-save interface unverified.github.com
- Yes, according to the manual: Ph and OMe abbreviations contain underlying molecular structures. Opens the cited page.Group abbreviationsPh and OMe abbreviations contain underlying molecular structures.github.com
- Yes, according to the manual: Atom input supports isotopes, charges and arbitrary pseudoatom labels. Opens the cited page.Charges, isotopes and atom labelsAtom input supports isotopes, charges and arbitrary pseudoatom labels.github.com
- Yes, according to the manual: Radical states and lone-pair electron markers. Opens the cited page.Radicals and lone pairsRadical states and lone-pair electron markers.github.com
- Yes, according to the manual: Keyboard operations preferentially target hovered atoms and bonds. Opens the cited page.Keyboard drawingKeyboard operations preferentially target hovered atoms and bonds.github.com
- Yes, according to the manual: Lasso, rotate and resize; negative scaling implements flipping. Opens the cited page.Lasso select and transformsLasso, rotate and resize; negative scaling implements flipping.github.com
- Not establishedTilt drawings in perspective
Reactions and mechanisms
- Yes, tested by running it: Drew normal and reversible arrows. Opens the screenshot.Reaction arrowsDrew normal and reversible arrows.github.com
- Partly: Drew single- and double-electron arcs; editing unverified. Opens the screenshot.Curved mechanism arrowsDrew single- and double-electron arcs; editing unverified.github.com
- Yes, according to the manual: API extracts chemical reactants and products from drawn reaction documents. Opens the cited page.Machine-readable reactionsAPI extracts chemical reactants and products from drawn reaction documents.github.com
- Not establishedAtom mapping
- Yes, according to the manual: Chemical symbol tools include plus signs, heat and light. Opens the cited page.Orbitals and symbolsChemical symbol tools include plus signs, heat and light.github.com
Figures and layout
- Partly: Font styling exists; canvas text blocks store plain text. Opens the cited page.Rich text captionsFont styling exists; canvas text blocks store plain text.github.com
- Yes, according to the manual: Editable line segments and arc curves. Opens the cited page.Shapes, brackets and curvesEditable line segments and arc curves.github.com
- Not establishedAlign and distribute
- Not establishedGroup and ungroup
- Yes, according to the manual: 2D coordinate regeneration requires an optional chemistry adapter. Opens the cited page.2D structure cleanup2D coordinate regeneration requires an optional chemistry adapter.github.com
- Not establishedJournal drawing styles
- Not establishedReusable custom styles
- Yes, according to the manual: Individual selected objects accept custom colors. Opens the cited page.Color controlIndividual selected objects accept custom colors.github.com
- Partly: Colored selection overlays; excluded from image export. Opens the cited page.Color highlightingColored selection overlays; excluded from image export.github.com
- Not establishedPage layout and multipage
- Yes, according to the manual: Image blocks can be inserted into chemical drawings. Opens the cited page.Imported picturesImage blocks can be inserted into chemical drawings.partridgejiang.github.io
- Not establishedTLC plates and tables
Chemistry intelligence
- Yes, according to the manual: Reports abnormal atom valences as errors. Opens the cited page.Structure checkingReports abnormal atom valences as errors.github.com
- Partly: Computes parity instead of R/S or E/Z descriptors. Opens the cited page.R/S and E/Z labelsComputes parity instead of R/S or E/Z descriptors.partridgejiang.github.io
- Partly: Molecular formula confirmed; molecular mass calculation unverified. Opens the cited page.Formula and massMolecular formula confirmed; molecular mass calculation unverified.partridgejiang.github.io
- Not establishedProperty estimates
- No: No name conversion control found in hosted editor. Opens the cited page.Name to structureNo name conversion control found in hosted editor.
- No: No naming command found in hosted editor. Opens the cited page.Structure to nameNo naming command found in hosted editor.
- Not establishedNMR prediction
- Yes, according to the manual: R-group nodes and allowed or disallowed atom lists. Opens the cited page.R-groups and query structuresR-group nodes and allowed or disallowed atom lists.github.com
- Not establishedPolymers and repeat units
- Not establishedPeptides and nucleic acids
- Not establishedImage to structure
- Not establishedOnline structure lookup
- Yes, according to the manual: Rotatable wire, stick, ball-and-stick and space-filling models. Opens the cited page.3D model viewRotatable wire, stick, ball-and-stick and space-filling models.partridgejiang.github.io
- Not establishedCrystal structures
Files and exchange
- No: CDXML absent from load and save format lists. Opens the cited page.CDXML import and exportCDXML absent from load and save format lists.
- Not establishedCDX import and export
- Yes, tested by running it: Imported and saved MOL and SDF. Opens the screenshot.MOL and SDFImported and saved MOL and SDF.github.com
- Partly: SMILES export worked; load dialog lacks SMILES format. Opens the cited page.SMILESSMILES export worked; load dialog lacks SMILES format.github.com
- Yes, according to the manual: Optional InChI library supplies output and InChIKey generation. Opens the cited page.InChIOptional InChI library supplies output and InChIKey generation.github.com
- Yes, according to the manual: Reads and writes RXN2000 and RXN3000. Opens the cited page.RXN filesReads and writes RXN2000 and RXN3000.github.com
- Yes, according to the manual: SVG export through the optional Raphaël rendering bridge. Opens the cited page.SVG exportSVG export through the optional Raphaël rendering bridge.github.com
- No: No PDF option in save dialog. Opens the cited page.PDF exportNo PDF option in save dialog.
- Partly: PNG output exists; 300 dpi export is unverified. Opens the cited page.High-resolution PNGPNG output exists; 300 dpi export is unverified.github.com
- No: Clipboard uses internal local storage; native clipboard unavailable. Opens the cited page.Paste to and from ChemDrawClipboard uses internal local storage; native clipboard unavailable.partridgejiang.github.io
- Not establishedEditable in Word or PowerPoint
- Not establishedWindows Office OLE
APIs and automation
- Not establishedPython API
- Yes, according to the manual: JavaScript API creates, loads and controls the Composer editor. Opens the cited page.JavaScript or TypeScript APIJavaScript API creates, loads and controls the Composer editor.partridgejiang.github.io
- Not establishedCommand-line tool
- Not establishedAI agent control
- Not establishedBuilt-in AI assistant
Embedding and extension
- Yes, according to the manual: Register custom editor interaction controllers through the documented API. Opens the cited page.PluginsRegister custom editor interaction controllers through the documented API.partridgejiang.github.io
- Yes, according to the manual: Load scripts/CSS; instantiate Kekule.Editor.Composer(div), or use <kekule-composer>. Opens the cited page.Embed in your own appLoad scripts/CSS; instantiate Kekule.Editor.Composer(div), or use <kekule-composer>.github.com


