Let's say I have a compound L-xylulose 1-phosphate and I want to know its correct InChI, how to do this? The reason I ask is because when I go to different databases I get different results:




NIKKAJI; link taken from KEGG:






So, ChEBI and NIKKAJI do show the same chemical formula but different InChI expressions, while NIKKAJI and ModelSeed differ regarding their chemical formula but have the same InChI (which seems wrong, as ModelSeed's InChI suggests that it also als 11 Hs). But this would still not explain the differences for the first two...

That all looks quite fishy to me; how can I now decide which of the databases show me the correct information? Is it possible that one gets the same InChI for compounds that differ in their chemical formula (I thought this wouldn't be possible)?


1 Answer 1


One of the goals of the InChI project was to ensure uniqueness: [1]

Strict uniqueness of identifier

The same label always means the same substance, and the same substance always receives the same label (under the same labelling conditions). This is achieved through a well-defined procedure of obtaining canonical numbering of atoms.

Whilst this is often the case for InChI strings, there are some (complex) examples where the above goal has not been met, for example in the natural product Spongistatin (below) where two isomers incidentally have the same InChI key: [2]

enter image description here


Although InChI can sometimes break (as per above) most of the issues with InChI strings are with implementation (how the structure is parsed to the thing generating the string in the first place). Several (common) features are at present un-supported by the InChI implementation:

  • Polymers
  • Complex organometallics
  • Markush structures
  • Mixtures
  • Conformers
  • Excited state and spin isomers
  • Local stereochemistry/chirality
  • Topological isomers
  • Cluster molecules
  • Polymorphs
  • Unspecific isotopic enrichment
  • Reactions

Generation of InChI strings

InChI is, by nature, an algorithm designed to be ran by a computer. Whilst strings can be parsed by humans (with ennough effort), the complexity of the strings is such that it is challenging to ensure they're correct. The InChI FAQ specifically deals with this:

You should not do so (though you of course can). This may give apparently reasonable answers but it is error-prone and may break relations in the InChI.

The most recent implementation of InChI is provided by the InChI trust, open source and free of charge.[3]

As alluded to above, a common source of InChI errors is the way in which the structure of interest is passed to the algorithm rather than with a fundamental flaw with the process used to generate it. Sh*t in, sh*t out, so to speak.

To give a concrete example, consider the heterocyclic system below:

enter image description here

enter image description here

Clearly, the two tautomeric forms cannot be distinguished chemically, but depending on how the InChI string is generated, they may end up having the same or different strings. In this case, we need to specify to the InChI algorithm whether we want to fix the hydrogens (to show a single tautomer, each of which would have a unique InChI string), or not fix them (such that both tautomers have the same InChI string)


The real question you're possibly interested in isn't How to determine the correct InChI for a certain compound?, but rather How to validate an InChI string for a certain compound?.

Given the complexity of the InChI strings, this is a challenging thing, and to my knowledge there is no tool which allows a string to be provided and says whether it is valid or not (similarly you can't provide a proposed IUPAC name to any tool which will say whether it is the IUPAC preferred name).

One thing you can do is use the InChI string to generate a structure (ChemDraw does this). Using your strings from the question, it's evident that they actually refer to different forms of the molecule (cyclic vs acyclic, just imagine the terminal primary alcohol attacking the ketone).

enter image description here

Chemically, it may be that the cyclic and acyclic forms are in equilibrium- in this case there is no way for InChI to represent the mixture (and hence which structure used to generate the string is ambiguous). It could also be that they are separable chemically and not interconverting, in which case quite rightly they should have different InChI strings.

[1]: Journal of Cheminformatics, 2015, 7, 23

[2]: http://www-jmg.ch.cam.ac.uk/data/inchi/ Accessed 3-Sept-2017

[3]: http://www.inchi-trust.org/about-the-inchi-standard/ Accessed 3-Sept-2017

  • 1
    $\begingroup$ Thanks a lot for this detailed reply, that helped already. Could you comment on the example from above (ChEBI and NIKKAJI). I still fail to understand why their InChIs are different. Did they maybe use different tools to generate them? $\endgroup$
    – Cleb
    Sep 3, 2017 at 23:17
  • 1
    $\begingroup$ They have different InChI strings because they represent different structures. I have no idea how those respective websites generated the strings, so can't comment further (sorry!) $\endgroup$
    – NotEvans.
    Sep 3, 2017 at 23:27
  • 2
    $\begingroup$ Ok, then I guess that's as far as we can get here :) Thanks once more for the detailed explanation. $\endgroup$
    – Cleb
    Sep 4, 2017 at 13:36
  • 3
    $\begingroup$ It's worth pointing out that InChIs and InChIKeys are different things (though related). In the spongistatin example, while they have the same InChiKey, the InChI strings themselves are different. While designed such that collisions are rare, absolute uniqueness was not a design goal for InChiKeys. (Or in other words, your first quote is about InChI proper, not InChiKeys, so the spongistatin example is not strictly a counterexample.) $\endgroup$
    – R.M.
    Sep 18, 2017 at 18:47
  • $\begingroup$ Related: Structure that breaks InChI $\endgroup$ Sep 25, 2017 at 6:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.