# kaminari/kaminari

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/kaminari-kaminari).**

8,681 stars · 1,076 forks · Ruby · MIT

## Links

- GitHub: https://github.com/kaminari/kaminari
- Homepage: https://github.com/kaminari/kaminari/wiki
- awesome-repositories: https://awesome-repositories.com/repository/kaminari-kaminari.md

## Description

Kaminari is a Ruby pagination library and ActiveRecord tool designed to divide large datasets into smaller pages using limit and offset logic. It functions as a data paging utility that manages record offsets and total count calculations for Ruby web applications.

The project distinguishes itself by generating SEO-friendly navigation links and standardized HTML tags to improve search engine indexing. It supports localized navigation labels and translation files for multilingual interface design, and allows for customizable pagination themes via template overrides of view partials.

The library provides capabilities for dataset page splitting across both database queries and non-database collections using an array pagination wrapper. It includes performance optimizations such as skipping total record count queries for large tables and restricting the maximum number of pages or records per page. General functionality covers the calculation of collection metadata, the rendering of page entry information, and the generation of navigational links.

## Tags

### Web Development

- [Ruby Pagination Libraries](https://awesome-repositories.com/f/web-development/ruby-pagination-libraries.md) — Provides comprehensive pagination functionality for dividing large datasets in Ruby web applications.
- [Pagination Navigators](https://awesome-repositories.com/f/web-development/custom-page-frameworks/page-content-injections/pagination-navigators.md) — Generates the essential navigational links and accessibility roles required to move between pages of a collection. ([source](https://github.com/kaminari/kaminari/blob/master/CHANGELOG.md))
- [Limit Offset Pagination](https://awesome-repositories.com/f/web-development/limit-offset-pagination.md) — Uses limit and offset query parameters to slice datasets into specific pages.
- [SEO Pagination Tags](https://awesome-repositories.com/f/web-development/seo-pagination-tags.md) — Generates standardized navigation links and tags to help search engines properly index paginated content.
- [Pagination Link Optimization](https://awesome-repositories.com/f/web-development/web-standards/search-engine-optimization/seo-management/pagination-link-optimization.md) — Generates localized, standardized HTML tags and navigation links specifically designed for search engine indexing of paged content.

### Part of an Awesome List

- [Pagination Tools](https://awesome-repositories.com/f/awesome-lists/devtools/pagination-tools.md) — Integrates with ActiveRecord to manage record offsets and total count calculations for efficient paging.
- [More to explore](https://awesome-repositories.com/f/awesome-lists/more/more-to-explore.md) — Provides pagination.

### Data & Databases

- [Large-Scale Dataset Management](https://awesome-repositories.com/f/data-databases/large-scale-dataset-management.md) — Divides large datasets from various sources into smaller pages using limit and offset logic. ([source](https://github.com/kaminari/kaminari/blob/master/CHANGELOG.md))
- [Pagination](https://awesome-repositories.com/f/data-databases/pagination.md) — Sets constraints on the number of items per page and the maximum number of accessible pages. ([source](https://github.com/kaminari/kaminari/blob/master/CHANGELOG.md))
- [Pagination Metadata](https://awesome-repositories.com/f/data-databases/pagination-metadata.md) — Computes navigation metadata including total record counts and available page indices. ([source](https://github.com/kaminari/kaminari/blob/master/CHANGELOG.md))
- [Offset Row Skippers](https://awesome-repositories.com/f/data-databases/query-result-fetching/result-set-pagers/offset-row-skippers.md) — Enables skipping a specific number of records before starting the result set via offset clauses. ([source](https://github.com/kaminari/kaminari/blob/master/CHANGELOG.md))
- [Query Modifiers](https://awesome-repositories.com/f/data-databases/virtual-table-querying/query-modifiers.md) — Implements query modifiers to attach pagination logic directly to database query objects.
- [Database Query Optimizations](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/performance-optimization-tools/database-query-optimizations.md) — Reduces database latency on large tables by limiting results per page and skipping record counts.
- [Count-Skipping Optimizations](https://awesome-repositories.com/f/data-databases/database-record-management/record-counting/count-skipping-optimizations.md) — Optimizes performance on large tables by allowing the omission of total record count queries.
- [In-Memory Collection Paging](https://awesome-repositories.com/f/data-databases/in-memory-collection-paging.md) — Applies page-based slicing and navigation controls to plain Ruby arrays and generic data collections.
- [Result Ordering and Limiting](https://awesome-repositories.com/f/data-databases/result-ordering-and-limiting.md) — Provides controls to restrict the maximum number of records per page and total page counts to prevent performance degradation. ([source](https://github.com/kaminari/kaminari/blob/master/README.md))

### User Interface & Experience

- [Pagination Controls](https://awesome-repositories.com/f/user-interface-experience/navigation-components/pagination-controls.md) — Provides the core UI components, including HTML links and buttons, used to navigate through paginated datasets. ([source](https://github.com/kaminari/kaminari#readme))
- [Multilingual Interface Designs](https://awesome-repositories.com/f/user-interface-experience/interface-design-systems/multilingual-interface-designs.md) — Provides localized navigation labels and text summaries to support multilingual user interfaces.

### Software Engineering & Architecture

- [Array Pagination Wrappers](https://awesome-repositories.com/f/software-engineering-architecture/array-pagination-wrappers.md) — Provides a wrapper that enables page-based slicing for standard Ruby arrays and non-database collections.
- [Default Configuration Values](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values.md) — Provides systems for defining global or model-specific default values for items per page. ([source](https://github.com/kaminari/kaminari#readme))
- [Template Overrides](https://awesome-repositories.com/f/software-engineering-architecture/extensible-plugin-architectures/template-overrides.md) — Allows users to replace default pagination HTML by providing custom view partials in their own application directory.
- [Large Dataset Optimizations](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/data-handling-throughput/large-dataset-optimizations.md) — Implements performance optimizations for large tables by skipping total record count queries during pagination. ([source](https://github.com/kaminari/kaminari#readme))
- [Configuration Scope Hierarchies](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/scope-and-hierarchy-management/hierarchical-scopes/scope-selector-configurations/configuration-scope-hierarchies.md) — Supports hierarchical configuration for pagination limits, allowing model-specific settings to override global defaults.
