Verified limit lookup

PostgreSQL Row, Field & Column Size Limits

PostgreSQL 18 field, column, identifier, heap-page, and TOAST constraints without collapsing them into one misleading row-size number.

Verified Aug 22, 20261 official source
Quick answer

PostgreSQL does not publish one simple maximum row value. A table can have up to 1,600 columns, an individual field is capped at 1 GB, and the in-page tuple must still fit the heap-page rules.

Verified Aug 22, 2026Official source

Current limits

ConstraintCurrent valueScopeVerified source
Field sizeVariable-length values can be stored out of line with TOAST; practical limits may be lower.1 GBPostgreSQL 18PostgreSQL Global Development GroupAug 22, 2026
Columns per tableFurther limited by the requirement that the stored tuple fit on a single heap page; dropped columns still count.1,600PostgreSQL 18PostgreSQL Global Development GroupAug 22, 2026
Identifier lengthCan be changed only by recompiling PostgreSQL.63 bytesPostgreSQL 18PostgreSQL Global Development GroupAug 22, 2026

Why does this limit matter?

Large variable-length values can move to TOAST storage, leaving a pointer in the heap tuple; fixed-width column layouts cannot rely on that behavior.

Dropped columns continue to count toward the column limit because their positions remain in the table's physical history.

What should you check?

  1. Confirm the server major version.
  2. Inspect fixed-width versus variable-length column types.
  3. Measure actual tuple and TOAST behavior on representative data rather than designing to the theoretical ceiling.

Important caveats

  • These are PostgreSQL 18 engine limits; build options can change some compiled ceilings.
  • Practical performance and disk constraints usually arrive before theoretical maxima.
HyperObserve reports the documented platform constraint. Your application, SDK, gateway, provider, region, or account can impose a lower effective limit.
Related

Related references and tools

Found an outdated limit? Report it.