78+ PostgreSQL Extensions on AWS RDS for PostgreSQL

AWS RDS for PostgreSQL ships a broad allow-list of extensions — pgvector, postgis, and pg_cron all run on RDS, most via a plain CREATE EXTENSION, with preload-backed ones enabled through a custom DB parameter group.

Last reviewed: May 29, 2026
78
Supported extensions
1
Pre-enabled
7
Vendor-specific
Supported
Custom extensions
78 extensions
1
pgvector
21.5k+511 30d

vector data type and ivfflat and hnsw access methods

Vector & AI·PostgreSQL·C
2
pg_cron
3.8k+30 30d

Job scheduler for PostgreSQL

Time-series & Temporal·PostgreSQL·C
3
rdkit
3.4k+37 30d

Cheminformatics functionality for PostgreSQL.

Database Features·BSD-3-Clause·C++
4
pg_partman
2.7k+30 30d

Extension to manage partitioned tables by time or ID

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

Reorganize tables in PostgreSQL databases with minimal locks

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

PL/JavaScript (v8) trusted procedural language

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

Hypothetical indexes for PostgreSQL

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

provides auditing functionality

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

Changing data capture in JSON format

Replication & ETL·BSD-3-Clause·C
10
pgrouting
1.4k+11 30d

pgRouting Extension

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

PostgreSQL Logical Replication

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

type for storing hyperloglog data

Database Features·Apache-2.0·C++
13
pgtap
1.1k+4 30d

Unit testing for PostgreSQL

Procedural Languages·PostgreSQL·C
14
pgactive
1.1k+6 30d

Active-Active Replication Extension for PostgreSQL

Replication & ETL·Apache-2.0·C
15
pg_hint_plan
900+9 30d

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

Database Features·BSD-3-Clause·C
16
mysql_fdw
5960 30d

Foreign data wrapper for querying a MySQL server

Foreign Data Wrappers·BSD-3-Clause·C
17

The pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL contrib module pg_stat_statements. pg_stat_monitor provides aggregated statistics, client information, plan details including plan, and histogram information.

Monitoring & Stats·BSD-3-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
pg_tle
4050 30d

Trusted Language Extensions for PostgreSQL

Procedural Languages·Apache-2.0·C
22

support similarity queries

Vector & AI·BSD-3-Clause·C
23
pg_plugins
3470 30d

Output plugin for logical replication in Raw SQL format

Replication & ETL·PostgreSQL·C
24

support for Roaring Bitmaps

Data Types·Apache-2.0·C
25

aws_s3 postgres extension to import/export data from/to s3

Foreign Data Wrappers·Apache-2.0·SQL
26
ip4r
166+1 30d

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

Data Types·PostgreSQL·C
27
pg_bigm
148+4 30d

create 2-gram (bigram) index for faster full text search.

Full-text Search·PostgreSQL·C
28
plprofiler
1010 30d

server-side support for profiling PL/pgSQL functions

Procedural Languages·Artistic·C
29
pg_proctab
290 30d

Exposes the Linux operating-system process table through SQL so load, memory, CPU, and I/O stats can be queried from PostgreSQL.

Monitoring & Stats·PostgreSQL·C
30

foreign-data wrapper for Postgres log file access

Foreign Data Wrappers·Apache-2.0·C
31

functions for verifying relation integrity

Administration·PostgreSQL·C
32

Provides a means for logging execution plans of slow statements automatically

Monitoring & Stats·PostgreSQL·C
33

functions for autoincrementing fields

Functions·PostgreSQL·C
34

bloom access method - signature file based index

Database Features·PostgreSQL·C
35

support for indexing common datatypes in GIN

Functions·PostgreSQL·C
36

support for indexing common datatypes in GiST

Functions·PostgreSQL·C
37

data type for case-insensitive character strings

Data Types·PostgreSQL·C
38

data type for multidimensional cubes

Data Types·PostgreSQL·C
39

connect to other PostgreSQL databases from within a database

Foreign Data Wrappers·PostgreSQL·C
40

text search dictionary template for integers

Functions·PostgreSQL·C
41

text search dictionary template for extended synonym processing

Functions·PostgreSQL·C
42

calculate great-circle distances on the surface of the Earth

Geospatial·PostgreSQL·C
43

determine similarities and distance between strings

Full-text Search·PostgreSQL·C
44

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

Data Types·PostgreSQL·C
45

functions for tracking who changed a table

Functions·PostgreSQL·C
46

integer aggregator and enumerator (obsolete)

Functions·PostgreSQL·C
47

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

Functions·PostgreSQL·C
48

data types for international product numbering standards

Data Types·PostgreSQL·C
49

Large Object maintenance

Administration·PostgreSQL·C
50

data type for hierarchical tree-like structures

Data Types·PostgreSQL·C
51

functions for tracking last modification time

Functions·PostgreSQL·C
52

utilities in support of old_snapshot_threshold

Administration·PostgreSQL·C
53

inspect the contents of database pages at a low level

Monitoring & Stats·PostgreSQL·C
54

examine the shared buffer cache

Monitoring & Stats·PostgreSQL·C
55

examine the free space map (FSM)

Monitoring & Stats·PostgreSQL·C
56

Logical decoding components inspection

Monitoring & Stats·PostgreSQL·C
57

prewarm relation data

Administration·PostgreSQL·C
58

track planning and execution statistics of all SQL statements executed

Monitoring & Stats·PostgreSQL·C
59

text similarity measurement and index searching based on trigrams

Full-text Search·PostgreSQL·C
60

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

Monitoring & Stats·PostgreSQL·C
61

functions to inspect contents of PostgreSQL Write-Ahead Log

Monitoring & Stats·PostgreSQL·C
62

cryptographic functions

Security & Audit·PostgreSQL·C
63

show row-level locking information

Monitoring & Stats·PostgreSQL·C
64

show tuple-level statistics

Monitoring & Stats·PostgreSQL·C
65

PL/Perl procedural language

Procedural Languages·PostgreSQL·C
66
Pre-enabled

PL/pgSQL procedural language

Procedural Languages·PostgreSQL·C
67

PL/Tcl procedural language

Procedural Languages·PostgreSQL·C
68

PostGIS geometry and geography spatial types and functions

Geospatial·GPL-2.0·C
69

foreign-data wrapper for remote PostgreSQL servers

Foreign Data Wrappers·PostgreSQL·C
70

functions for implementing referential integrity (obsolete)

Functions·PostgreSQL·C
71

data type for representing line segments or floating-point intervals

Data Types·PostgreSQL·C
72

information about SSL certificates

Monitoring & Stats·PostgreSQL·C
73

functions that manipulate whole tables, including crosstab

Analytics & Columnar·PostgreSQL·C
74

Triggered change notifications

Functions·PostgreSQL·C
75

TABLESAMPLE method which accepts number of rows as a limit

Functions·PostgreSQL·C
76

TABLESAMPLE method which accepts time in milliseconds as a limit

Functions·PostgreSQL·C
77

text search dictionary that removes accents

Functions·PostgreSQL·C
78

generate universally unique identifiers (UUIDs)

Functions·PostgreSQL·C

How to enable extensions on AWS RDS for PostgreSQL

RDS has no dashboard toggle for extensions. Most are plain SQL — connect as your master user and run CREATE EXTENSION. The exception is preload-backed extensions (pg_cron, pgaudit, pg_partman's background worker, auto_explain), which must be added to shared_preload_libraries in a custom DB parameter group and require a reboot before you can create them.

SQL

Run from psql or any client connected as the master user. Most extensions need nothing else.

-- Enable a plain extension (no preload needed)
CREATE EXTENSION IF NOT EXISTS vector;

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

-- RDS can restrict which extensions are creatable via an allow-list.
-- Default is '*' (all permitted). Check the current setting:
SHOW rds.allowed_extensions;
-- If a name isn't listed, CREATE EXTENSION fails with:
--   "permission denied to create extension ... not specified in rds.allowed_extensions"

CLI

Preload-backed extensions (pg_cron, pgaudit, pg_partman bgw, auto_explain) need shared_preload_libraries. The default parameter group is read-only, so create a custom one, set the library list, attach it, and reboot — then run CREATE EXTENSION.

# 1. Create a custom DB parameter group for your PG major
aws rds create-db-parameter-group \
  --db-parameter-group-name pg17-custom \
  --db-parameter-group-family postgres17 \
  --description "custom"

# 2. Add the libraries you need to shared_preload_libraries
aws rds modify-db-parameter-group \
  --db-parameter-group-name pg17-custom \
  --parameters "ParameterName=shared_preload_libraries,ParameterValue=pg_stat_statements,pg_cron,ApplyMethod=pending-reboot"

# 3. Attach the parameter group to your instance
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --db-parameter-group-name pg17-custom \
  --apply-immediately

# 4. Reboot so the preload takes effect, then CREATE EXTENSION pg_cron;
aws rds reboot-db-instance --db-instance-identifier mydb

Infrastructure as Code

With Terraform, manage shared_preload_libraries on an aws_db_parameter_group and attach it to the instance. Run CREATE EXTENSION afterward (e.g. via a provisioner or a separate SQL step).

resource "aws_db_parameter_group" "pg17" {
  name   = "pg17-custom"
  family = "postgres17"

  parameter {
    name         = "shared_preload_libraries"
    value        = "pg_stat_statements,pg_cron"
    apply_method = "pending-reboot"
  }
}

# Reference this group from your aws_db_instance via
# parameter_group_name = aws_db_parameter_group.pg17.name

Pre-enabled on AWS RDS for PostgreSQL

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

AWS RDS for PostgreSQL-specific extensions

Proprietary extensions that exist only on AWS RDS for PostgreSQL, not part of the open-source PostgreSQL ecosystem.

aws_s3

Import data from and export query results to Amazon S3 directly from SQL — useful for bulk loads and offloading without a separate ETL tool.

Docs
aws_lambda

Invoke AWS Lambda functions from inside Postgres — call out to serverless code from triggers or stored procedures.

Docs
aws_commons

Helper types and functions shared by aws_s3 and aws_lambda (S3 URIs, function ARNs). A dependency you enable alongside them.

Docs
log_fdw

Foreign data wrapper that exposes the RDS database engine logs as SQL-queryable tables, so you can grep slow queries and errors with SELECT.

Docs
pg_transport

Fast physical migration of a database between two RDS for PostgreSQL instances — moves data at the file level, far quicker than logical dump/restore.

Docs
pg_tle

Trusted Language Extensions dev kit — author and install your own extensions in trusted languages without superuser or filesystem access.

Docs
pgactive

Active-active logical replication for PostgreSQL — multi-writer setups across RDS instances, developed and open-sourced by AWS.

Docs

Notable absences

Extensions you might expect that aren't available on AWS RDS for PostgreSQL, with workarounds where they exist.

timescaledb

Why missing: timescaledb is not on the RDS for PostgreSQL extension allow-list and cannot be created — RDS doesn't compile or load it.

Alternative: For time-series workloads, use native Postgres partitioning with pg_partman (supported on RDS), run TimescaleDB on Timescale Cloud, or self-manage TimescaleDB on EC2.

citus

Why missing: citus (distributed Postgres) isn't offered on RDS — among managed clouds it's effectively exclusive to Azure's Cosmos DB for PostgreSQL. GCP Cloud SQL doesn't offer it either.

Alternative: For sharded/distributed Postgres, use Azure Cosmos DB for PostgreSQL (managed Citus), or self-host Citus on EC2. For read scaling on RDS, add read replicas instead.

Can you install custom extensions on AWS RDS for PostgreSQL?

Yes, with caveats

RDS supports user-authored extensions through pg_tle (Trusted Language Extensions for PostgreSQL), AWS's framework for installing extensions written in trusted languages — JavaScript (PL/v8), Perl, Tcl, PL/pgSQL, and SQL — without superuser access. The runtime is sandboxed: no filesystem access and no native C extensions, so you can't load arbitrary compiled code. You can further restrict which extensions are creatable at all with the rds.allowed_extensions parameter (default '*'), which acts as an allow-list enforced at CREATE EXTENSION time.

Learn more

Frequently Asked Questions

How do I enable pg_cron on AWS RDS?
pg_cron needs a background worker, so it can't be created with SQL alone. Add `pg_cron` to `shared_preload_libraries` in a custom DB parameter group (`aws rds modify-db-parameter-group ... ParameterName=shared_preload_libraries,ParameterValue=pg_stat_statements,pg_cron,ApplyMethod=pending-reboot`), attach the group to your instance, and reboot. After the reboot, run `CREATE EXTENSION pg_cron;` and schedule jobs with `cron.schedule(name, schedule, sql)`.
Does AWS RDS support pgvector?
Yes. pgvector is on the RDS allow-list (currently 0.8.2) and needs no preload — just connect as the master user and run `CREATE EXTENSION IF NOT EXISTS vector;`. Confirm with `SELECT extname, extversion FROM pg_extension WHERE extname = 'vector';`
Does AWS RDS support timescaledb?
No. timescaledb is not on the RDS for PostgreSQL extension allow-list, so CREATE EXTENSION will fail. For time-series workloads use native partitioning with pg_partman (supported on RDS), Timescale Cloud, or a self-managed TimescaleDB on EC2.
Can I install custom extensions on AWS RDS?
Yes, but only trusted-language extensions through pg_tle. You can author extensions in JavaScript, Perl, Tcl, PL/pgSQL, or SQL and install them without superuser access. Native C extensions and filesystem access are not allowed, so you can't load arbitrary compiled binaries — the set of compiled extensions is fixed by AWS.
What are rds.allowed_extensions and shared_preload_libraries on RDS?
`rds.allowed_extensions` is an allow-list (default `*`) controlling which extensions CREATE EXTENSION may install; if a name isn't listed you get a "not specified in rds.allowed_extensions" error — check it with `SHOW rds.allowed_extensions;`. `shared_preload_libraries` is a separate setting in your DB parameter group that loads libraries (like pg_cron or pgaudit) at server start; changing it requires a reboot before the matching CREATE EXTENSION will succeed.

Manage your AWS RDS for PostgreSQL database with 1bench

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

Try 1bench for PostgreSQL