Conway Still life generator by H A Verrill

This program fills shapes with a Conway still life pattern.


If you don't adjust parameters, it typically may take 5 to 20 minutes for the algortithm to terminate on a 40 by 40 grid, but it might take three hours, or not terminate. It's probably best to restart with a different random configuration of life values if a still life takes too long to arrive.
You can either choose a letter, by typing in the input field, or else choose to fill another shape.


scale of mask: 1
Change grid size to

Use your own image mask:
Life threshold values
o o o o Inside mask Outside mask
life increment 0.100000 0.000001
life threshold 0.040 0.700
Life count of cells in grid
Live Intermediate Dead Total
Inside mask
outside mask


This is a kind of Conway game of life, except instead of having cells only alive (value 1) or dead (value 0), we have a range of life values from 0 to 1, increasing in steps of a variable life increment. The cell is considered to be alive if it's life value is greater than or equal to the life threshold. Apart from this, the rules are the same as in the usual Conway game of life.
The point of this is to generate high density still life patterns filling simple shapes. This is possible because the still life configurations are the same independent of the parameters. However, different parameters are more likely to lead to still life configurations. These are not generally maximal density patterns. The density can be worked out from the displayed dot count.


  1. Choose a shape, letter, or image as a mask.
  2. Click the step button to increment life generation, or else click on auto button to auto increase. The program attempts to stop running when a still life is achieved. However, it might make a mistake, and stop when there is still a non still region, so you can click the step incrememnt button to check there is no change left to be made.
  3. Use the sliders to change the parameters life threshold, and life increment. These change the characteristics of the game. I do not allow life threshold 0, since then everything vanishes, because then everything is alive, so in the next generation everything is dead.
    When the parameter is quite low, we tend to stabalise to a high density almost still life situation. When the parameter is high, we tend to stabalise to a low density still life. For intermdiate parameter, the life is less stable. By varying the parameters, we can generally end up with a stable still life position eventually.
    Set all parameters to 1 for the traditional Conway life game.
  4. Description of colours in default colour choice: By using green and magenta, it makes it easier to see when still life is achieved: this is when the picture becomes monochrome
  5. This still life is a wrap round as on a torus
  6. In this version of the game, I am changing the life value by randomly chosen pixel, one by one, rather than changing the whole screen at once. Changing everything at once needs all computations done at the same time, via another intermediate storage array. This what the usual game of life should use. However, to aim for stability, it seems better to change one at a time.
  7. I have tied the outside mask life threshold value to the closeness of this game to the regular Conway game of life, so actually I take a linear combination of the two, which seems to work better in quickly approching still life.
  8. Images can be downloaded in jpg, svg, latex, or plain text format, though they don't look exactly the same. The dynamic image on this page is produced with WebGL. The image at the bottom is svg output, which just marks life cells as squares. The other images on this page are the jpg downloaded from this program, or another very similar one with red background.
  9. The number of times cells are inspected for possible change is displayed. The average number of actual changes per cell is also displayed, and the total number of milliseconds elapsed since beginning the process is shown. These numbers are given after the "restart" button.
  10. When the shape is mostly filled with still life regions, sometimes a small area can have a peristant local minimum configuration that persists for a long time. In order to move from the local mimimum to a better solution, when there are less than 3 % cells in an indeterminant state (neither value 0 nor 1), I make the life threshold value in the mask 0.7 for a duration of 0.025 seconds, then it is reset to 0.05, where it will remain for at least 10 seconds.
    These values can be changed with these sliders:
    The time until the first triggering of this event (short period of increased life threshold) will appear after the "colour choice" selector, followed by the number of times this event is triggered.
  11. In order to reduce the amount of CPU used, the screen is updated less frequently when N>50. Whether or not the CPU usage is a problem will depend on your device. On my laptop, it's best not to have N>100
  12. You can upload your own image to use as a mask shape. The image should be black and white, since intermediate shades will just be interpreted as black or white, possibly not in the way expected.


Effect of different grid size

These are all versions of the letter B, created with the same mask, but ending up with different versions of B because of the different grid size used. Circle image is example of the svg output produced. "LIFE" is written as just dot form still life, and then with a texture put on the underlying pattern. The "colour choice" drop down menu gives a few options for different colourings. Some other examples of possible textures are here.

Some different interpretations of the same still life result. This took about 20 minutes to produce, 115785000 cell considerations, average of 150 changes per cell. Circle on 100x100 grid.