Deterministic. Orthonym names structures with the Orthonym engine, which is rule-based: no neural network, no sampling. The same structure always gets the same name.
Checked. Every name is handed to OPSIN, which never saw your structure, and parsed back. The two structures are compared by full InChIKey, and the result is shown next to the name.
Honest. The verdict lands on one of five tiers, drawn as a mark under the name wherever it appears. The shape of the mark carries the tier and the colour only agrees, so the five stay five in greyscale and for every common colour deficiency.
Real results from the Translate page: one molecule for every state a result can be in.
Explain takes a name apart and lights the atoms each part describes. A part it cannot place is left unlit, never guessed.
It says so, and declines rather than guess. The card then offers Report SMILES on GitHub, which opens a new issue here with the SMILES, the engine's reason and the settings already filled in. The label names what leaves the page, and the privacy policy says exactly what the link carries.
| Page | What it does |
|---|---|
| Translate | Paste SMILES, upload .sdf, .mol or .csv, or draw in Ketcher. Up to ten molecules answer at once; more run as a job with progress, a tally by tier and a CSV. |
| Name → Structure | The reverse, on OPSIN: a name in, a structure out. |
| Explain | A name taken apart; each part it can place is mapped onto its atoms, and the rest are marked, never guessed. |
| About | How a name is built and checked, and a live board of the service's health. |
Built on the Orthonym engine · OPSIN 2.9.0 · RDKit · CDK 2.12 · Ketcher · FastAPI · Celery · Redis · React 19
docker compose up -d --build # redis, backend, two workers, frontend
open http://localhost:8080Wait for a worker to report a live JVM. Until one does, Orthonym refuses to name anything, on purpose: a name it cannot check is a name it will not serve.
curl -s http://127.0.0.1:8000/api/health
# {"status":"OK","opsin":"available"}Deployment, sizing profiles and the batch-job API are in INSTALL.md.
If you use Orthonym, please cite the paper, a preprint on ChemRxiv:
Rajan, K., Zielesny, A., & Steinbeck, C. (2026). Orthonym: verified IUPAC names for chemical structures in the wild. ChemRxiv. https://doi.org/10.26434/chemrxiv.15009769/v1
@article{rajan2026orthonym,
author = {Rajan, Kohulan and Zielesny, Achim and Steinbeck, Christoph},
title = {Orthonym: verified IUPAC names for chemical structures in the wild},
journal = {ChemRxiv},
year = {2026},
note = {Preprint},
doi = {10.26434/chemrxiv.15009769/v1},
url = {https://doi.org/10.26434/chemrxiv.15009769/v1}
}To cite this web app as software, use its Zenodo DOI, 10.5281/zenodo.23036568. That DOI covers every release and resolves to the latest; each release also has its own DOI, listed on the Zenodo record.
Rajan, K., Zielesny, A., & Steinbeck, C. Orthonym-Web [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.23036568
@software{orthonym_web,
author = {Rajan, Kohulan and Zielesny, Achim and Steinbeck, Christoph},
title = {Orthonym-Web},
publisher = {Zenodo},
doi = {10.5281/zenodo.23036568},
url = {https://doi.org/10.5281/zenodo.23036568}
}GitHub's Cite this repository button, built from CITATION.cff, gives the
paper in APA and BibTeX, and lists the software and the Orthonym engine it builds on.
This repository, Orthonym-Web, is the web app. Its naming engine, the Orthonym engine, lives
in its own repository, Steinbeck-Lab/Orthonym, and
the backend installs it from that repository's main branch. See
the Orthonym engine dependency.
It is not STOUT-V2 in a browser: that neural model is a separate, unrelated project. Nothing here samples, and nothing here is a language model.
MIT, see LICENSE. Bundled third-party components keep their own licences, two of them
under copyleft terms; the running site lists all of them on its Terms page, and
backend/vendor/cdk/NOTICE records CDK's provenance and checksum.


