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.3.0"></script>
html
<script type="module">
  import Fuse from 'https://cdn.jsdelivr.net/npm/fuse.js@7.3.0/dist/fuse.mjs'
</script>

Also available on unpkg.

Deno

typescript
// @deno-types="https://deno.land/x/fuse@v7.3.0/dist/fuse.d.ts"
import Fuse from 'https://deno.land/x/fuse@v7.3.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.jsfuse.min.mjs
Basic (min)fuse.basic.min.jsfuse.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)