Explore supported Postgres extensions by category. Also see:
Need an extension we don't have? 📩 Request an extension
AI / Machine Learning
- pg_tiktoken- Tokenize data in Postgres using the OpenAI tiktoken library 
- pgrag- Create end-to-end Retrieval-Augmented Generation (RAG) pipelines 
- pgvector- Store vector embeddings and perform vector similarity search in Postgres 
Analytics
- pg_mooncake- Adds columnstore tables and DuckDB execution for fast analytics in Postgres. 
- hll- Implements a HyperLogLog data structure as a native data type for efficient and tunable distinct value counting 
- timescaledb- Enables Postgres as a time-series database for efficient storage and retrieval of time-series data 
Auditing / Logging
- insert_username- Implements a trigger that stores the current user's name into a text field, useful for tracking who modified a particular row within a table 
- moddatetime- Implements a trigger that automatically updates a timestamp column to the current timestamp whenever a row is modified 
- pgrowlocks- Provides a function that shows row locking information for a specified table, useful in concurrency and deadlock debugging 
- tcn- Provides a trigger function to notify listeners of changes to a table, allowing applications to respond to changes in the database 
Data / Transformations
- address_standardizer- A single-line address parser that takes an input address and normalizes it based on a set of rules 
- address_standardizer_data_us- Provides data for standardizing US addresses, for use with the address_standardizer extension 
- citext- Provides a case-insensitive character string type that internally calls lower when comparing values in Postgres 
- cube- Implements the cube data type for representing multidimensional cubes in Postgres 
- earthdistance- Provides cube-based and point-based approaches to calculating great circle distances on the surface of the Earth 
- hstore- Implements an hstore data type for storing and manipulating sets of key-value pairs within a single Postgres value 
- intagg- Provides an integer aggregator and enumerator for Postgres 
- intarray- Offers functions and operators for manipulating and searching arrays of integers within Postgres 
- isn- Implements data types for international product numbering standards: EAN13, UPC, ISBN (books), ISMN (music), and ISSN (serials) 
- ltree- Provides data types for representing labels of data stored in a hierarchical tree-like structure and facilities for searching through label trees 
- pg_graphql- Adds GraphQL support to Postgres, allowing you to query your database via GraphQL 
- pg_hashids- Enables the generation of short, unique hash ids from integers, useful for obfuscating internal ids 
- pg_jsonschema- Provides support for JSON schema validation on json and jsonb data types 
- pg_uuidv7- Enables creating valid UUID Version 7 values in Postgres, enabling globally unique identifiers with temporal ordering 
- pgx_ulid- A full-featured extension for generating and working with ULID (Universally Unique Lexicographically Sortable Identifiers) 
- seg- Implements the seg data type for storage and manipulation of line segments or floating-point ranges, useful for geometric and scientific applications 
- semver- A Postgres data type for the Semantic Version format with support for btree and hash indexing 
- tablefunc- Contains functions that return tables (multiple rows), including crosstab, which can pivot row data into columns dynamically 
- unaccent- A text search dictionary that removes accents from characters, simplifying text search in Postgres 
- unit- Implements a data type for SI units, plus byte, for storage, manipulation, and calculation of scientific units 
- uuid-ossp- Provides functions to generate universally unique identifiers (UUIDs) in Postgres, supporting various UUID standards 
- wal2json- A Postgres logical decoding plugin that converts Write-Ahead Log (WAL) changes into JSON objects 
- xml2- Enables XPath queries and XSLT functionality directly within Postgres, enabling XML data processing 
Debugging
- moddatetime- Automatically updates a timestamp column to the current timestamp whenever a row is modified in Postgres 
- pgrowlocks- Provides a function that shows row locking information for a specified table, which can aid in concurrency and deadlock debugging 
- pgTap- A unit testing framework for Postgres, enabling sophisticated testing of database queries and functions 
- plpgsql_check- Provides a linter and debugger for PL/pgSQL code, helping identify errors and optimize PL/pgSQL functions 
Geospatial
- cube- Implements a data type for representing multidimensional cubes in Postgres 
- earthdistance- Provides cube-based and point-based approaches to calculating great circle distances on the surface of the Earth 
- h3- Integrates Uber's H3 geospatial indexing system that combines the benefits of a hexagonal grid with S2's hierarchical subdivisions 
- h3_postgis- A PostGIS extension for H3, enabling advanced spatial analysis and indexing 
- pgrouting- Extends PostGIS/Postgres databases, providing geospatial routing and other network analysis functionality 
- postgis- Extends Postgres to allow GIS (Geographic Information Systems) objects to be stored in the database, enabling spatial queries directly in SQL 
- postgis_raster- Adds support for raster data to PostGIS, enabling advanced geospatial analysis on raster images 
- postgis_sfcgal- Provides support for advanced 3D geometries in PostGIS, based on the SFCGAL library 
- postgis_tiger_geocoder- Enables geocoding and reverse geocoding capabilities in PostGIS using TIGER/Line data 
- postgis_topology- Extends PostGIS with support for topological data types and functions, facilitating the analysis of spatial relationships 
Index / Table optimization
- bloom- Provides an index access method for Postgres based on Bloom filters 
- btree_gin- Provides GIN operator classes that implement B-tree equivalent behavior 
- btree_gist- Provides GiST index operator classes that implement B-tree equivalent behavior 
- ip4r- Provides a range index type and functions for efficiently storing and querying IPv4 and IPv6 ranges and addresses in Postgres 
- pg_ivm- Provides an Incremental View Maintenance (IVM) feature for Postgres 
- pg_partman- A partition manager extension that enables creating and managing time-based and number-based table partition sets in Postgres 
- pg_prewarm- Allows manual preloading of relation data into the Postgres buffer cache, reducing access times for frequently queried tables 
- pg_repack- Lets you remove bloat from tables and indexes, and optionally restore the physical order of clustered indexes 
- pg_roaringbitmap- Implements Roaring Bitmaps in Postgres for efficient storage and manipulation of bit sets 
- rum- Provides an access method to work with a RUM index, designed to speed up full-text searches 
Metrics
- neon- Provides functions and views designed to gather Neon-specific metrics 
- pg_stat_statements- Tracks planning and execution statistics for all SQL statements executed, aiding in performance analysis and tuning 
- pgstattuple- Offers functions to show tuple-level statistics for tables, helping identify bloat and efficiency opportunities 
- tsm_system_rows- Provides a table sampling method that selects a fixed number of table rows randomly 
- tsm_system_time- Offers a table sampling method based on system time, enabling consistent sample data retrieval over time 
Orchestration
- tcn- Provides a trigger function to notify listeners of changes to a table, allowing applications to respond to changes in the database 
- pg_partman- A partition manager extension that enables creating and managing time-based and number-based table partition sets in Postgres 
Procedural languages
- plcoffee- Enables writing functions in CoffeeScript, a Javascript dialect with a syntax similar to Ruby 
- plls- Enables writing functions in LiveScript, a Javascript dialect that serves as a more powerful successor to CoffeeScript 
- plv8- A Postgres procedural language powered by V8 Javascript Engine for writing functions in Javascript that are callable from SQL 
- plpgsql- The default procedural language for Postgres, enabling the creation of complex functions and triggers 
Query optimization
- hypopg- Provides the ability to create hypothetical (virtual) indexes in Postgres for performance testing 
- pg_hint_plan- Allows developers to influence query plans with hints in SQL comments, improving performance and control over query execution 
Scientific computing
- cube- Implements the cube data type for representing multidimensional cubes in Postgres 
- rdkit- Integrates the RDKit cheminformatics toolkit with Postgres, enabling chemical informatics operations directly in the database 
- seg- Implements the seg data type for storage and manipulation of line segments or floating-point intervals, useful for representing laboratory measurements 
- unit- Implements a data type for SI units, plus byte, for storage, manipulation, and calculation of scientific units 
Search
- citext- Provides a case-insensitive character string type that internally calls lower when comparing values in Postgres 
- dict_int- Provides a text search dictionary template for indexing integer data in Postgres 
- fuzzystrmatch- Provides several functions to determine similarities and distance between strings in Postgres 
- pg_search- An Elasticsearch alternative for full-text search and analytics on Postgres 
- pg_trgm- Provides functions and operators for determining the similarity of alphanumeric text based on trigram matching, and index operator classes for fast string similarity search 
- prefix- A prefix range module that supports efficient queries on text columns with prefix-based searching and matching capabilities 
- unaccent- A text search dictionary that removes accents from characters, simplifying text search in Postgres 
Security
- pg_session_jwt- Enables RLS policies to verify user identity directly within SQL queries 
- pgcrypto- Offers cryptographic functions, allowing for encryption and hashing of data within Postgres 
- pgjwt- Implements JSON Web Tokens (JWT) in Postgres, allowing for secure token creation and verification 
Tooling / Admin
- autoinc- Provides an autoinc() function that stores the next value of a sequence into an integer field 
- hypopg- Provides the ability to create hypothetical (virtual) indexes in Postgres for performance testing 
- insert_username- Automatically inserts the username of the person executing an insert operation into a specified table in Postgres 
- lo- Provides support for managing large objects (LOBs) in Postgres, including a data type lo and a trigger lo_manage 
- neon_utils- Provides a function for monitoring how Neon's Autoscaling feature allocates vCPU in response to workload 
- pg_cron- Lets you schedule and manage periodic jobs directly in your Postgres database 
- pgtap- A unit testing framework for Postgres, enabling sophisticated testing of database queries and functions 
- refint- Provides functions for maintaining foreign key constraints