genj/short-url-bundle
genj/short-url-bundle is a Symfony bundle for adding short URL generation and redirection to PHP applications. It helps turn long links into compact, shareable addresses and route visitors to their original destinations with minimal configuration.
short_links table with a polymorphic reference to the target model, a controller, and a 301/302 policy.Do not adopt it as a dependency. It is archived (last release December 2015), has one star, zero dependents, and is a Symfony bundle — not a Laravel package — so it cannot be installed into a Laravel application without a port. It targets PHP 5-era Symfony 2.x and Doctrine ORM, and will not resolve against modern Symfony or Laravel release lines. There are no security patches and no maintainer.
Consider it only in two narrow cases:
short_links model with morphTo and a RedirectController).Look elsewhere — or build — if you need: click analytics, per-link expiration, custom domains, UTM handling, 301 vs. 302 policy, multi-tenant isolation, or anything with a maintenance guarantee. Any of those requirements makes an in-house implementation the cheaper path within a sprint.
To executives: We evaluated this as a possible foundation for campaign short links and QR codes. Recommendation: do not adopt. The package is archived, unmaintained since 2015, targets a different framework (Symfony, not Laravel), and has no user base — adopting it transfers risk to us with no cost savings, since the capability is small enough to build in-house in roughly a week. The valuable takeaway is a design lesson: links that point to a record rather than a URL don't break when content is renamed, which extends the life of printed material and reduces support tickets.
To engineering: Treat this as a pattern reference, not a library. The one idea worth carrying forward is deferred target resolution — store a reference to the target entity and resolve the destination route at redirect time, so slug changes don't produce dead links and deleted content produces a clean 404. For our stack, that's a short_links table with a polymorphic relation, a catch-all route, and an explicit decision on permanent (301) versus temporary (302) redirects. If we build it, we also own the things this package never shipped: click logging, expiration, and a management UI.
How can I help you explore Laravel packages today?