plasmapy.particles.atomic.stable_isotopes(argument: Optional[Union[str, Integral, Particle, CustomParticle]] = None, unstable: bool = False) List[str]

Return a list of all stable isotopes of an element, or if no input is provided, a list of all such isotopes for every element.

  • argument (atom-like) – A string or integer representing an atomic number or element, or a string representing an isotope.

  • unstable (bool) – If set to True, this function will return a list of the unstable isotopes instead of the stable isotopes.


List of all stable isotopes of an element, sorted from low to high mass number. If an element has no stable isotopes, this function returns an empty list.

Return type

list of str



There are 254 isotopes for which no radioactive decay has been observed. It is possible that some isotopes will be discovered to be unstable but with extremely long half-lives. For example, bismuth-209 was recently discovered to have a half-life of about \(1.9 × 10^{19}\) years. However, such isotopes can be regarded as virtually stable for most applications.

See also


Returns a list of isotopes that have been discovered.


Returns isotopes with non-zero isotopic abundances.


>>> stable_isotopes('H')
['H-1', 'D']
>>> stable_isotopes(44)
['Ru-96', 'Ru-98', 'Ru-99', 'Ru-100', 'Ru-101', 'Ru-102', 'Ru-104']
>>> stable_isotopes('beryllium')
>>> stable_isotopes('Pb-209')
['Pb-204', 'Pb-206', 'Pb-207', 'Pb-208']
>>> stable_isotopes(118)

Find unstable isotopes using the unstable keyword.

>>> stable_isotopes('U', unstable=True)[:5]  # only first five
['U-217', 'U-218', 'U-219', 'U-220', 'U-221']