Getting Started

Installation

npm install fuse.js
yarn add fuse.js

Importing

ES Module:

import Fuse from 'fuse.js'

CommonJS:

const Fuse = require('fuse.js')

CDN

<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.3.0"></script>

ES Module via CDN:

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

Also available on unpkgopen in new window.

Deno

// @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

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 search + extended search + token search~8 kB
BasicFuzzy search only~6.5 kB

Import paths:

// 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():

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

Fuse.use(ExtendedSearch)
Last Updated: