StarGen is the latest version of a series of programs I've worked on off and on over the last thirty years, though none of my code in the current incarnation is more than half that age. It's a program for creating moderately believable planetary systems around stars other than our own. The most recent version runs on Macintosh and Unix machines and produces HTML files as output. The image above is a thumbnail of the sort of thing it produces. Click on it for a page of examples.

StarGen owes a lot to many different precursors written by several authors over the years. It's oldest roots are a couple of papers published 30 or more years ago by Stephen Dole of the Rand corporation. Additional information came from a 1985 paper by Martyn J. Fogg.

Based on these papers Dole and <the Rand employee whose name I've forgotten> created a program called ACRETE, which was originally coded in FORTRAN. Carl Sagan and Richard Isaacson refined the model and published a paper of their own in 1977. Inspired by the Dole and Sagan papers, Martyn Fogg created a microcomputer version of Accrete, still in Fortran, and published a paper in 1985. In 1988, Matthew Burdick, who turned the Accrete model as described by Fogg into a program called "starform". I believe that it was he who incorporated the earlier work of Kothari into the code.

There have been several different versions of starform, with bits and pieces added and modified by others over the years. These include programs by Ian Burrell, C. Burke and Chris Croughton, aka Keris. My own StarGen is based mostly on Burdick's, but has borrowed from the others, most notably Keris's. To be honest, I don't recall what if anything I may have borrowed from the rest.

My own work on Solar System generators started in 1970, when I encountered Asimov's popularization of Dole's book, "Planets for Man". I immediately purchased a copy of the second edition of "Habitable Planets for Man", which had just been published by American Elsevier. In 1971 I created my own random solar system generator in Fortran. During the 70's, I created various versions of this program, all since lost, in FORTRAN, BasicPlus and C. I ran into stargen in the late 80's and started working on various modifications of it, since its simulations were much better than my own.


This section lists a number of differences between StarGen and other similar programs.

HTML Output

The most obvious difference is that StarGen creates HTML pages. It makes a Web page for each planetary system it creates, and if it is asked to create a number of systems, a thumbnails page showing a small table for each system generated.

70 Ophiuchi A
6 Planets (size proportional to Sqrt(Radius))
Sun Rock Rock Terrestrial Ice Jovian Martian See
#3 Terrestrial: Earth-like (N2, O2 - breathable)
The thumbnail tables contain the name of the system (which is a hot link to the system's page), a diagram showing the types and sizes of the planets, and a list of planets whose surface temperature allows water to remain a liquid. An example is shown here to the right, slightly reformatted for use here.

The diagram uses different planet icons for each type of planet. The types are explained on a key page, for which there is a link in the lower right corner of the diagram. Each planet is a hot link to the data for the particular planet on the system's page. (The links in the example thumbnail to the right all take you to a real Thumbnail page.) In some browsers, leaving the cursor on a planet icon for a couple of seconds will cause a small tool tip/balloon help message to appear, giving a few of the statistics for the planet.

Most of the planet icons represent types of planets that exist in the solar system, but there are a couple of types that showed up that don't correspond to any of our planets. These include planets completely covered in water, planets large enough to retain a heavy atmosphere of Hydrogen and Helium, but which are much smaller than the gas giants and thus are nonetheless mostly rock. I call these "gas dwarfs".

The final type is planets where ice covers at least 95% of the surface. These are generally planets that would be terrestrials if they were warmer. Some are so far out they retain Hydrogen, but are so cold their gases freeze. Neither of these exist among Sol's planets, but some of the moons in the outer solar system are similar.

Accreting Gas

foo { }

2.745 Earth masses
2.240 Earth masses dust
0.505 Earth masses gas
0.804 Earth masses
0.645 Earth masses dust
0.159 Earth masses gas
The basic Accrete engine is pretty much untouched, except that StarGen keeps track separately of the amount of dust and gas as well as the total mass. This allows me to better handle planets that are just a smidgen above the critical mass needed to capture and retain gas. Such planets, which generally have types of Gas Dwarf, Ice and occasionally Venusian or Water, have all three masses -- dust, gas and total -- each listed, along with a small diagram to give a notion of atmosphere depth.

The table to the right shows a gas dwarf and an ice world, and shows the difference between them. These are both seen in the 61 Ursae Majoris system number #401 in the examples.

I also had to modify the handling of systems that reach "critical mass", and start to accrete gas as well as dust. The mass isn't an absolute value. It depends upon the amount of solar radiation that reaches the planetesimal. If the gas is very cold, it is easier to retain it. This resulted in some very tiny "gas giants" at the outer edge of some systems. My new code only classifies a planet as a gas giant if its mass is greater than the Earth, it is at least 5% gas and retains He.

The Atmosphere

The greenhouse calculations were changed in a couple of ways. The first is that rather than assuming 'that if the orbital radius of the planet is greater than or equal to the inner bounds of "ecosphere", 99% of it's volatiles have been deposited in surface reservoirs, I calculate an initial surface temperature based on illuminance and then iterate. I tuned this to match the boundaries of the original implementation but was able to remove the use of arbitrary "zones" and boundaries. This is largely aesthetic at the moment, but is part of a plan to phase out the arbitrary boundaries.

I've tuned the amount of the temperature rise created by the greenhouse effect to result in a more accurate temperature for Venus.

In order to determine the surface temperature, and the amount of the surface covered by water, ice and clouds and the albedo of the planet, starform/accrete programs use an iterative model. StarGen's differs in that rather than having each iteration totally recalculate these various values, it averages the new calculation with the previous one. This smooths out some wild oscillations that cause really odd results in systems different from our own.

I've adapted two features from Keris's starform, min/max temperatures and simple atmosphere simulation. Keris's temperature code takes the atmospheric pressure, axial tilt, length of day, and orbital eccentricity into account to determine the average daytime and nighttime temperatures and annual minimum and maximum temperatures from the average temperature calculated by the iterative model.

Keris also has a simple model for calculating which elements are liquids and gases for the temperature and pressure of each planet. It then calculates reasonable abundances of each material. I simplified his model to cover only the major atmospheric gases. The resulting model has very little basis in reality or current science, but produces interesting results.

Habitability and Planet Classification

I have added a fair amount of code to evaluated the habitability of planets and to give a plain English description of its conditions. These descriptions are used both in the thumbnail pages and in the individual planet tables in the page for each system. Each of the phrases added to the description is based on the value of one or more of the attributes of the planet. The following tables list the ranges of these variables associated with each descriptive phrase.

Ranges used various descriptions
< .8 .8 - 1.2 > 1.2
Surface Ice Cover
ice > 10%
Temperature (Earth-relative ° C)
Cold Cool
Warm Hot
< -5° < -2° -2° - 3° > 3° > 7.5°
Cloud Cover
Cloudless Few clouds
< 10% < 40% 40% - 80% > 80%
Surface Water
Arid Dry
< 25% < 50% 50% - 80% > 80%
Atmospheric Pressure
Airless Unbreathably thin
Unbreathably thick
< .001 Atm < .095 Atm
(72 mm Hg)
< 0.5 Atm .5 - 2 Atm > 2.0 Atm > 8 Atm

The definition of "Unbreathably thin atmosphere" and "Unbreathably thick atmosphere" are based on Dole. He gives 72mm of Mercury as the minimal inspired partial pressure of Oxygen. I've therefore used it as an absolute minimum total pressure in the descriptions. He gives 8 atmospheres as the pressure at which turbulence makes it impossible to inhale.

The rest of these labels are arbitrary and I'll happily change them if anyone can suggest better values.

In order to evaluate the breathability of the atmosphere, I took a formula from Dole to calculate the inspired partial pressure for a gas. I used this to compare each of the gases from Keris's model to the maximums and minimums listed in Dole. This allows me to categorize a planet's atmosphere as breathable, unbreathable (too little oxygen) or poisonous.

Nearby Stars

StarGen allows you to create totally fictional solar systems, by supplying the star's mass, or to create systems for a number of known stars. Originally, I included the stars that Dole identified as the nearby stars most likely to have habitable planets. More recently, I have added a similar list taken from the SolStation.Com Web site. You can choose either to do all the stars from either list or a specific star.

Since several of these stars are members of binary systems, I had to add code to limit the planets generated to orbits that could be stable. I based the calculation on Holman & Wiegert's "Long-Term Stability of Planets in Binary Systems" printed in The Astronomical Journal, 117:621-628, January 1999. Using the mass of a star, that of its companion, and the distance between them, I set a maximum outer bounds to the orbits of the generated planets. As Dole points out, there are other stable orbits, but this covers the most likely case to result in a habitable planet.

Interesting Planets

This section lists a number of interesting planets that I've come across while exploring StarGen's output. I've chosen planets and systems that illustrate some of the boundary conditions and reveal something about how the various models work and interact.

Chi Orionis A

Chi1 Orionis A
5 Planets (size proportional to Sqrt(Radius))
Sun Rock Rock Terrestrial Terrestrial Terrestrial See
#3 Terrestrial: Thin atmosphere (N2, O2 - breathable)
#4 Terrestrial: Wet, Thick atmosphere (N2, O2 - breathable)
#5 Terrestrial: Cool (N2, O2 - breathable)

This system is remarkable because so far it is the only system with 3 habitable planets where humans could live on the surface, each a "terrestrial", complete with oceans as well as an atmosphere. It showed up in a run of about one and a half million generated systems. With earlier versions of the software there had been two systems with three breathable atmospheres, but only one of those systems was a terrestrial. The other two were Martians. Like this system it was around Chi1 Orionis A. Recent changes resulted in one of the martians no longer having a breathable atmosphere.

Chi1 Orionis is one of several binary stars in StarGen's lists of nearby stars and the one that most often shows up with multiple habitable plannets. In a couple thousand test runs it had 2 habitable planets twice as often as the next most frequent systems, 47 Ursae Majoris and Kappa Ceti. All three actual stars have certain problems with supporting life, problems that demonstrate some of the limitations of StarGen's models.

Chi1 Orionis A's problem is that it is a binary star system whose companion went nova about 30 million years ago. Before that Chi1 Orionis B was much brighter than it is today and would have had major and highly disruptive effect on the temperatures of any of Chi1 Orionis A's planets. It would also have reduced the area in which stable orbits could exist around Chi1 Orionis A. SolStation has an orbital animation of Chi1 Orionis A on its Web site.

47 Ursae Majoris's problem is that it is believed to have multiple Jovian planets already, one of which is too close to the habitable zone to allow for multiple stable orbits within the zone. Thus, while 47 Ursae Majoris might have 1 habitable planet, 2 is unlikely. SolStation has pictures illustrating these orbits and an orbital animation on its page.

One of the features on my wishlist is to include known and suspected planets in my simulations. Until then, 47 Ursae Majoris will show too many habitable planets.

Kappa Ceti's problem is "super flares". While it is quite possible for Kappa Ceti as we know it to have planets in the habitable zone where StarGen puts them, it is unlikely that they would still be habitable today. The "super flares" would have wiped them out. To quote the SolStation Kappa Ceti page:

According to one recent hypothesis, unusually intense stellar flares from a sun-like ("Sol-type") star could be caused by the interaction of the magnetic field of a giant planet in tight orbit with that star's own magnetic field (Rubenstein and Schaefer, 2000). Some Sol-type stars of spectral class F8 to G8 have been found have been observed to undergo enormous magnetic outbursts to produce "superflares" (coronal mass ejections) that release between 100 and 10 million times more energy than the largest flares ever observed on the sun, making them brighten briefly by up to 20 times. These superflares last from one hour to one week and increase the normal luminosity of a star as much as one thousand times. If our sun were to produce a large superflare, Earth's ozone layer would be destroyed, and ice on the daylight side of moons as far out as those of Jupiter or even Saturn would be melted, producing vast floodplains that refreeze after the flare subsides. No traces of past superflares have been detected in our Solar System.

The sort of very large close planet that might cause these flares is not generated by StarGen, one of the reasons that its model, while producing satisfactory and interesting results, is clearly outdated. Most of the planets actually discovered around other stars are large and close.

Gamma Leporis A 4

Gamma Leporis A
12 Planets (size proportional to Sqrt(Radius))
Sun Rock Rock Rock Terrestrial Jovian Ice See
#4 Terrestrial: High-G, Warm, Cloudy, Thick atmosphere (N2, He, O2 - breathable)

This next planet, Gamma Leporis A 4, is one of the largest habitable worlds generated in a test run that produced over a half million systems. What is interesting about it is that the surface gravity (1.32) is a somewhat lower than the limit Dole gives (about 1.5g) or than is often used in science fiction. In earlier versions of StarGenthe limit was about 1.25g, with very few are higer than 1.15g. Recent tinkering has raised that some, but 1.32 is still rather smaller than we might expect.

There are multiple factors that contribute to this limitation. All are related to the atmospheric models, both the original starform model and the later more detailed model started by Keris.

The Fogg/Burdick model uses formulae based on Dole's original work to determine characteristics such as the atmospheric pressure and the percentage of the surface covered by water. These are determined by the size and surface gravity and the exospheric temperature - the temperature at the top of the atmosphere. Planets of about this size, depending upon the illuminance they get from their sun, end up with thick atmospheres, about 4 times that on earth, and oceans that nearly cover the planet. They are right on the verge of retaining Helium and turning into Gas Dwarves.

Gamma Leporis A 4, Gas Models
Molecular weight retained
4.0 and above
N, O, CH4, NH3, H2O, Ne, N2, CO...
Detailed Model Gases
Nitrogen66.1% 2643 mb(ipp: 2602)
Helium29.3% 1172 mb(ipp: 1153)
Oxygen 4.3% 172 mb(ipp: 169)
Argon 0.3% 13 mb(ipp: 13)

The more detailed atmospheric modelling that Keris introduced tries to calculate which gases are retained and what their rough proportions would be, based on not only the gravity and exospheric temperature, but the age of the planet as well. In the end, this model is way too simplistic given what we believe we know about the history of earth's atmosphere. The Oxygen content of the modern atmosphere is due almost entirely to the presence of life, specifically plant life which turns the CO2 and water (H2O) into sugar (C6H12O6) and O2. In turn, the CO2 levels are as low as they are due to the phenomenon of rain and the creation of oceans. The cycle of water evaporating and raining down seems to have captured vast quantities of CO2 as calcium carbonate (CaCO3) deposited as limestone, dolomites and so on. These cycles are very hard to model and can be very sensitive to small changes.

Human Limits for Inspired Partial Pressures of Gases
(see Dole pp. 15-16)
Gas Millimeters
of Mercury
Min Max Min Max
Oxygen 72 400 96 533
Nitrogen 0 2330 0 3106
0 7 0 9
Totals 72 2737 96 3645

Thus the estimates of CO2 and O2 listed in StarGen's tables should not be taken very seriously. They are just one of many possibilities for an atmosphere of that pressure and age. Still, if Dole is right in his ranges for inspired partial pressures of the major atmospheric gases, atmospheres for planets much larger than this one must contain a large amount of one of the noble gases. The sum of the maximum inspired partial pressures of Nitrogen, Oxygen and Carbon Dioxide is 3645 mb, or about 3.6 atmospheres, and so the remainder of any atmosphere must be made up of other gases such as Argon or Helium.

Again, the figures should not be taken as absolute, but it does seeem plausible that on average the larger planets will have less dry land and more ocean.


Copies of StarGen can be downloaded here in several formats. Pre-compiled executables are available for both the Macintosh and Windows. A source kit is also available, which should work just about anywhere. There are project files for both Code Warrior and Visual C++, and a make file that is known to work with the GNU tools (make and cc) on Mac OS X, Linux and Solaris. If you have to make any changes to the source kit to get it to build on any other system, please let me know and I'll add your changes to the source kit.

Click on the appropriate icon or file name in the table below.

Current StarGen Distribution Kits
File OS Hardware Type Description
Windows Intel Executable Win32 executable and DOS command line executable.

Note: May require "Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)"

Mac OS X PPC Executable Mac command line executable
Any Any Source Mac OS X, Mac, Unix and Windows source kit


Here is a bibliography, as best as I can patch it together of papers and programs from which StarGen directly descends:

StarGen, StarForm, Accrete Bibliography
"The Internal Constitution of the Planets"
D. S. Kothari, Ph.D. , Mon. Not. Roy. Astr. Soc. Vol 96, pp. 833 - 843, 1936
"Habitable Planets for Man"
S. H. Dole, Blaisdell Publishing Company, NY, 1964.
"Q in the Solar System"
P. Goldreich and S. Soter, Icarus, Vol 5, pp. 375 - 389, 1966
"Formation of Planetary Systems by Aggregation: A Computer Simulation"
S. H. Dole, RAND paper no. P-4226, 1969
"Computer Simulation of the Formation of Planetary Systems"
Dole, S. Icarus, vol 13, pp 494-508, 1970.
"Computer Simulation of Planetary Accretion Dynamics: Sensitivity to Initial Conditions"
Isaacman, Richard & Sagan, Carl Icarus, vol 31, p 510, 1977.
"The Evolution of the Atmosphere of the Earth"
Michael H. Hart, Icarus, Vol 33, pp. 23 - 39, 1978
"Extra-Solar Planetary Systems: A Microcomputer Simulation"
Fogg, Martyn J. Journal of the British Interplanetary Society, vol 38, 501-514, 1985.
<the Rand employee whose name I've forgotten>
Matthew Burdick