FriendlyId is a Rails gem that provides human-readable slugs for ActiveRecord models, replacing numeric IDs in URLs with meaningful strings. For example, instead of /articles/123, you can have /articles/my-first-post. It integrates with ActiveRecord to generate slugs automatically based on attributes (like a title) and manages uniqueness, history, and slug regeneration when records change. FriendlyId also supports features like slug candidates, scoped slugs, and reserved word handling to avoid conflicts. It includes extensions to keep old slugs working as redirects, so links don’t break when content is renamed. By improving readability, SEO, and user-friendliness, FriendlyId has become the de facto solution for slugging in Rails applications.
Features
- Generate and use slugs (human readable strings) instead of numeric IDs in URLs
- Slug history and versioning (so old slugs remain valid after changes)
- Scoped slugs (so the same slug can be reused in different contexts/scopes)
- Reserved words to prevent certain words or paths from being used as slugs
- Custom slug generators so you can define how slugs are constructed (e.g. combining multiple fields, candidate slugs)
- Enhanced finders: ability to find by slug (and/or fallback to numeric ID), query using friendly.find etc.