Stats for numbers-type people

All file sizes are pre-compression. All files that come from are gzipped; you should compress your search index before serving it.

Versionstork.wasm sizestork.js sizeSearch duration*
1.2.1518.59 KB106.7 KB1.13 MB2.0661 ms.
1.2.0518.52 KB106.7 KB1.13 MB— **
1.1.0487.04 KB106.87 KB1.13 MB2.5441 ms.
1.0.4484.57 KB92.24 KB1.13 MB2.4904 ms.
1.0.3591.97 KB94.75 KB1.11 MB— **

See more

*Why this benchmark? Reproduceability, mostly. This test benchmarks the speed of the search algorithm by itself, rather than in the WASM runtime, removing any non-Stork-algorithm variance that might occur. On my computer, according to in-browser performance tests, the browser repaints with the search results roughly 10ms after the keypress event.

**Benchmarks from 1.0.0 and before were run on my personal computer. Benchmarks from 1.0.4 and afterwards were run on an AWS EC2 server t4.micro instance by running cargo bench; the listed benchmark is for the search::federalist::liberty benchmark. Benchmarks in between 1.0.0 and 1.0.4 were found to have been invalid.



Bug fixes:

  • Fixes issue where [x] button in Basic or Dark themes wouldn't respond to the resizing of the stork-wrapper container (#176)
  • Fixes issue where searching for three characters wouldn't display results on the web page (#172)
  • Fixes crash when the title of a document included non-unicode characters (#173 - thanks @Erwan-le-Gall!)


New Features

  • Stork can now index content from the web. (When the docs are available, a link to the docs will be here!) #146
  • Stork's command line interface has been redesigned and rewritten, with backwards-compatible shims added where needed. #160
    • This change deprecates the filename key in the output configuration.

Quality of Life Improvements

  • If you index a file and get an empty buffer, Stork will let you know there might be a problem. #147
  • Adds debug method to JS interface #161
  • Improves command line output, especially for errors #160
  • Adds a new break_on_file_error configuration option to stop indexing when first file fails, rather than continuing without the erroring file. #160

Bug Fixes


New Features

  • Added self-hosting support. Read the self-hosting documentation to learn more.
  • Added Javascript lifecycle methods to give you control over when the WASM downloads, when the index file is downloaded, and when Stork attaches to the DOM. This will greatly improve the Stork experience when using React-based static site generators, such as Next.js or Gatsby. Read the Advanced JS documentation to learn more.
  • New Javascript API method for searching an index without requiring that you use Stork's UI. If you want to build your own Stork UI from scratch, this is the method for you. The Advanced JS documentation link will help you get started with this, too.
  • New Javascript configurations:
    • onResultsHidden - Callback that gets called when the results are hidden, when the user presses esc or clicks on the close button
    • onInputCleared - Callback that gets called when the input is cleared, when the user presses esc twice
    • showCloseButton - Boolean to determine whether the close button is visible or not
  • Stork can now take in a configuration file that's piped into the $ stork --build command, instead of requiring that you pass in a file path.


Bug Fixes:

  • The html_selector option in the configuration file wasn't being parsed correctly, leading to the feature seemingly not working


  • Better error message when there are no valid files


Bug Fixes:

  • Javascript library was erroring incorrectly if the output HTML element could not be found
  • Javascript library was adding stray elements to the DOM while the index was loading


  • Hyphens are now treated the same as spaces for indexing and searching purposes. In effect, you can now search for avon and it will match the term Stratford-upon-Avon in your index.
  • Stork used to fail the entire indexing process if there was an error parsing a single file. Now, it will collect those errors and present them in the console, but still build an entire index with the remaining files.

Note: Javascript bug fixes get applied automatically if you're loading the Stork library from


Bug Fixes:

  • Fix highlight offsets when excerpt contains multi-byte characters. Requires that you re-build your index. (Thanks for reporting, @DanilaFe!)

Error Improvements:

  • Describe which HTML selector cannot be found when an HTML document fails to index.
  • Collect and display indexing errors instead of failing early (Thanks for suggesting, @fauno!)


Bug fixes:

  • Some browsers wouldn't display results properly if you started typing before the WASM file had loaded (thanks, @reese!)
  • The indexer wouldn't index words past a certain point if the document contained non-word space-delimited tokens. For example, if your document had the contents hello - world, the word world wouldn't be indexed. (Thanks for reporting, @DanilaFe!)
  • Fix a webpack bug that was only encountered on first install

Thanks for using Stork!


Stork 1.0.0 is here, with new features, stability improvements, and lots more speed. The major version bump signifies that Stork is officially out of beta, and that I (James, the developer) believe that it can be "production ready" on your site.

As with any Stork version bump, your Javascript library will automatically update and get you some of the latest changes, and will still work with the index you've already built. To get the full benefit of all the changes in 1.0.0, make sure to update the version of Stork that you're running, then rebuild your index.

Index Generator Updates:

  • Stork can parse HTML and Markdown input files
  • stork --test command will open a local webserver that lets you test a generated index, without having to build it
  • Sped up index generation (Thanks @DenialAdams!)

Javascript Library Updates:

  • Separated index parsing from searching in generated WASM library, which sped up searches (Thanks @DenialAdams!)
  • Javascript library adds a "Powered by Stork" UI
  • Adds event handlers to the Javascript configuration so you can define callbacks when your users search for queries and click on results

Other Improvements:

  • Reworked public interface for those using Stork as a Rust library
  • Added dark.css theme
  • New website documentation


Fixes a bug (#69) in which content wasn't being indexed after an all-punctuation word. Make sure to rebuild your index to see the effects of this fix.


Automatic CSS Improvements:

  • Site styles were overriding Stork's Basic theme. The stylesheet has been updated to be more specific.

Now available:

  • Ubuntu build artifact uploaded to the Github release for easy wget-ing during your static site's build process



  • On cargo install, the downloaded binary was named frontend, not stork. This has been fixed.


Automatic JS improvements

  • Start using Typescript (this accounts for the ballooning in JS filesize)
  • You can now use the keyboard to interact with the search results! Up and down arrows to navigate, enter to select a result, and esc to hide the list of results


Rebuild your index to get:

  • SRT Subtitle support
  • Customizable stemming language
  • Content in titles is now indexed and prioritized in search results
  • Better error messages if search crashes, which it shouldn't.

Automatic JS improvements

  • Initial Javascript bundle size much smaller, and search index filesizes are smaller as well. WASM binary is slightly bigger -- I'm trying to find a balance.

Update the binary for:

  • Improved UX if you provide deprecated configuration fields
  • Improved console output if you run stork --search

Other Fun

  • New site infrastructure


  • WASM: Deprioritizes stop words in search results
  • WASM: Searches for words with the same stem as the query
  • WASM: Improves error messaging for corrupt indexes
  • Indexer: Adds knowledge of word stems to index


  • Rewrite search algorithm to support multi-word search queries, including sensible result ordering and query highlighting.
  • Tweaks basic.css to give results more room


Accidentally ran a bad version bump. There are no code changes from 0.5.1 to 0.5.2.


  • #21 Change .stork-result a selector so colors work
  • #22 Implement scoring and sorting
  • #24 Update dependencies and CI configuration



© 2019–2021

Stork is built and shepherded by James Little, who's really excited that you're checking it out. If you have any questions or comments, feel free to tweet at him or open an issue on Github.

This site is open source. Please file a bug or open a PR if you see something confusing or incorrect. PRs are always welcome!

Logo by Bruno Monts. Please contact James Little before using the Stork logo. Thanks to Bruno and the team for making this logo happen.