Fast, typo-tolerant open-source search engine with built-in vector and semantic search
An open-source, typo-tolerant search engine that returns instant results and ships with vector and semantic search built in.
Teams pick it as a self-hostable Algolia alternative that is far simpler to operate than Elasticsearch.
| Category | Search |
| First released | 2018 |
| Latest release | 30.2 (Apr 2026) |
| License | GPL-3.0 |
| Written in | C++ |
| Runs on | Linux, Macos |
| Deployment | Self-hosted, Managed |
| Wire protocol | http |
| Query dialect | typesense-query |
| Consistency | eventual |
| ACID support | no |
| JSON support | native |
| Full-text search | native |
| Vector support | native |
| HA model | raft |
| Managed by | typesense-cloud |
Typesense is an open-source search engine built for one job: returning relevant, typo-tolerant results fast enough to update on every keystroke. You load your data as JSON documents into collections, define a schema, and query over HTTP. Out of the box it handles typo correction, prefix search, faceting, filtering, and synonyms, and more recently vector and semantic search, so a single engine covers both keyword and AI-style retrieval.
The idea started in 2015 and the first open-source release landed in 2018. Typesense is developed by Typesense Inc., a company co-founded by Kishore Nallan and Jason Bosco. It is written in C++ and licensed under GPL-3.0, with a hosted option, Typesense Cloud, that runs the same open-source core. The pitch has stayed consistent from the start: an open-source alternative to Algolia and an easier-to-run alternative to Elasticsearch, without the operational weight either one carries.
Adoption skews toward product teams that want great search without running a search team. Typesense Cloud serves billions of searches a month, and self-hosted clusters power search for companies like Logitech, Codecademy, Lonely Planet, and the livestreaming platform Kick. The appeal is the combination of strong defaults, a small operational footprint, and pricing that stays flat as query volume grows.
Typesense keeps its entire index in memory, which is the root of both its speed and its main constraint. Documents are still written to disk for durability, but every query is served from RAM, so latency stays in the single-digit milliseconds even as results re-rank on each keystroke. The tradeoff is that your dataset, plus indexing overhead, has to fit in the memory of the cluster.
A query runs through tokenization, typo-tolerant matching, filtering, faceting, and ranking in a single pass. Ranking combines a text-match score with a required default_sorting_field and any extra sort fields you define. Because everything is in memory, Typesense evaluates this over the full candidate set on every request rather than sampling, which is what keeps results stable as you type.
For durability and scale, Typesense runs as a Raft cluster, typically three nodes. The elected leader takes writes and replicates them to followers, which serve reads, and the cluster tolerates a minority of nodes failing. You talk to it through a REST API over HTTP, with official clients for JavaScript, Python, Ruby, PHP, Go, and Java. There is no SQL layer; queries are search parameters, not a query language.
Typesense stores documents in collections, and each collection has an explicit schema that types every field as a string, int, float, bool, geopoint, or vector. Marking a field as a facet or as optional happens there too. Defining fields up front lets Typesense build compact in-memory indexes and validate documents on write.
Typo tolerance is on by default, a big part of why search feels forgiving. Typesense matches a query to documents within one or two character edits, so a search for smaphone still finds smartphone with no configuration. You control how many typos are allowed per query length, and exact matches always rank above the corrected ones.
Ranking blends a text-match score with fields you pick. A required default_sorting_field, usually a popularity or recency number, breaks ties, and you can layer sort fields on top. Because the index lives in memory, Typesense scores the candidate set on every keystroke rather than sampling, and still returns in a few milliseconds.
Beyond keywords, Typesense stores float vectors and runs approximate nearest-neighbor search with HNSW. It can generate embeddings through built-in models or accept vectors you supply. Hybrid search runs the keyword and vector queries together and merges the rankings, the common setup for semantic and AI retrieval.
Facets turn a field into counted buckets, the category and brand filters you see down the side of a store. Typesense computes those counts and applies filter_by expressions in the same request as the search, so refining results never costs a second round trip. Numeric, boolean, string, and geo fields can all be faceted or filtered.
In production Typesense runs as a Raft cluster of an odd number of nodes, usually three. One node is elected leader and takes writes, the others replicate and serve reads, and the cluster keeps working if a minority fails. Each node holds the full dataset in memory, so you scale reads by adding nodes rather than by sharding the data.
Live GitHub adoption, updated daily
A handful of the companies running it in production
The core use case: search boxes that update on every keystroke. Typo tolerance, prefix matching, and in-memory speed give you Algolia-style instant results running on your own infrastructure.
Faceted product discovery with filters for brand, price, and category, each showing live counts. Typesense computes the facets and the results in one request, which keeps large catalogs responsive.
Retrieval for RAG and recommendation, where meaning matters more than exact words. Built-in embeddings and hybrid ranking let you combine keyword and vector search without a separate vector store.
Teams leaving Algolia to cut per-search costs or keep data in house. The API and the InstantSearch adapter are close enough that most migrations are a reindex and a config change, not a rewrite.
Typesense indexes data that lives somewhere else. With no transactions or relational joins, your system of record should stay in Postgres or similar, with documents synced into Typesense for search.
It answers search queries, not analytical ones. For group-bys, rollups, and column scans over billions of rows, an engine like ClickHouse or DuckDB is a much better fit for that work than a search index.
Logs at massive volume suit Elasticsearch or OpenSearch, which spill to disk across many shards. Typesense keeps its indexes in RAM, so log-scale retention gets expensive faster than it is worth.
Because the index is held in memory, your data plus overhead has to fit in the cluster's RAM. Very large corpora that will not fit there economically are a poor match for the in-memory design.
Head-to-head specs against the top 5 alternatives
| Spec | ||||||
|---|---|---|---|---|---|---|
| Identity | ||||||
| License | GPL-3.0 | Elastic-2.0 | Proprietary | Apache-2.0 | MIT / BUSL-1.1 (dual-licensed; Enterprise Edition components under BUSL-1.1) | Apache-2.0 |
| First released | 2018 | 2010 | 2012 | 2021 | 2018 | 2004 |
| Capabilities | ||||||
| Full-text | Native | Native | Native | Native | Native | Native |
| Vector | Native | Native | Native | Native | Native | Native |
| Hybrid search | Native | Native | Native | Native | Native | Native |
| HA model | Raft | Primary-standby | Multi-master | Primary-standby | Primary-standby | Primary-standby |
| Ecosystem | ||||||
| Managed providers | 1 | 3 | 1 | 3 | 1 | 2 |
| Integrations | 5 | 6 | 6 | 7 | 3 | 5 |
| Use cases | ||||||
| Best for | Instant search experiences with typo tolerance, semantic/hybrid search, developer-friendly search | Full-text search, log analytics, observability, security analytics, and real-time data exploration at scale | Instant site search, e-commerce product discovery, and AI-powered search experiences with typo tolerance | Full-text search, log analytics, observability, and security analytics at scale | Instant site search, typo-tolerant autocomplete, e-commerce product search, and AI-powered semantic retrieval | Enterprise full-text search, faceted navigation, e-commerce search, and large-scale document retrieval |
| Not ideal for | General-purpose database needs, complex analytics, or log aggregation at massive scale | Primary data storage for transactional workloads, strong-consistency requirements, or simple key-value use cases | Primary data storage, complex relational queries, or log analytics | OLTP workloads, strong consistency requirements, or relational data modeling | Complex relational queries, transactional workloads, or primary data storage | Primary data storage, transactional workloads, or simple key-value use cases |
Run Typesense with Docker, create a collection, add a document, and run your first search. A couple of minutes end to end.
docker run -p 8108:8108 -v /tmp/typesense-data:/data \
typesense/typesense:30.2 \
--data-dir /data --api-key=xyz --enable-corscurl http://localhost:8108/collections \
-X POST -H 'X-TYPESENSE-API-KEY: xyz' \
-H 'Content-Type: application/json' \
-d '{
"name": "books",
"fields": [
{ "name": "title", "type": "string" },
{ "name": "rating", "type": "float" }
],
"default_sorting_field": "rating"
}'curl http://localhost:8108/collections/books/documents \
-X POST -H 'X-TYPESENSE-API-KEY: xyz' \
-H 'Content-Type: application/json' \
-d '{ "title": "The Pragmatic Programmer", "rating": 4.8 }'curl 'http://localhost:8108/collections/books/documents/search?q=pragmatik&query_by=title' \
-H 'X-TYPESENSE-API-KEY: xyz'The misspelled query still finds the book. From here, point an official client at the same endpoint, or browse and manage collections visually in a GUI.
Lightning-fast, typo-tolerant search engine with AI-powered hybrid search
The world's most advanced open-source relational database
The most popular document database for modern applications
High-performance open-source vector database for next-generation AI applications
Fast in-process analytical database with rich SQL support and zero dependencies
In-process SQL database compatible with SQLite, written in Rust with vector search and CDC support
Connect to Typesense in 30 seconds. Browse tables, run queries, and edit rows visually, on localhost, self-hosted, or cloud.
Open Typesense in 1bench