Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

OpenSimplex Noise

TypeScript implementation of OpenSimplex noise.


import { makeNoise2D } from "open-simplex-noise";
// import { makeNoise2D } from ""

const [width, height] = [888, 222];
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
const imageData = ctx.createImageData(width, height);
const noise2D = makeNoise2D(; // Using current date as seed

for (let x = 0; x < width; x++) {
  for (let y = 0; y < height; y++) {
    const i = (x + y * width) * 4;
    const value = (noise2D(x, y) + 1) * 128;[i] = value;[i + 1] = value;[i + 2] = value;[i + 3] = 255;
ctx.putImageData(imageData, 0, 0);

Example output

Fractal Noise

For fractal noise results, which typically involves scaling frequencies and stacking octaves, see joshforisha/fractal-noise-js (Deno: fractal_noise, NPM: fractal-noise). The functions there can be used with this library's noise algorithm to obtain varied results like the following:

Example fractal noise output


Each noise function returns a float between -1 and 1, exclusive: (-1.0, 1.0).

type Noise2D = (x: number, y: number) => number
type Noise3D = (x: number, y: number, z: number) => number
type Noise4D = (x: number, y: number, z: number, w: number) => number

makeNoise2D (seed: number) => Noise2D

Initializes and returns a function to generate 2D noise.

makeNoise3D (seed: number) => Noise3D

Initializes and returns a function to generate 3D noise.

makeNoise4D (seed: number) => Noise4D

Initializes and returns a function to generate 4D noise.