bin+lib infisearch

A complete and more scalable pre-built index approach to client-side search

12 releases

0.10.0 Dec 30, 2022
0.9.1 Dec 18, 2022
0.8.8 Nov 22, 2022

#2018 in Command line utilities

Download history 159/week @ 2022-11-10 115/week @ 2022-11-17 17/week @ 2022-11-24 14/week @ 2022-12-01 8/week @ 2022-12-08 68/week @ 2022-12-15 16/week @ 2022-12-22 31/week @ 2022-12-29 9/week @ 2023-01-05 12/week @ 2023-01-12 19/week @ 2023-01-19 16/week @ 2023-01-26

56 downloads per month
Used in mdbook-infisearch

MIT license

12K SLoC


CI workflow

Easy and flexible client-side search for static sites.


InfiSearch is a client-side search solution made for static sites, depending on a pre-built index generated by a CLI tool.


  • Relevant Search πŸ”: spelling correction, automatic prefix search, boolean and phrase queries, BM25 scoring, proximity scoring, facet filters and more...
  • Speedy πŸ‡: WebAssembly & WebWorker powered, enabling efficient, non-blocking query processing. Backed by persistent caching to minimize network requests, and a multi-threaded CLI indexer.
  • Semi-Scalable, achieved by optionally splitting the index into tiny morsels, complete with incremental indexing.
  • A customisable, accessible user interface πŸ–₯️
  • Support for multiple file formats (.json,csv,pdf,html) to satisfy more custom data requirements.


The documentation, which uses InfiSearch for its search function, can be found here.


Some demos of InfiSearch on a much larger Gutenberg collection are also available here.

Getting Started

Powering static site search with InfiSearch is extremely easy, and requires just a folder of your HTML files β€” titles, headings, and other text are automatically extracted. Links to your pages are automatically generated based on your folder structure, but can also be manually specified.

1. Installing the indexer

There are a couple of options for installing the indexer:

  • Install the global npm package with npm install -g @infisearch/cli.
  • If you have the rust / cargo toolchains setup, run cargo install infisearch --vers 0.10.0.
  • You can also grab the cli binaries here.

2. Running the indexer

Run the executable as such, replacing <source-folder-path> with the relative or absolute folder path of your source html files, and <output-folder-path> with your desired index output folder.

infisearch <source-folder-path> <output-folder-path>

3. Installing the Search UI via CDN

Add the following resources to your pages:

<!--  Search UI script -->
<script src="https://cdn.jsdelivr.net/gh/ang-zeyu/infisearch@v0.10.0/packages/search-ui/dist/search-ui.ascii.bundle.js"></script>
<!-- Search UI css, this provides some basic styling for the search dropdown, and can be omitted if desired -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/ang-zeyu/infisearch@v0.10.0/packages/search-ui/dist/search-ui-light.css" />

If you wish to host the files, you can find them in the <output-folder-path>/assets directory generated by the indexer, or in the releases page.

4. UI Initialisation

Give any <input> element in your page an id of infi-search, then call:

  searcherOptions: {
    // Output folder URL specified as the second parameter in the cli command
    // URLs like '/output/' will work as well
    url: 'http://<your-domain>/output/',
  uiOptions: {
    // Input folder URL specified as the first parameter in the cli command
    // This is where the generated result preview links will point to,
    // and where you host your site.
    sourceFilesUrl: 'http://<your-domain>/source/',


This project is MIT licensed.


~466K SLoC