Javascript 2D Perlin & Simplex noise functions
Pull request Compare This branch is 12 commits ahead, 6 commits behind josephg:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bower.json Support Common.js and AMD modules Dec 14, 2013
demo.html Adding to NPM Nov 6, 2013
demo3d.html Adding to NPM Nov 6, 2013
index.js Support Common.js and AMD modules Dec 14, 2013
package.json Support Common.js and AMD modules Dec 14, 2013

This a fork of josephg/noisejs which enables generating noise values from several seeds at the same time, by providing an instance-based API (instead of the original functional one).


This is a simple library for 2d & 3d perlin noise and simplex noise in javascript. Noise is pretty.

The library is pretty fast (10M queries / sec). But its still way slower than using a shader. For example, if you try and update an entire screen's worth of pixels, it'll be slow.

The code is based on Stefan Gustavson's implementation. Do whatever you want with it, etc.

How to make noise

// value passed into the constructor is used as a seed
var noise = new Noise(Math.random());

for (var x = 0; x < canvas.width; x++) {
  for (var y = 0; y < canvas.height; y++) {
    // noise.simplex2 and noise.perlin2 return values between -1 and 1.
    var value = noise.simplex2(x / 100, y / 100);

    image[x][y].r = Math.abs(value) * 256; // Or whatever. Open demo.html to see it used with canvas.

The library exposes a constructor function called Noise with the following instance methods:

  • simplex2(x, y): 2D Simplex noise function
  • simplex3(x, y, z): 3D Simplex noise function
  • perlin2(x, y): 2D Perlin noise function
  • perlin3(x, y, z): 3D Perlin noise function
  • seed(val): Seed the noise functions. Only 65536 different seeds are supported. Use a float between 0 and 1 or an integer from 1 to 65536.


npm install noisejs


bower install noisejs

Node.js, Require.js (AMD) and Common.js supported: var Noise = require('noisejs');

Otherwise a Noise global is created.