66+ PostgreSQL Extensions on Azure Database for PostgreSQL — Flexible Server

Azure Database for PostgreSQL — Flexible Server is Microsoft's managed Postgres, with pgvector, postgis and Azure's own pg_diskann vector index plus the azure_ai integration — enable each one by adding it to the azure.extensions allow-list, then running CREATE EXTENSION.

Last reviewed: May 29, 2026
66
Supported extensions
1
Pre-enabled
4
Vendor-specific
Not supported
Custom extensions
66 extensions
1
timescaledb
22.7k+235 30d

Enables scalable inserts and complex queries for time-series data

Time-series & Temporal·TSL·C
2
pgvector
21.5k+511 30d

vector data type and ivfflat and hnsw access methods

Vector & AI·PostgreSQL·C
3
age
4.6k+92 30d

AGE graph database extension

Database Features·Apache-2.0·C
4
pg_cron
3.8k+30 30d

Job scheduler for PostgreSQL

Time-series & Temporal·PostgreSQL·C
5
pg_duckdb
3.1k+58 30d

DuckDB Embedded in Postgres

Analytics & Columnar·MIT·C++
6
pg_partman
2.7k+30 30d

Extension to manage partitioned tables by time or ID

Analytics & Columnar·PostgreSQL·C
7
pg_repack
2.2k+13 30d

Reorganize tables in PostgreSQL databases with minimal locks

Administration·BSD-3-Clause·C
8
plv8
2.0k+3 30d

PL/JavaScript (v8) trusted procedural language

Procedural Languages·PostgreSQL·C++
9
hypopg
1.7k+11 30d

Hypothetical indexes for PostgreSQL

Database Features·PostgreSQL·C
10
pgaudit
1.6k+17 30d

provides auditing functionality

Security & Audit·PostgreSQL·C
11
wal2json
1.5k+3 30d

Changing data capture in JSON format

Replication & ETL·BSD-3-Clause·C
12
pg_ivm
1.4k+11 30d

incremental view maintenance on PostgreSQL

Database Features·PostgreSQL·C
13
pgrouting
1.4k+11 30d

pgRouting Extension

Geospatial·GPL-2.0·C++
14
pglogical
1.2k+6 30d

PostgreSQL Logical Replication

Replication & ETL·PostgreSQL·C
15
postgresql-hll
1.2k+4 30d

type for storing hyperloglog data

Database Features·Apache-2.0·C++
16
pg_hint_plan
900+9 30d

Give PostgreSQL ability to manually force some decisions in execution plans.

Database Features·BSD-3-Clause·C
17
pg_squeeze
669+4 30d

A tool to remove unused space from a relation.

Administration·BSD-2-Clause·C
18
oracle_fdw
541+2 30d

foreign data wrapper for Oracle access

Foreign Data Wrappers·PostgreSQL·C
19
orafce
5350 30d

Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS

Compatibility (Oracle/MSSQL)·BSD 0-Clause·C
20
tds_fdw
426+1 30d

Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server)

Foreign Data Wrappers·PostgreSQL·C
21

type for top-n JSONB

Functions·AGPL-3.0·C
22
ip4r
166+1 30d

IPv4/v6 and IPv4/v6 range index type for PostgreSQL

Data Types·PostgreSQL·C
23

Provides functions to query, convert, and extract fields from Protocol Buffer columns stored in PostgreSQL.

Functions·MIT·C++
24

PG Failover Slots extension

Replication & ETL·PostgreSQL·C
25
tdigest
970 30d

Provides tdigest aggregate function.

Functions·PostgreSQL·C
26
credcheck
81+2 30d

credcheck - postgresql plain text credential checker

Security & Audit·PostgreSQL·C
27
login_hook
330 30d

login_hook - hook to execute login_hook.login() at login time

Security & Audit·GPL-3.0·C
28

Registration and manipulation of session variables and constants

Compatibility (Oracle/MSSQL)·GPL-3.0·C
29

functions for verifying relation integrity

Administration·PostgreSQL·C
30

Provides a means for logging execution plans of slow statements automatically

Monitoring & Stats·PostgreSQL·C
31

bloom access method - signature file based index

Database Features·PostgreSQL·C
32

support for indexing common datatypes in GIN

Functions·PostgreSQL·C
33

support for indexing common datatypes in GiST

Functions·PostgreSQL·C
34

data type for case-insensitive character strings

Data Types·PostgreSQL·C
35

data type for multidimensional cubes

Data Types·PostgreSQL·C
36

connect to other PostgreSQL databases from within a database

Foreign Data Wrappers·PostgreSQL·C
37

text search dictionary template for integers

Functions·PostgreSQL·C
38

text search dictionary template for extended synonym processing

Functions·PostgreSQL·C
39

calculate great-circle distances on the surface of the Earth

Geospatial·PostgreSQL·C
40

determine similarities and distance between strings

Full-text Search·PostgreSQL·C
41

data type for storing sets of (key, value) pairs

Data Types·PostgreSQL·C
42

integer aggregator and enumerator (obsolete)

Functions·PostgreSQL·C
43

functions, operators, and index support for 1-D arrays of integers

Functions·PostgreSQL·C
44

data types for international product numbering standards

Data Types·PostgreSQL·C
45

Large Object maintenance

Administration·PostgreSQL·C
46

data type for hierarchical tree-like structures

Data Types·PostgreSQL·C
47

inspect the contents of database pages at a low level

Monitoring & Stats·PostgreSQL·C
48

examine the shared buffer cache

Monitoring & Stats·PostgreSQL·C
49

examine the free space map (FSM)

Monitoring & Stats·PostgreSQL·C
50

prewarm relation data

Administration·PostgreSQL·C
51

track planning and execution statistics of all SQL statements executed

Monitoring & Stats·PostgreSQL·C
52

text similarity measurement and index searching based on trigrams

Full-text Search·PostgreSQL·C
53

examine the visibility map (VM) and page-level visibility info

Monitoring & Stats·PostgreSQL·C
54

cryptographic functions

Security & Audit·PostgreSQL·C
55

show row-level locking information

Monitoring & Stats·PostgreSQL·C
56

show tuple-level statistics

Monitoring & Stats·PostgreSQL·C
57
Pre-enabled

PL/pgSQL procedural language

Procedural Languages·PostgreSQL·C
58

PostGIS geometry and geography spatial types and functions

Geospatial·GPL-2.0·C
59

foreign-data wrapper for remote PostgreSQL servers

Foreign Data Wrappers·PostgreSQL·C
60

information about SSL certificates

Monitoring & Stats·PostgreSQL·C
61

functions that manipulate whole tables, including crosstab

Analytics & Columnar·PostgreSQL·C
62

temporal tables

Time-series & Temporal·BSD-2-Clause·C
63

TABLESAMPLE method which accepts number of rows as a limit

Functions·PostgreSQL·C
64

TABLESAMPLE method which accepts time in milliseconds as a limit

Functions·PostgreSQL·C
65

text search dictionary that removes accents

Functions·PostgreSQL·C
66

generate universally unique identifiers (UUIDs)

Functions·PostgreSQL·C

How to enable extensions on Azure Database for PostgreSQL

Azure gates extensions behind an allow-list. Before CREATE EXTENSION will succeed, the extension must be added to the azure.extensions server parameter. Preload extensions (pg_cron, pgaudit, timescaledb, pg_partman, and others) additionally need to be listed in shared_preload_libraries, which is a static parameter that requires a server restart.

Dashboard

  1. Open your server in the Azure Portal and go to Settings → Server parameters
  2. Search for azure.extensions, add the extension(s) to the value (comma-separated), and click Save
  3. If the extension requires preloading, also edit shared_preload_libraries, add the extension, Save, and restart the server when prompted
  4. Connect to the database and run CREATE EXTENSION to install it

SQL

Run from psql or any client once the extension is allow-listed (and preloaded + restarted, if required).

-- Enable pgvector (after adding 'vector' to azure.extensions)
CREATE EXTENSION IF NOT EXISTS vector;

-- Verify it's installed
SELECT extname, extversion FROM pg_extension WHERE extname = 'vector';

CLI

Use the Azure CLI to set the allow-list and, for preload extensions, shared_preload_libraries followed by a restart.

# Allow-list the extension(s)
az postgres flexible-server parameter set \
  --resource-group <rg> --server-name <server> \
  --name azure.extensions --value vector,postgis

# For preload extensions (e.g. pg_cron, timescaledb), also set
# shared_preload_libraries — a static parameter — then restart
az postgres flexible-server parameter set \
  --resource-group <rg> --server-name <server> \
  --name shared_preload_libraries --value pg_cron,timescaledb

az postgres flexible-server restart \
  --resource-group <rg> --name <server>

# Then connect and run: CREATE EXTENSION <name>;

Pre-enabled on Azure Database for PostgreSQL — Flexible Server

These extensions ship enabled by default — no CREATE EXTENSION needed.

Azure Database for PostgreSQL — Flexible Server-specific extensions

Proprietary extensions that exist only on Azure Database for PostgreSQL — Flexible Server, not part of the open-source PostgreSQL ecosystem.

azure_ai

Call Azure OpenAI and Azure AI Services directly from SQL — generate embeddings, run completions, and invoke language/vision models inside the database.

Docs
azure_storage

Read from and write to Azure Blob Storage from SQL, so you can import/export data between Postgres tables and blob containers without an external pipeline.

Docs
pg_diskann

Microsoft's DiskANN-based approximate-nearest-neighbor vector index, an alternative to HNSW/IVFFlat for high-recall similarity search at scale (PostgreSQL 14+).

Docs
azure_local_ai

Generate text embeddings locally inside the database using a model that runs on the server, avoiding round-trips to an external AI endpoint.

Docs

Notable absences

Extensions you might expect that aren't available on Azure Database for PostgreSQL — Flexible Server, with workarounds where they exist.

citus

Why missing: citus is not a user-installable extension on Flexible Server's by-engine list. Horizontal scale-out is delivered as a separate product feature — Elastic clusters (the managed evolution of the Hyperscale/Citus offering) — rather than something you enable on a single Flexible Server.

Alternative: For distributed, sharded Postgres on Azure, provision an Elastic cluster instead of a single Flexible Server; the Citus engine is built in there.

pg_failover_slots

Why missing: pg_failover_slots is supported on older engines but is not available on PostgreSQL 18 or 17 on Flexible Server, so the newest majors can't use it to preserve logical replication slots across a failover.

Alternative: On PG 17/18, rely on Flexible Server's high-availability failover (which fails over physical replication) and recreate logical slots after a failover, or pin a project to PG 16 or earlier if slot survival is a hard requirement.

Can you install custom extensions on Azure Database for PostgreSQL — Flexible Server?

No — managed allow-list only

Flexible Server is allow-list only. An extension can be enabled only if Azure has it on the platform's supported list and you have added it to the azure.extensions server parameter. There is no mechanism to install arbitrary or custom-compiled C extensions, upload your own binaries, or load shared libraries outside the platform-approved set — only the extensions Microsoft lists for your engine version can be created.

Learn more

Frequently Asked Questions

How do I enable an extension on Azure Database for PostgreSQL Flexible Server?
First add the extension to the azure.extensions server parameter (Portal: Settings → Server parameters, or `az postgres flexible-server parameter set --name azure.extensions --value vector,postgis`). If the extension requires preloading, also add it to shared_preload_libraries and restart the server. Then connect and run `CREATE EXTENSION IF NOT EXISTS <name>;`.
What is the azure.extensions parameter?
azure.extensions is the server parameter that holds Azure's per-server allow-list of extensions. An extension cannot be created until it appears in this comma-separated list, even if Azure supports it for your engine. It's a dynamic parameter, so changing it doesn't require a restart — but preload extensions you add here still need shared_preload_libraries set, which does require a restart.
Does Azure PostgreSQL support pgvector and timescaledb?
Yes to both. pgvector (`CREATE EXTENSION vector`) is supported across the current majors, and Azure also offers its own DiskANN vector index via pg_diskann on PG 14+. timescaledb is supported (the 2.x series on PG 15-18); it's a preload extension, so add it to both azure.extensions and shared_preload_libraries and restart before CREATE EXTENSION.
Does Azure PostgreSQL Flexible Server support citus?
Not as a user extension on a single Flexible Server. Citus-style distributed, sharded Postgres is delivered through the separate Elastic clusters product, which has the Citus engine built in. If you need horizontal scale-out, provision an Elastic cluster rather than trying to CREATE EXTENSION citus on a Flexible Server.
Can I install custom extensions on Azure PostgreSQL Flexible Server?
No. Flexible Server is allow-list only — you can enable an extension solely if Microsoft supports it for your engine and you've added it to azure.extensions. There is no way to upload custom-compiled C extensions or load arbitrary shared libraries; if you need an extension that isn't listed, the options are to request it from Azure or self-host PostgreSQL.

Manage your Azure Database for PostgreSQL — Flexible Server database with 1bench

1bench is a modern GUI client for PostgreSQL — connect to your Azure Database for PostgreSQL — Flexible Server instance, install extensions, write queries, and inspect schemas without leaving the IDE.

Try 1bench for PostgreSQL