Snapshot of krisk/Fuse: 20.4k★, JavaScript, Frontend. Lightweight fuzzy-search, in JavaScript
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Fuse.js is a lightweight, zero-dependency fuzzy-search library written in TypeScript. It works in the browser and on the server, and is designed for searching small-to-medium datasets on the client side where you can't rely on a dedicated search backend.
✨ What's New: Token Search
Multi-word fuzzy search with relevance ranking. Type "javascrpt paterns" and find "JavaScript Patterns" — typo tolerance, multiple words, and smart ranking all at once.
Search large datasets without freezing the UI. FuseWorker splits your data across multiple Web Workers and searches in parallel — ~5x faster on 100K documents.
Same options and results as Fuse — just async. Function-valued options (sortFn, getFn, keys[].getFn) aren't supported because functions can't be transferred to a worker; everything else carries over. See the Web Workers docs for the interactive demo and full API.
Use operators for precise control: exact match (=), prefix (^), suffix (!), and more. Enable with useExtendedSearch: true.
const fuse = new Fuse(list, {
useExtendedSearch: true,
keys: ['title']
})
fuse.search('=exact match') // exact match
fuse.search('^prefix') // starts with
fuse.search('!term') // does not include
Token Search
Splits multi-word queries into individual terms, fuzzy-matches each independently, and ranks results using BM25-style IDF weighting. Enable with useTokenSearch: true.
Typo tolerance per word — each term is fuzzy-matched independently
Relevance ranking — rare terms are weighted higher than common ones
Word order independent — "patterns javascript" and "javascript patterns" return identical results
No query length limit — long multi-word queries work naturally since each term is searched separately
AND or OR — tokenMatch: 'all' returns only records matching every word (filtering); the default 'any' matches any word
Custom tokenizer — pass a regex or function via tokenize for tokens with internal punctuation (node.js, c++), or use Intl.Segmenter for CJK / Thai word segmentation. Unicode-aware by default
Available in the full build. See the Token Search docs for details and performance benchmarks.
Logical Search
Combine conditions with $and and $or for complex queries. Available in the full build.
Get character-level match indices for highlighting search results in your UI.
const fuse = new Fuse(list, {
includeMatches: true,
keys: ['title']
})
const result = fuse.search('javscript')
// result[0].matches[0].indices → [[0, 9]]
Single String Matching
Use Fuse.match() to fuzzy-match a pattern against a single string without creating an index. Useful for one-off comparisons or custom filtering.
const result = Fuse.match('javscript', 'JavaScript: The Good Parts')
// → { isMatch: true, score: 0.04, indices: [[0, 9]] }
Fuse.match() does not support useTokenSearch — token search requires corpus-level statistics (df, fieldCount) that a one-off string comparison can't provide. Passing useTokenSearch: true throws an explicit error. Use new Fuse(docs, { useTokenSearch: true }).search(query) for token-search behavior.
Dynamic Collections
Add and remove documents from a live index without rebuilding.
Use the basic build if you only need fuzzy search and want the smallest bundle size.
Documentation
For the full API reference, configuration options, scoring theory, and interactive demos, visit fusejs.io.
Official ports
fuse-swift: Swift port for iOS, macOS, tvOS, watchOS, visionOS, and Linux. Byte-equivalent results, idiomatic Swift API, syncs with each upstream release. Currently in 2.0.0-rc.1.
Supporting Fuse.js
Become a backer or sponsor on GitHub
Become a backer or sponsor on Patreon
One-time donation via PayPal
Develop
See DEVELOPERS.md for setup, scripts, and project structure.
Contribute
See CONTRIBUTING.md for guidelines on issues and pull requests.
How does krisk/Fuse compare to other Frontend projects?
krisk/Fuse is tracked by TopGit in the Frontend category, with 20.4k GitHub stars and written in JavaScript. Browse the Frontend topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does krisk/Fuse have?
krisk/Fuse has 20.4k GitHub stars — refresh the page for the live number, or check github.com/krisk/Fuse. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is krisk/Fuse open source?
Yes — krisk/Fuse ships under the Apache-2.0 license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/krisk/Fuse.
What else is in the Frontend space?
krisk/Fuse is tracked by TopGit under the Frontend category, alongside 4 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is krisk/Fuse?
krisk/Fuse (krisk/Fuse) is a JavaScript project on GitHub. From the project's own README: Lightweight fuzzy-search, in JavaScript
Where can I see krisk/Fuse in action?
The project maintains a homepage at https://fusejs.io/. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about krisk/Fuse?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/krisk/Fuse is the definitive source.
Read full README in the tab above.
Want a second opinion on Fuse?
Ask an AI that can read this page — one click and you get its take on Fuse.