The Fisher-Yates (aka Knuth) shuffle for Node.js, with seeding support

Usage no npm install needed!

<script type="module">
  import knuthShuffleSeeded from '';



npm Build Status Dependencies devDependencies Code Coverage

The Fisher-Yates (aka Knuth) shuffle for the browser and Node.js, with seeds support using seed-random.

This project is initially forked from coolaj86/knuth-shuffle, but is extended so that it is possible to specify a seed to use in the shuffling, to ensure test reproducability.

Online demo:

Getting Started



npm install knuth-shuffle-seeded

The Browser

Put browser.js into your directory for JavaScripts. Then take a look at index.html.

You can also visit the page at


shuffle(inputArray[, seed])

See example.js for more examples.

Why not contribute to the original repo?

I have considered that, but the introduction of an npm dependency makes it necessary to use Browserify to generate a browser-compatible JavaScript file, which is too far away from the simple approach of knuth-shuffle.


  • AJ O'Neal (@coolaj86) -- initial author
  • Timothy Gu (@TimothyGu) -- seeding support


Copyright 2013 AJ O'Neal

Copyright 2015 Tiancheng "Timothy" Gu

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.