This website is biased toward ReShiki, because its maintainer also maintains ReShiki. Please be careful.
OpenChemLib JS editor
Embeddable browser editor for drawing molecular structures and reactions using the OpenChemLib chemistry library.
Open source. 27 of 65 checklist features confirmed.
Main canvas
Light and dark browser preferences produce identical appearance.
Default drawings
- Pasted SMILES are automatically laid out in the 2D canvas.
- Default complex drawing displays red stereochemical annotations.
- The demo displays live SMILES and MOL output rather than download buttons.
- MOL outputs matched both input structures in an RDKit round-trip comparison.
- Version comes from research metadata; the demo displayed no version.
- The served OpenChemLib bundle reports version 9.25.2.
Facts
- GitHub stars
- 94 stars on 6 Nov 2026
- First commit
- 26 Aug 2014
- Repository activity
- 840 commits, 15 contributors, last push 3 Nov 2026
- Latest version
- v9.25.2
- Version we tested
- v9.25.2
- Runs on
- Browser
- License
- Permissive BSD 3-Clause license.
- Price
- Free
- Relies on
- OpenChemLib editor, OpenChemLib. JavaScript port copies OpenChemLib's editor source and applies compatibility patches.
- Draws with
- HTML canvas 2D on screen; OpenChemLib SVG rendering for vector output
- Chemistry from
- OpenChemLib
- Interface
- Custom HTML DOM and Web Components with GWT-compiled editor logic
- Main language
- Java
- Other languages
- JavaScript: Canvas editor integration and API wrappers; TypeScript: Shipped API type declarations
- Renderer
- Borrowed: OpenChemLib AbstractDepictor / GenericDepictor
- Third-party licenses
- Includes BSD-3-Clause (OpenChemLib) and Apache-2.0 (GWT runtime).
- Distributed as a developer component; the hosted editor is a demonstration.
- General editor help describes text tools disabled in the public CanvasEditor.
- Chemistry calculations and SVG export require JavaScript API integration.
In use
Screenshots from our test of this version.

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

Wedge, hash and wavy bonds
Solid and hashed wedge bonds in a molecular structure.

Ring tools
A benzene ring with ring tools visible.

Chain tool
A zigzag carbon chain with the chain tool selected.

Charges, isotopes and atom labels
A positively charged carbon on the editor canvas.

Reaction arrows
Reactants and product separated by a forward reaction arrow.

Machine-readable reactions
A reaction alongside reaction SMILES and RXN output.

R/S and E/Z labels
A molecular structure with R and S annotations.

MOL and SDF
A caffeine structure alongside molfile output.

SMILES
A caffeine structure alongside its SMILES output.
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 bond; keyboard changed it to double and triple. Opens the screenshot.Single, double and triple bondsDrew single bond; keyboard changed it to double and triple.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 bonds and quadruple/quintuple bonds involving transition metals. Opens the cited page.Dative, hydrogen and quadruple bondsCoordinate bonds and quadruple/quintuple bonds involving transition metals.github.com
- Not establishedChoose double-bond side
- Yes, tested by running it: Benzene tool drew a ring; several ring tools visible. Opens the screenshot.Ring toolsBenzene tool drew a ring; several ring tools visible.github.com
- Not establishedChair and Haworth rings
- Yes, tested by running it: Dragging chain tool created six carbons. Opens the screenshot.Chain toolDragging chain tool created six carbons.github.com
- No: Typing Ph produced no template; no template library visible. Opens the cited page.Template libraryTyping Ph produced no template; no template library visible.github.com
- Not establishedSave your own templates
- Yes, according to the manual: Typing Ph, Boc and other recognized groups attaches their structures. Opens the cited page.Group abbreviationsTyping Ph, Boc and other recognized groups attaches their structures.github.com
- Yes, according to the manual: Atom tools set elements, charges, isotope masses and custom labels. Opens the cited page.Charges, isotopes and atom labelsAtom tools set elements, charges, isotope masses and custom labels.github.com
- Yes, according to the manual: Hotkeys set single-electron, singlet and triplet radical states. Opens the cited page.Radicals and lone pairsHotkeys set single-electron, singlet and triplet radical states.github.com
- Yes, tested by running it: Keys 2 and 3 changed the hovered bond order. Opens the cited page.Keyboard drawingKeys 2 and 3 changed the hovered bond order.github.com
- Yes, according to the manual: Lasso selection, rotation, resizing and keyboard horizontal/vertical flipping. Opens the cited page.Lasso select and transformsLasso selection, rotation, resizing and keyboard horizontal/vertical flipping.github.com
- Not establishedTilt drawings in perspective
Reactions and mechanisms
- Partly: Loaded example shows forward arrow; other arrow types not visible. Opens the screenshot.Reaction arrowsLoaded example shows forward arrow; other arrow types not visible.github.com
- No: No curved arrow control visible. Opens the cited page.Curved mechanism arrowsNo curved arrow control visible.
- Yes, tested by running it: Loaded example outputs reaction SMILES and RXN. Opens the screenshot.Machine-readable reactionsLoaded example outputs reaction SMILES and RXN.cheminfo.github.io
- Yes, according to the manual: Drag between corresponding atoms; nearby atoms are mapped automatically. Opens the cited page.Atom mappingDrag between corresponding atoms; nearby atoms are mapped automatically.github.com
- Not establishedOrbitals and symbols
Figures and layout
- Not establishedRich text captions
- Not establishedShapes, brackets and curves
- Not establishedAlign and distribute
- Not establishedGroup and ungroup
- Yes, according to the manual: Cleanup regenerates 2D coordinates and can preserve unselected fragment orientation. Opens the cited page.2D structure cleanupCleanup regenerates 2D coordinates and can preserve unselected fragment orientation.github.com
- Not establishedJournal drawing styles
- Not establishedReusable custom styles
- Yes, according to the manual: Individual atom colors can be set through the JavaScript API. Opens the cited page.Color controlIndividual atom colors can be set through the JavaScript API.cheminfo.github.io
- Yes, according to the manual: API supports colored bond backgrounds in structure depictions. Opens the cited page.Color highlightingAPI supports colored bond backgrounds in structure depictions.cheminfo.github.io
- Not establishedPage layout and multipage
- Not establishedImported pictures
- Not establishedTLC plates and tables
Chemistry intelligence
- Yes, according to the manual: API validation throws errors for excessive valence and unbalanced charge. Opens the cited page.Structure checkingAPI validation throws errors for excessive valence and unbalanced charge.github.com
- Yes, tested by running it: Pasted complex structure displayed R and S annotations. Opens the screenshot.R/S and E/Z labelsPasted complex structure displayed R and S annotations.cheminfo.github.io
- Yes, according to the manual: API returns molecular formula, exact mass and molecular weight. Opens the cited page.Formula and massAPI returns molecular formula, exact mass and molecular weight.cheminfo.github.io
- Yes, according to the manual: API computes logP and polar surface area. Opens the cited page.Property estimatesAPI computes logP and polar surface area.cheminfo.github.io
- No: No chemical name input visible. Opens the cited page.Name to structureNo chemical name input visible.
- No: No name generation control visible. Opens the cited page.Structure to nameNo name generation control visible.
- Not establishedNMR prediction
- Yes, according to the manual: Fragment mode supports atom lists through query-feature dialogs. Opens the cited page.R-groups and query structuresFragment mode supports atom lists through query-feature dialogs.github.com
- Not establishedPolymers and repeat units
- Not establishedPeptides and nucleic acids
- Not establishedImage to structure
- Not establishedOnline structure lookup
- No: No 3D model view control visible. Opens the cited page.3D model viewNo 3D model view control visible.
- Not establishedCrystal structures
Files and exchange
- No: No CDXML import or export control visible. Opens the cited page.CDXML import and exportNo CDXML import or export control visible.
- Not establishedCDX import and export
- Partly: Pasted MOL text and copied MOL output; SDF untested. Opens the screenshot.MOL and SDFPasted MOL text and copied MOL output; SDF untested.cheminfo.github.io
- Yes, tested by running it: Pasted SMILES and copied generated SMILES. Opens the screenshot.SMILESPasted SMILES and copied generated SMILES.cheminfo.github.io
- Not establishedInChI
- Yes, according to the manual: API reads and writes RXN V2000 and V3000. Opens the cited page.RXN filesAPI reads and writes RXN V2000 and V3000.cheminfo.github.io
- Yes, according to the manual: API returns vector SVG at specified dimensions. Opens the cited page.SVG exportAPI returns vector SVG at specified dimensions.cheminfo.github.io
- No: No PDF export control visible. Opens the cited page.PDF exportNo PDF export control visible.
- No: No PNG export control visible. Opens the cited page.High-resolution PNGNo PNG export control visible.
- Not establishedPaste to and from ChemDraw
- Not establishedEditable in Word or PowerPoint
- Not establishedWindows Office OLE
APIs and automation
- Not establishedPython API
- Yes, according to the manual: Typed JavaScript API controls molecules, reactions and editor events. Opens the cited page.JavaScript or TypeScript APITyped JavaScript API controls molecules, reactions and editor events.cheminfo.github.io
- Not establishedCommand-line tool
- Not establishedAI agent control
- Not establishedBuilt-in AI assistant
Embedding and extension
- Not establishedPlugins
- Yes, according to the manual: Instantiate CanvasEditor(element), or registerCustomElement() and add <openchemlib-editor>. Opens the cited page.Embed in your own appInstantiate CanvasEditor(element), or registerCustomElement() and add <openchemlib-editor>.cheminfo.github.io


