Blazing-fast autocomplete and typo-tolerant search for .NET
Autypo is a powerful, developer-friendly search engine for autocomplete, fuzzy matching, and short-string lookups. Whether you're building a product search bar, form helper, or CLI β Autypo makes it effortless to deliver typo-tolerant, fast, and intelligent user experiences.
- Getting Started
 - Installation
 - Features
 - Limitations
 - Perfect For
 - Learning Resources
 - Samples
 - Benchmarks
 - Project Structure
 - Support and Feedback
 - License
 
Autypo works out-of-the-box β no config required. Just provide your data and start getting intelligent completions.
using Autypo;
using Autypo.Configuration;
string[] movies = [
    "The Lord of the Rings: The Return of the King",
    "Star Wars: Return of the Jedi",
    "Batman Returns"
];
IAutypoComplete autypoComplete = await AutypoFactory.CreateCompleteAsync(config => config
    .WithDataSource(movies));
IEnumerable<string> suggestions = autypoComplete.Complete("retur of the");
// β "Star Wars: Return of the Jedi", "The Lord of the Rings: The Return of the King"
suggestions = autypoComplete.Complete("bamman rets");
// β "Batman Returns"No tokenization setup. No fuzzy matching config. Just smart results.
For real-world apps, Autypo integrates seamlessly with ASP.NET Core and supports background indexing, multi-field search, and dependency-injected data sources.
using Autypo;
using Autypo.AspNetCore;
using Autypo.Configuration;
builder.Services.AddScoped<ProductsLoader>();
builder.Services.AddAutypoSearch<Product>(config => config
    .WithDataSource(serviceProvider => serviceProvider.GetRequiredService<ProductsLoader>())
    .WithBackgroundLoading(UninitializedBehavior.ReturnEmpty)
    .WithIndex(product => product.Name, index => index
        .WithAdditionalKeys(product => [product.Description]) // Index name + description
        .WithUnorderedTokenOrdering() // Order of words doesn't matter
        .WithPartialTokenMatching() // Partial queries still match
        // ... and many more configuration options!
    ));Define a search endpoint using dependency-injected Autypo:
app.MapGet("/products/search", async (
    [FromQuery] string query,
    [FromServices] IAutypoSearch<Product> search) =>
{
    var results = await search.SearchAsync(query);
    return results.Select(r => r.Value);
});Example Query:
GET /products/search?query=fngerprint usb recogn
Example Result:
[
 {
   "code": "A1067",
   "name": "Fingerprint USB",
   "description": "Secure USB flash drive with fingerprint encryption"
 },
]Autypo is available on NuGet.
For ASP.NET Core integration (includes the core engine):
dotnet add package Autypo.AspNetCoreFor standalone or non-web scenarios (e.g., console apps, background jobs):
dotnet add package AutypoAutypo gives you fast, typo-tolerant search with modern developer ergonomics β zero config to start, but extreme tuning if you need it.
- Typo-tolerant by default β fuzzy, partial, and out-of-order input
 - Token-level matching control (prefix, fuzziness)
 - Opt-in partial matching and out-of-order input
 - Built to rank βreal worldβ input
 - Multi-index support with priority-based short-circuiting
 
- Index multiple fields (e.g. 
name + description) - Plug in custom scorers, filters, and match policies
 - Add tokenizers and analyzers (N-grams, stemming, etc)
 - Per-query tuning for fuzziness, partial match, max results
 
- Blazing-fast in-memory autocomplete via 
IAutypoComplete - Full-featured, multi-index search engine via 
IAutypoSearch<T> - Eager, background, or lazy indexing β your choice
 - Refresh indexes at runtime with 
AutypoRefreshToken - Async-first, thread-safe, allocation-conscious
 
- ASP.NET Core integration with full DI support
 - Blazor Serverβready (ideal for typeahead inputs)
 - Fully .NET-native β no native bindings, no hosted servers
 
β
 Open source & MIT licensed
π‘οΈ Built for scale and safety
π Developer-first design
Autypo is intentionally designed for short-text and autocomplete scenarios β not full-text search.
- Documents are limited to 64 tokens max (e.g., product names, commands, short descriptions)
 - In-memory indexing is fast and efficient, but may not suit massive corpora or multi-megabyte documents
 - Autypo is not intended for long-form text search β for that, consider other tools.
 
This tradeoff is deliberate: it keeps Autypo incredibly fast, predictable, and ideal for UX-critical search.
- E-commerce product & SKU search
 - Admin panel filtering and form helpers
 - Smart command palettes
 - CLI "Did You Mean?" suggestions
 - Blazor autocomplete inputs
 - Live-search over reference data (countries, tags, part numbers)
 - Fuzzy full-text matching over short documents
 
| Guide | Description | 
|---|---|
| ASP.NET Core Integration | End-to-end setup with dependency injection and hosted services | 
| Indexing & Data Loading | Data sources, refresh tokens | 
| Search & Matching | Customize fuzzy logic, token ordering and more | 
| Text Analysis & Tokenization | Configure tokenizers, transformers, and analyzers | 
| Custom Scoring & Filtering | Enrich matches with metadata and business logic | 
| Sample | What it demonstrates | 
|---|---|
| "Did You Mean?" Console Demo | Interactive CLI Helper β Suggests valid commands with fuzzy matching | 
| ASP.NET Core Search API | Product Search β REST API with background indexing and multi-field matching | 
| Blazor City Autocomplete | Real-Time Search UI β Typeahead with typo tolerance and reindexing | 
Autypo competes head-to-head with Lucene and outperforms many .NET libraries for short-string search:
| Library | Multi-Token | Index Time | Search Time | Avg/Search | 
|---|---|---|---|---|
| Autypo | β Yes | 163 ms | 3.34 s | 1.33 ms | 
| Lucene (Fuzzy) | β Yes | 776 ms | 2.91 s | 1.16 ms | 
| Lucene (Suggest) | β No | 1.12 s | 503 ms | 0.20 ms | 
| Levenshtypo* | β No | 25 ms | 312 ms | 0.12 ms | 
| FuzzyWuzzy | β No | 1 ms | 4m 49s | 92.56 ms | 
* Levenshtypo is the fuzzy string search library that powers Autypoβs low-level approximate matching engine. It supports typo-tolerant single-token search using optimized Tries and Levenshtein Automata.
/src
  βββ Autypo/                   # Core library
  βββ Autypo.AspNetCore/        # ASP.NET Core integration
  βββ Autypo.Benchmarks/        # Microbenchmarks
  βββ Autypo.IntegrationTests/
  βββ Autypo.UnitTests/
  βββ Autypo.Aot/               # Ensures that Autypo works in AOT scenarios
  
/samples
  βββ ApiSearchProducts/        # REST API example
  βββ BlazorCities/             # Blazor Server autocomplete
  βββ ConsoleDidYouMean/        # CLI demo
π§  Have a question?
π‘ Got feedback?
π Found a bug?
Open an issue or start a discussion. We'd love to hear from you.
Autypo is released under the MIT License.
Autocomplete + Typo-tolerance = Autypo.
Simple name, serious power.
Built for modern .NET developers.