Skip to content

Getting Started ​

Installation ​

sh
npm install fuse.js
sh
pnpm add fuse.js
sh
yarn add fuse.js
sh
bun add fuse.js

Importing ​

js
import Fuse from 'fuse.js'
js
const Fuse = require('fuse.js')

CDN ​

html
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.5.0"></script>
html
<script type="module">
  import Fuse from 'https://cdn.jsdelivr.net/npm/fuse.js@7.5.0/dist/fuse.mjs'
</script>

Also available on unpkg.

Deno ​

typescript
// @deno-types="https://deno.land/x/fuse@v7.5.0/dist/fuse.d.ts"
import Fuse from 'https://deno.land/x/fuse@v7.5.0/dist/fuse.min.mjs'

Quick Start ​

js
import Fuse from 'fuse.js'

const books = [
  { title: "Old Man's War", author: 'John Scalzi' },
  { title: 'The Lock Artist', author: 'Steve Hamilton' }
]

const fuse = new Fuse(books, {
  keys: ['title', 'author']
})

const results = fuse.search('jon')
// [{ item: { title: "Old Man's War", author: "John Scalzi" }, refIndex: 0 }]

Fuse.js searches the keys you specify and returns results ranked by relevance. A score of 0 is a perfect match; 1 is a complete mismatch.

Builds ​

Fuse.js ships two builds:

BuildIncludesGzip
FullFuzzy + extended + logical + token search~8.6 kB
BasicFuzzy search only~6.8 kB

Import paths:

js
// Full build (default)
import Fuse from 'fuse.js'

// Basic build
import Fuse from 'fuse.js/basic'

// Minified variants
import Fuse from 'fuse.js/min'
import Fuse from 'fuse.js/min-basic'

Build files in dist/:

UMDCommonJSES Module
Fullfuse.jsfuse.cjsfuse.mjs
Basicfuse.basic.jsfuse.basic.cjsfuse.basic.mjs
Full (min)fuse.min.js—fuse.min.mjs
Basic (min)fuse.basic.min.js—fuse.basic.min.mjs

The basic build does not include extended search or token search. If you need those features with the basic build, register them at runtime with Fuse.use():

js
import Fuse from 'fuse.js/basic'
import { ExtendedSearch } from 'fuse.js'

Fuse.use(ExtendedSearch)