whatisgithub

What is minisearch?

lucaong/minisearch — explained in plain English

Analysis updated 2026-06-26

5,950TypeScriptAudience · developerComplexity · 2/5Setup · easy

In one sentence

MiniSearch is a tiny JavaScript library that adds instant full-text search to any web app or server without an external service, the entire index lives in memory for real-time, as-you-type results.

Mindmap

mindmap
  root((MiniSearch))
    Search types
      Exact match
      Prefix match
      Fuzzy match
    Features
      Field boosting
      Auto-suggest
      Live add and remove
    Where it runs
      Browser
      Node.js
    Install
      npm or yarn
      CDN script tag
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add a real-time search-as-you-type feature to a documentation site or blog without a backend search service

USE CASE 2

Build an autocomplete input that returns ranked completion suggestions as the user types

USE CASE 3

Search a JSON dataset in a browser app without sending data to any server

USE CASE 4

Add full-text search with fuzzy matching and typo tolerance to a Node.js application

What is it built with?

TypeScriptJavaScriptNode.js

How does it compare?

lucaong/minisearchgooglechrome/rendertronmicrosoft/tsyringe
Stars5,9505,9515,947
LanguageTypeScriptTypeScriptTypeScript
Setup difficultyeasymoderatemoderate
Complexity2/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

Index must fit in browser or server RAM, not suited for datasets too large to hold in memory.

So what is it?

MiniSearch is a JavaScript library that adds full-text search to a web application or Node.js server without needing any external search service. It stores the entire search index in memory, which means searches happen instantly and the app does not need to send requests to a separate server to get results. This makes it well suited for real-time "search as you type" features where speed matters. The library works by taking a set of documents you provide, indexing the fields you care about (such as a title or a body of text), and then letting you run searches against those documents. Search results are ranked by relevance. It supports several types of search: exact word matching, prefix matching (so a partial word like "moto" matches "motorcycle"), and fuzzy matching (which tolerates small spelling mistakes). You can also boost certain fields so that a match in the title counts more than a match in the body text, and filter results by any property on your documents. There is also an auto-suggestion feature: give it a partial query and it returns ranked completion suggestions, which is the backbone of a search-as-you-type autocomplete input. Documents can be added or removed from the index at any time without rebuilding it from scratch. The library has no external dependencies and is small in size, which is important for browser use where download size affects page load time. It can be installed via npm or yarn, or loaded directly in a browser via a script tag from a CDN. MiniSearch is a code library, not a standalone application, so it is intended for developers building web apps or server-side applications that need search functionality over a dataset that fits in memory. It is not a replacement for large-scale search infrastructure, it is designed for collections that are small enough to keep in RAM on a single machine or in a browser tab.

Copy-paste prompts

Prompt 1
Show me how to use MiniSearch to index an array of blog posts by title and body, then run a fuzzy search that tolerates typos and boosts title matches over body matches
Prompt 2
Build a search-as-you-type React component using MiniSearch that searches 500 products by name and description
Prompt 3
How do I add and remove individual documents from a MiniSearch index at runtime without rebuilding the full index?
Prompt 4
Set up MiniSearch autocomplete that returns ranked prefix-match suggestions as the user types partial words
Prompt 5
How do I serialize a MiniSearch index to JSON and restore it later so I avoid re-indexing on every page load?

Frequently asked questions

What is minisearch?

MiniSearch is a tiny JavaScript library that adds instant full-text search to any web app or server without an external service, the entire index lives in memory for real-time, as-you-type results.

What language is minisearch written in?

Mainly TypeScript. The stack also includes TypeScript, JavaScript, Node.js.

How hard is minisearch to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is minisearch for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.