NEW
An API pattern that divides large result sets into discrete pages to improve performance and usability.
DESCRIPTION
Pagination limits the number of items returned per request, enabling efficient data retrieval and navigation. Common styles include offset/limit and cursor-based (keyset) approaches. Cursor-based pagination is more stable under concurrent inserts/updates. Good pagination includes consistent ordering, next/prev links, and total counts if feasible. Web linking (RFC 5988) can advertise page relations. GraphQL uses connection edges and cursors for relay-style pagination. Pagination reduces memory, network usage, and timeouts. Consider use cases that require streaming instead, or server-side filtering to reduce page sizes.
ALTERNATIVE DEFINITIONS
Wikipedia
Pagination is the process of dividing a document into discrete pages, either electronic pages or printed pages.
General definition of pagination applicable to electronic documents and APIs by analogy.
JSON:API
A server MAY choose to limit the number of resources it returns in a response to a subset (“page”) of the whole set of matching resources.
Defines pagination behavior within the JSON:API specification.
RELATED TERMS
Filtering Sorting Limit and Offset Continuation Token Hypermedia as the Engine of Application State JSON:API GraphQL Connections RFC 5988 Web Linking
COMPETING TERMS
Cursor-based Pagination Offset Pagination
KNOWLEDGE AREAS
Software Engineering Data Integration & Interoperability Data Engineering
TARGET AUDIENCE
Software Developer Data Engineer Analytics Engineer BI Specialist
EXTERNAL SOURCES
- Wikipedia - Pagination
- IETF RFC - Web Linking for rel=next/prev
- GitHub Docs - Practical REST API pagination
- Relay - GraphQL connection pagination spec
TOP QUESTIONS
When should I use cursor-based Pagination?
Use cursors for large, frequently changing datasets to avoid duplicates or missing items due to inserts or deletes.
Category: Requirements
What are common mistakes with Pagination?
Missing deterministic ordering, exposing sensitive cursors, or returning inaccurate total counts that are expensive to compute.
Category: Mistakes
How does Pagination affect performance?
It reduces payload sizes and query costs. Keyset queries use indexed columns to avoid large offsets and improve latency.
Category: Overview
Is it necessary to include total counts with Pagination?
Not always; total counts can be costly. Provide them optionally or asynchronously when needed.
Category: Opinion
What headers help advertise Pagination links?
Use Link headers with rel=“next” and rel=“prev” per RFC 8288 to guide clients.
Category: How-to
Does Pagination guarantee consistency?
No; without snapshot isolation, pages can shift. Use stable sort keys or versioned snapshots for consistency.
Category: Risk
What’s a hot topic in Pagination?
Hybrid approaches combining cursors with time-based windows for real-time feeds are gaining traction.
Category: Topic
How should I design cursors for Pagination?
Encode minimal, opaque identifiers (e.g., base64 keyset) and sign them if tamper resistance is needed.
Category: Requirements
How does Pagination interact with caching?
Page responses can be cached by key (URL+params). Stable ordering and cache headers improve hit rates.
Category: Management