
Product
Introducing Reports: An Extensible Reporting Framework for Socket Data
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.
simplex-noise
Advanced tools
simplex-noise is a fast simplex noise implementation in Javascript. Works in node and in the browser.
simplex-noise.js is a simplex noise implementation in Javascript/TypeScript. It works in the browser and Node.js, using CommonJS and ES Modules. It is self-contained (dependency-free), relatively small (about 2k minified and gzipped) and fairly fast (about 20 nanoseconds for a sample of 2d noise) and tree shakeable.
Created something awesome with simplex-noise? Let me know so I can add it to the list.
npm i -S simplex-noise
// import the noise functions you need
import { createNoise2D } from 'simplex-noise';
// import the noise functions you need
const { createNoise2D } = require('simplex-noise');
// initialize the noise function
const noise2D = createNoise2D();
// returns a value between -1 and 1
console.log(noise2D(x, y));
const noise3D = createNoise3D();
console.log(noise3D(x, y, z));
const noise4D = createNoise4D();
console.log(noise4D(x, y, z, w));
By default simplex-noise.js will use Math.random() to seed the noise. You can pass in a PRNG function to use your own seed value.
# install the alea prng
npm install -S alea
import alea from 'alea';
// create a new random function based on the seed
const prng = alea('seed');
// use the seeded random function to initialize the noise function
const noise2D = createNoise2D(prng);
console.log(noise2D(x, y));
The ALEA PRNG used in the example above can be found in the alea npm package.
simplex-noise.js is reasonably quick.
According to perf/index.js I can perform about 70 million noise2D() calls/second on a single thread on my desktop (Ryzen 5950X).
$ node perf/index.js
noise2D: 72,916,215 ops/sec ±1%
noise3D: 47,855,199 ops/sec ±0%
noise4D: 35,564,111 ops/sec ±0%
// 3.x
import SimplexNoise from 'simplex-noise';
const simplex = new SimplexNoise();
const value2d = simplex.noise2D(x, y);
// 4.x
// import the functions you need
import { createNoise2D } from 'simplex-noise';
const noise2D = createNoise2D();
const value2d = noise2D(x, y);
// 3.x
import SimplexNoise from 'simplex-noise';
const simplex = new SimplexNoise('seed');
const value2d = simplex.noise2D(x, y);
// 4.x
// npm install -S alea
import { createNoise2D } from 'simplex-noise';
import alea from 'alea';
const noise2D = createNoise2D(alea('seed'));
const value2d = noise2D(x, y);
// IMPORTANT: If you use multiple noise functions (for example 2d and 3d)
// and want compatible output with 3.x you will need to pass a fresh instance
// of alea to each create call. If you reuse the alea instance you will
// get different outputs compared to simplex-noise 3.x.
const seed = 'seed';
const noise2D = createNoise2D(alea(seed));
const noise3D = createNoise3D(alea(seed));
const simplex = {
noise2D: createNoise2D(alea(seed)),
noise3D: createNoise3D(alea(seed)),
noise4D: createNoise4D(alea(seed)),
};
createNoise4D to be NoiseFunction4D.
Contributed by satelllte.:warning: This release changes the API and the output of the noise functions. :warning:
:warning: This release changes the output of the noise functions. :warning:
In the future such changes will be released as a new major version.
Copyright (c) 2022 Jonas Wagner, licensed under the MIT License (enclosed)
This is mostly a direct javascript port of the Java implementation by Stefan Gustavson and Peter Eastman.
The initial typescript definition has been provided by Neonit.
FAQs
simplex-noise is a fast simplex noise implementation in Javascript. Works in node and in the browser.
The npm package simplex-noise receives a total of 224,351 weekly downloads. As such, simplex-noise popularity was classified as popular.
We found that simplex-noise demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.