Extensions_
Install and manage PostgreSQL extensions like PostGIS, pgvector, and pg_trgm on your database, at no extra cost.
2 min read
PostgreSQL exposes a rich extension ecosystem: PostGIS for geospatial data, pgvector for embeddings, pg_trgm for fuzzy search, and more. Native PostgreSQL databases on Appwrite support extensions at no extra cost.
You manage extensions from the Console under your database's Settings > Extensions, or programmatically with a Server SDK and an API key with the databases.write scope. You cannot manage extensions from client SDKs. Extensions change the database itself, so only trusted callers can manage them.

Install an extension
Pass the extension name as it appears in the extension catalog. The install runs asynchronously: the request returns immediately and a worker runs CREATE EXTENSION inside the database, typically within a few seconds. The database must be in the ready state.
Requesting an extension that is not available fails with an error listing the supported extension names.
List extensions
Lists the extensions installed on the database and the extensions available to install:
The response contains two arrays of extension names:
{ "installed": ["plpgsql", "vector"], "available": ["postgis", "pg_trgm", "pgcrypto", "hstore", "citext", "..."]}The available list is reported by the engine for your PostgreSQL version, so it always reflects what can actually be installed on your database.
Remove an extension
If there are objects that depend on the extension (tables, indexes, columns), the drop fails. Drop the dependents first, or run DROP EXTENSION ... CASCADE yourself through SQL to acknowledge what gets removed.
Common extensions
A few extensions worth knowing about:
| Name | Use case |
|---|---|
vector | Vector data type and similarity search for embeddings (pgvector) |
postgis | Spatial data types, indexes, and functions for geographic objects |
pg_trgm | Trigram matching for fuzzy string search and similarity |
pgcrypto | Cryptographic functions for hashing and encryption |
uuid-ossp | Generate universally unique identifiers (UUIDs) |
hstore | Store sets of key/value pairs within a single column |
citext | Case-insensitive character string data type |
ltree | Represent and query hierarchical tree-like data |
List the extensions on your database for the full catalog available to it.
Limits
| Limit | Value |
|---|---|
| Maximum extensions per database | 50 |
| Extension install and uninstall | Free |
Extensions are installed at their default version for your database's PostgreSQL major version.
Was this page helpful?
Share what worked or what we should fix. Once approved, our agents automatically apply suggested updates to the docs.