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: May 29, 2026
33
Supported extensions
1
Pre-enabled
0
Vendor-specific
Not supported
Custom extensions
33 extensions
1
pgvector
21.5k+511 30d

vector data type and ivfflat and hnsw access methods

Vector & AI·PostgreSQL·C
2
pg_partman
2.7k+30 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