33+ PostgreSQL Extensions on Heroku Postgres

Heroku Postgres is managed Postgres on the Heroku platform (a Salesforce company), offering a fixed allow-list of extensions (pgvector, postgis, hstore and more) that you enable with a CREATE EXTENSION statement over psql.

Last reviewed: August 27, 2026
33
Supported extensions
1
Pre-enabled
0
Vendor-specific
Not supported
Custom extensions
33 extensions
1
pgvector
22.8k+390 30d

vector data type and ivfflat and hnsw access methods

Vector & AI·PostgreSQL·C
2
pg_partman
2.8k+21 30d

Extension to manage partitioned tables by time or ID

Analytics & Columnar·PostgreSQL·C
3

functions for autoincrementing fields

Functions·PostgreSQL·C
4

bloom access method - signature file based index

Database Features·PostgreSQL·C
5

support for indexing common datatypes in GIN

Functions·PostgreSQL·C
6

support for indexing common datatypes in GiST

Functions·PostgreSQL·C
7

data type for case-insensitive character strings

Data Types·PostgreSQL·C
8

data type for multidimensional cubes

Data Types·PostgreSQL·C
9

connect to other PostgreSQL databases from within a database

Foreign Data Wrappers·PostgreSQL·C
10

text search dictionary template for integers

Functions·PostgreSQL·C
11

calculate great-circle distances on the surface of the Earth

Geospatial·PostgreSQL·C
12

determine similarities and distance between strings

Full-text Search·PostgreSQL·C
13

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

Data Types·PostgreSQL·C
14

functions for tracking who changed a table

Functions·PostgreSQL·C
15

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

Functions·PostgreSQL·C
16

data types for international product numbering standards

Data Types·PostgreSQL·C
17

Large Object maintenance

Administration·PostgreSQL·C
18

data type for hierarchical tree-like structures

Data Types·PostgreSQL·C
19

functions for tracking last modification time

Functions·PostgreSQL·C
20

prewarm relation data

Administration·PostgreSQL·C
21
Pre-enabled

track planning and execution statistics of all SQL statements executed

Monitoring & Stats·PostgreSQL·C
22

text similarity measurement and index searching based on trigrams

Full-text Search·PostgreSQL·C
23

cryptographic functions

Security & Audit·PostgreSQL·C
24

show row-level locking information

Monitoring & Stats·PostgreSQL·C
25

PostGIS geometry and geography spatial types and functions

Geospatial·GPL-2.0·C
26

foreign-data wrapper for remote PostgreSQL servers

Foreign Data Wrappers·PostgreSQL·C
27

data type for representing line segments or floating-point intervals

Data Types·PostgreSQL·C
28

information about SSL certificates

Monitoring & Stats·PostgreSQL·C
29

functions that manipulate whole tables, including crosstab

Analytics & Columnar·PostgreSQL·C
30

Triggered change notifications

Functions·PostgreSQL·C
31

TABLESAMPLE method which accepts number of rows as a limit

Functions·PostgreSQL·C
32

text search dictionary that removes accents

Functions·PostgreSQL·C
33

generate universally unique identifiers (UUIDs)

Functions·PostgreSQL·C

How to enable extensions on Heroku Postgres

Heroku is deliberately restrictive: the only way to enable an extension is to run CREATE EXTENSION in a psql session against your database. There is no dashboard toggle and no access to shared_preload_libraries, so anything that needs a preloaded background worker (like pg_cron) simply isn't on the menu. You can only enable extensions that appear on Heroku's published allow-list.

SQL

Once connected, enable, schema-place, upgrade, and inspect extensions with standard SQL. As of recent platform updates, extensions install into public. The heroku_ext schema is no longer required.

-- Enable an extension (installs into public)
CREATE EXTENSION hstore;

-- Or place it in a specific schema
CREATE EXTENSION hstore WITH SCHEMA myschema;

-- Upgrade an already-installed extension to a newer version
ALTER EXTENSION hstore UPDATE TO '1.8';

-- List everything installed
\dx

-- Check the live allow-list (Standard / Advanced)
-- echo 'SHOW extwlist.extensions' | heroku pg:psql -a example-app
-- On the Essential tier (RDS-backed) the list is:
-- echo 'SHOW rds.allowed_delegated_extensions' | heroku pg:psql -a example-app

CLI

Open a psql session with the Heroku CLI, then enable extensions with plain SQL. Use heroku data:pg:psql on the Advanced tier.

# Open a psql session (Essential / Standard tiers)
heroku pg:psql DATABASE_URL -a example-app

# Advanced tier uses the data plugin
heroku data:pg:psql -a example-app

Pre-enabled on Heroku Postgres

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

Notable absences

Extensions you might expect that aren't available on Heroku Postgres, with workarounds where they exist.

pg_cron

Why missing: pg_cron requires a background worker loaded via shared_preload_libraries, and Heroku exposes no way to customize that server parameter. It is not on the allow-list and cannot be added.

Alternative: Use the Heroku Scheduler add-on for periodic dyno jobs, or point an external cron (e.g. GitHub Actions) at a Postgres function via heroku pg:psql.

timescaledb

Why missing: timescaledb is not on Heroku's allow-list. It relies on preloaded libraries and background workers that Heroku doesn't permit, and Salesforce isn't actively adding extensions to a mature product.

Alternative: Run native Postgres partitioning with pg_partman (supported on Standard/Advanced tiers), or move time-series workloads to Timescale Cloud or a self-managed instance.

plv8

Why missing: plv8 was dropped because upstream Debian/Ubuntu packaging stopped shipping it for Postgres 11 and later, so Heroku can no longer build it into the platform. It is not available on current major versions.

Alternative: Use PL/pgSQL for in-database procedural logic, or run JavaScript in a Heroku dyno (a worker or web process) that talks to the database.

Can you install custom extensions on Heroku Postgres?

No, managed allow-list only

Heroku Postgres uses a fixed allow-list: "Only the extensions listed in this article are available on Heroku Postgres." The list is enforced by the extwlist extension, via extwlist.extensions on Standard/Advanced plans and via rds.allowed_delegated_extensions on the RDS-backed Essential tier. There is no mechanism to install extensions outside the list, no shared_preload_libraries customization, and no trusted-language extension framework. If you need an extension Heroku doesn't ship, your options are a self-managed Postgres instance or a different managed provider.

Learn more

Frequently asked questions

How do I enable an extension on Heroku Postgres?
Open a psql session with `heroku pg:psql DATABASE_URL -a example-app` (or `heroku data:pg:psql` on the Advanced tier), then run `CREATE EXTENSION <name>;`. There is no dashboard toggle. `CREATE EXTENSION` over psql is the only mechanism. Verify with `\dx`, and place an extension in a specific schema with `CREATE EXTENSION <name> WITH SCHEMA myschema;`.
Can I install custom extensions on Heroku Postgres?
No. Heroku enforces a fixed allow-list. Only the extensions it publishes are installable, controlled by `extwlist.extensions` (Standard/Advanced) or `rds.allowed_delegated_extensions` (Essential). You can see the live list with `echo 'SHOW extwlist.extensions' | heroku pg:psql -a example-app`. There is no way to add extensions outside it and no `shared_preload_libraries` access, so bring-your-own and trusted-language extensions aren't supported.
Does Heroku Postgres support pgvector?
Yes. pgvector is on Heroku's allow-list across current major versions. Enable it from a psql session with `heroku pg:psql -a example-app` followed by `CREATE EXTENSION vector;`, then create ivfflat or hnsw indexes for similarity search. Confirm it's installed with `\dx`.
Does Heroku Postgres support pg_cron?
No. pg_cron needs a background worker loaded via `shared_preload_libraries`, and Heroku doesn't expose that parameter, so it isn't on the allow-list. For scheduled jobs, use the Heroku Scheduler add-on, or trigger a Postgres function from an external cron such as GitHub Actions via `heroku pg:psql`.
Does Heroku Postgres support timescaledb?
No. timescaledb relies on preloaded libraries and background workers that Heroku doesn't permit, and it's not on the published allow-list. For time-series workloads, use native Postgres partitioning with pg_partman on a Standard or Advanced plan, or move to Timescale Cloud or a self-managed instance.

Manage your Heroku Postgres database with 1bench

1bench is a modern GUI client for PostgreSQL. Connect to your Heroku Postgres instance, install extensions, write queries, and inspect schemas without leaving the IDE.

Try 1bench for PostgreSQL