From XYZ Coordinates to a Metal Complex You Can Teach With

Paste the coordinates of a transition-metal complex and ChemIllusion proposes the bonding, the ligand charges, and the metal's oxidation state, with dative-bond SMILES you can copy. It is free, needs no account, and never sends your structure to an AI model. Built on the open-source xyz2mol_tm method from Jan Jensen's group.

The new Metal complex from XYZ tool in the Generator turns coordinate files into teachable bonding pictures:

  • paste or upload an .xyz file and set the total charge;
  • get the metal's proposed oxidation state, each ligand with its charge, and dative-bond SMILES you can copy;
  • run free without an account, with deterministic chemistry (no AI on your coordinates).

Why metal complexes are difficult

Organic structures come with a bonding convention that every toolkit understands. Metal complexes do not. Is the Pt–Cl bond covalent or is chloride donating a lone pair to Pt2+? Is ammonia neutral and chloride negative, or the reverse? Does each cyclopentadienyl ring in ferrocene count as one ligand with one negative charge, or as five separate carbon contacts? A distance cutoff finds neighbors, but it cannot answer those questions.

The method behind this tool answers them by splitting the complex into its ligands, using an extended-Hückel calculation to decide how each ligand is charged and bonded, and then writing the result as a SMILES string in which the metal–ligand bonds are dative arrows. The oxidation state follows from the ligand charges and the overall charge of the complex.

Try it

Open chemillusion.com/generator?tool=tmc. The dialog has three ways in: a menu of fourteen common examples, an upload button for your own .xyz file, and a text box where you can paste coordinates. The total charge is required, because the geometry alone cannot tell the tool whether it is looking at [Fe(CN)6]4− or [Fe(CN)6]3−.

The Metal complex from XYZ dialog in the Generator, with a common-example menu, a file upload, a coordinates box, and a total charge field
The Metal complex from XYZ dialog. Pick a common example, upload a file, or paste coordinates, then enter the total charge.

The menu lists fourteen common examples, including cisplatin, ferrocene, Fe(CO)5, Cr(CO)6, [Co(NH3)6]3+, and the two hexacyanoferrates. Two of them stand in for bigger molecules with the same coordination core: PH3 replaces PPh3 in the palladium and rhodium examples.

What you get back

Press Interpret metal coordination and the result panel shows:

  • the metal and its proposed oxidation state, and the coordination number;
  • each ligand as a SMILES string with its charge;
  • the whole complex as dative-bond SMILES (a line notation for structure, with -> marking dative bonds to the metal), with a Copy SMILES button;
  • an independent electron-count cross-check of the oxidation state, so you can see when two methods agree;

Two badges are always on the panel, because they are the honest summary: inferred bonding and geometry: as supplied. The bonding is a proposal. The coordinates are yours, and nothing is re-embedded or optimized.

Result panel for cisplatin showing Pt(+2), coordination number 4, dative SMILES, four ligands, an electron-count cross-check, and a warning about halide charges
Cisplatin from the common examples menu: Pt(+2), coordination number 4, SMILES N->[Pt+2](<-N)(<-[Cl-])<-[Cl-], and an electron count that agrees on +2.

You can then render the coordinates you supplied as a 3D model with Preview 3D, put that render on the canvas, copy the SMILES, or download the whole result as a JSON bundle. In a notebook, an .xyz attachment gets an Interpret metal coordination action that saves the bundle next to the file.

Three worked examples

Cisplatin, cis-[PtCl2(NH3)2]. Two chloride anions and two neutral ammonia ligands on a neutral complex means Pt(+2), with four dative bonds in a square plane.

3D render of cisplatin with platinum at the center, two chlorines and two ammonia ligands
Cisplatin (the 3D preview of the coordinates as supplied).
3D render of ferrocene: an iron atom between two eclipsed cyclopentadienyl rings
Ferrocene, eclipsed (D5h).
3D render of RhCl(PH3)3 with rhodium at the center of a square plane of one chlorine and three phosphines
RhCl(PH₃)₃, a model for Wilkinson's catalyst.

Ferrocene, Fe(η5-C5H5)2. The Greek letter η (eta) counts how many atoms of a ligand bind to the metal; η5 means all five ring carbons. The tool reads each ring as one cyclopentadienyl anion, so the iron comes out as Fe(+2) with coordination number 10 (five contacts per ring). That number is correct for a distance count and misleading for a chemist who says “six-coordinate”, which is why the panel warns that a number above six means a haptic ligand set.

Result panel for ferrocene showing Fe(+2), coordination number 10, two cyclopentadienyl anion ligands and a haptic-ligand warning
Ferrocene: two cyclopentadienyl anions, Fe(+2), and a warning that the coordination number reflects haptic ligands.

RhCl(PH3)3. A trimmed-down Wilkinson's catalyst. One chloride, three neutral phosphines, and a neutral complex give Rh(+1) with four-coordinate square planar geometry, which is exactly the starting point for the oxidative-addition step students meet in the catalytic cycle.

The library underneath

The chemistry in this tool is built from xyz2mol_tm, an open-source (MIT) package from Jan H. Jensen's group at the University of Copenhagen, described in:

Rasmussen, M. H.; Strandgaard, M.; Seumer, J.; Hemmingsen, L. K.; Frei, A.; Balcells, D.; Jensen, J. H. “SMILES all around: structure to SMILES conversion for transition metal complexes.” Journal of Cheminformatics 2025, 17, 63. doi:10.1186/s13321-025-01008-1

Across our fourteen common examples the result was identical on two RDKit versions. If you use this tool in teaching materials or a publication, please cite the paper above, and treat the oxidation state as a proposal that you confirm against the chemistry you know.

Ready to try it? Open Metal complex from XYZ in the Generator.