Release Statistics

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*Build duration*
1.5.0350.44 KB23.12 KB1.125 MB1.92 ms.230.06 ms.
1.4.2354.76 KB21.88 KB1.125 MB1.96 ms.233.54 ms.
1.4.1354.76 KB21.88 KB1.125 MB1.97 ms.244.69 ms.
1.4.0316.39 KB21.88 KB1.125 MB2.28 ms.162.77 ms.

See more

Benchmarks run on an AWS EC2 t4.medium instance running Ubuntu 20.04, initiated from the scripts/ script.



New Features

  • Timestamp formatting for SRT files is now functional, and the documentation, which previously referenced unimplemented features, is now accurate. (Thanks for the bug report, @selamhabibi!)
  • The x SVG is now horizontally centered within the button. (Thanks @kkwteh!)


Project Update

I'm still hard at work on 2.0.0! The new version's key feature will be sharded search indexes, but implementing this has meant that I rethink the data format of the serialized index to support loading single chunks at a time while keeping the search interface snappy. Maintaining Stork's speed and resource size while redesigning the data format has proven difficult.

In personal news, I got engaged to be married over the holidays, which while exciting, has meant I have less time to work on Stork than I hoped. I'm still around and looking at the repo every day (despite the slowed progress of releases) and hope to get a 2.0.0 RC into your hands before the end of March.

The RC will be published to Github for all to try, but please let me know if you are particularly interested in poking at it! I'm happy to help walk anyone through the changes.



New Features

  • Adds the Javascript registration option transformResultUrl, which, when set, transforms search result URLs from what's described in the search index to what gets output in the DOM. (Thanks, @ArsenArsen!)
  • Setting output.excerpts_per_result to 0 in your configuration file will now enable index serialization optimizations that can reduce your index filesize by 20-50%. Note that this will make all excerpts disappear from the search UI.

Bug Fixes

  • Fixes a bug where multiple instances of the element described in the exclude_html_selector configuration option were not being correctly excluded. (Thanks, @ezekg!)
  • Fixes a crash when trying to parse noncompliant Markdown contents (Thanks, @userJY!)
  • Fixes a bug when highlighting search results where highlights wouldn't surround an entire word. (Thanks, @kdheepak!)


  • Internal dependency updates


Bug Fixes

  • Fixes a regression where the test server (stork test) was inaccessible
  • Fixes a regression where error messages weren't displayed if no files could successfully be indexed
  • Themes now compensate for border radius when displaying progress bar (Thanks @jmooring!)


Bug Fixes

  • Fixes a regression that prevented the Stork CLI from reading index configuration from stdin
  • Fixes an architectural decision that prevented Stork from being published to


Important Changes

  • Starting with 1.4.0, the JS, CSS, and WASM files at the root of the CDN will no longer be updated. From this release going forward, you will need to change your <script> tags and <link rel="stylesheet"> tags to upgrade to a new version of Stork. See this Github announcement for more details.

New Features

  • Configuration files can now be in JSON format, in addition to TOML format
  • The web library now takes the number of occurrences in each file into account when ordering search results.
  • CLI: The --json flag for the search subcommand is now deprecated, as it did nothing in previous versions of Stork.
  • CLI: A new command line option for the search subcommand, --format <VALUE>, now determines how search results will be displayed in the terminal. The default value is json, which will display the search results in the JSON format understood by the browser module. A new value, pretty, will format the search results in a readable, understandable way. In the 2.0.0 Stork release, pretty will be the default value for this flag.
  • Two new CSS themes, edible and edible-dark, have been added. See for examples and instructions on how to integrate them into your project.

Bug Fixes

  • Removes a stray console.log from the Javascript application
  • Fixes a Javascript runtime bug where registered indexes weren't always reporting as ready
  • Fixes a crash when the indexed contents contained words longer than 128 characters
  • The --timings flag previously did nothing. Now, when included with the build or search subcommands, timing information will be displayed at the end of the terminal output via stderr.
  • Document titles that were comprised of several words separated by hyphens would crash the search interface. This has been fixed.


New Features

  • Indexes alt and title attributes on HTML elements
  • Adds configuration keys to set an HTML selector as excluded from indexing
  • Adds a configuration key, output.save_nearest_html_id, that, when set to true, will index the nearest HTML IDs for each word. The web interface will link to that ID; clicking on that search result will jump to the text's location on the page.
  • Reduces JS and WASM artifact sizes by changing build system settings
  • Updates CSS themes, and adds a new theme: flat

Bug Fixes

  • Fixes a bug where users were able to accidentally download two instances of Stork's WASM on the page (Thanks @justinmayer!)
  • Fixes a bug where the indexer was hanging in environments where stdin was not passed in as an empty stream (Thanks @Aethon!)


  • Updates dependencies


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

© 2019–2023. Stork is maintained by James Little, who's really excited that you're checking it out.

This site is open source. Please file a bug or open a PR if you see something confusing or incorrect.

Logo art by Bruno Monts, with special thanks to the team. Please contact James Little before using the logo for anything.