Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Slugable Laravel Package

italofantone/slugable

Slugable is a Laravel package that automatically generates unique, customizable slugs for Eloquent models. Define the source field, separator, and update behavior to get clean, SEO-friendly URLs with minimal configuration.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • URL & SEO strategy: slug generation sits directly on public-facing URLs. This release refactors the core slug logic, so it informs decisions about URL stability, canonical links, redirects, and whether historic URLs must be preserved.
  • Build vs. buy: a slug package replaces a small but deceptively fiddly piece of custom code (transliteration, uniqueness collisions, reserved words, regeneration on rename). Adopting it frees engineering time for roadmap work; only justified if you have more than one or two slugged models.
  • Content model & authoring workflow: determines whether editors can override slugs manually, whether slugs regenerate when a title changes, and whether that is a product-visible behavior (link rot) or safely invisible.
  • Localization / multi-market roadmap: if you plan per-locale URLs, evaluate whether this package's transliteration and uniqueness handling covers non-Latin scripts before committing to it as a platform standard.
  • Migration and backfill scope: any change in generation behavior creates a decision point — do we re-slug existing content (risking broken links) or freeze existing slugs and apply new logic only to new records? Default recommendation: freeze existing, apply forward-only.
  • Release-management policy: a refactor of core logic with no stated breaking change is a prompt to decide your dependency pinning and regression-testing posture for URL-generating code.

When to Consider This Package

Consider adopting when:

  • You need slugs on multiple Eloquent models and want one consistent, tested implementation.
  • You need uniqueness guarantees (collision suffixes) and transliteration out of the box.
  • You want slug behavior configurable per model rather than hard-coded in observers or controllers.
  • You are willing to pin the version and add a snapshot test asserting generated slugs for a fixture set of titles.

Look elsewhere or build in-house when:

  • You have a single model with simple, ASCII-only slugs — a short trait is cheaper than a dependency and its upgrade risk.
  • You need slug history with automatic 301 redirects; that is usually a separate concern and should be evaluated as such.
  • You need fully localized, per-locale route generation — verify coverage explicitly rather than assuming.
  • You require guaranteed byte-for-byte slug stability across minor upgrades and cannot absorb the testing overhead.
  • Your slugs are generated at very high concurrency and you need a stronger uniqueness strategy than a check-then-insert.

On v2.1.0 specifically: the release note ("refactor slug generation logic and update tests for improved functionality") does not disclose whether output changes for any input. Treat this as an unknown-behavior-change release: verify slug parity against your production data before upgrading, and avoid upgrading in the same window as any content migration or URL restructure.

How to Pitch It (Stakeholders)

For executives: This is a small, low-cost dependency that standardizes how we produce public URLs. The v2.1.0 release refactors the slug logic without announcing breaking changes, so the risk is not to features but to link stability and search ranking if slugs shift. Mitigation is cheap: pin the current version, run a parity check on real content in staging, and upgrade on our schedule rather than automatically. No roadmap impact; modest SEO downside if we skip the check.

For engineering: v2.1.0 refactors the slug generation path and updates tests. There is no stated breaking change, but slug output is an implicit contract with our database and inbound links. Before upgrading: (1) capture current slug output for a representative fixture set of titles, including Unicode, punctuation, emoji, and duplicate titles; (2) diff against the new version; (3) confirm whether the package only generates on create or can regenerate on update, and make sure our models are configured to never silently rewrite existing slugs; (4) if any diff appears, freeze legacy slugs and apply new behavior forward-only. Add a permanent regression test around slug output so the next refactor is a one-line review rather than an investigation.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk