The beauty of chaos

NextFractal is an application for creating amazing fractal images. The fractal images are generated from M language scripts. The M language is a Domain Specific Language designed for creating Mandelbrot and Julia sets. Moreover NextFractal provides tools for zooming and rotating fractals, browsing images, and exporting images as PNG files.

How to install

NextFractal is free software, available for Mac, Windows and Linux. NextFractal requires Java SDK 8 or later, a computer with multi-core CPU, a modern graphics card, and 1Gb of RAM. Download the software archive for your platform and decompress the archive in your preferred folder. Latest release and source code are available on GitHub.


The M language

The M language is a Domain Specific Language designed to create Mandelbrot and Julia sets. You can define the orbit algorithm and the color algorithm to use for generating the fractal image. You can define multiple color palettes and multiple orbit traps. You can use expressions to activate rules and to compute colors. You can use opacity to compose rules.

Grammar specification

Please read the specification of the M language or download the grammar in PDF format.


The Mandelbrot set

The Mandelbrot set is one of the most fascinating objects which we can encounter in geometry. The discovery of this object in 1979 is attributed to Benoit Mandelbrot who also gives the name to this object. Moreover Benoit Mandelbrot introduced the concept of Fractal Object in geometry and created a new branch named Fractal Geometry.


The Mandelbrot set is defined as the set of points of the complex plane which generate orbits of a not linear system which don't converge to any attractor of that system.

X * X + W

The simplest Mandelbrot set you may create is the set of not linear system x(i) = x(i - 1) * x(i - 1) + w, where x and w are complex numbers, i is a positive integer number, and the initial state is x(0) = 0.

Computer algorithm

In order to represent the Mandelbrot set on the screen of your computer, you have to map the pixels of the screen to the points of the complex plane. For each point (x,y) set w = x + yi and iterate the system equation for i from 0 to n <= N, where |x(n)| > 2 or n = N, and N is the maximun number of iterations. You will generate a sequence of state values like x(0), x(1), x(2), ..., x(n), which represents the orbit of point w. Finally color the pixel with a color derived as function of the state values or iteration n.

M script for Mandelbrot set

The M script for generating the Mandelbrot set is very simple. You can easily identify the region [<-3.0,-1.5>,<0.0,1.5>], the iteration interval [0,200], the loop condition |x| > 2, the system equation x = x * x + w, the background color (1,0,0,0), and the color rule which sets the pixel color to (1,1,1,1) when n > 0:

fractal {
	orbit [<-3.0,-1.5>,<0.0,1.5>] [x,n] {
		loop [0, 200] (|x| > 2) {
			x = x * x + w;
	color [(1,0,0,0)] {
		rule (n > 0) [1.0] {

The script above generates the image below when executed in NextFractal. You may chnage the region and zoom close to the border of the Mandelbrot set to see more details. The more you zoom, the more you find new details and you may find a copy of the whole set.

Learning M language

Please see the examples below if you want to know more about the M language. These examples show you how to use the M language to generate fractals and implement various techniques for computing colors.