Laravel vs Rails: The Comparison Has Changed
Laravel borrowed Rails' convictions and then diverged. Fifteen years on the differences are the queue story, the typing, the hosting economics and the size of the hiring pool.
Laravel began by taking what Rails had proved: that a framework can have opinions, that convention beats configuration for most teams, and that developer experience is a legitimate engineering goal rather than a comfort.
That was fifteen years ago. Comparing them on those terms now misses what actually separates them.
Where they still agree
Both are full-stack and opinionated. Both use active record. Both have migrations, a strong CLI, a mature test culture and a directory structure you can predict before opening the repository.
A developer fluent in one reads the other's code comfortably within a week. That is unusual between ecosystems and it is worth saying before the differences.
Background work is the biggest practical gap
Laravel's queue system is part of the framework: drivers, retries with backoff, batching, unique jobs, rate limiting, a failed-jobs table and a dashboard, all documented together and versioned together.
Rails has Active Job as an abstraction with an adapter underneath - Sidekiq most often, which is excellent and is a separate product with its own paid tiers for the features you may want.
Either arrangement works. The difference is how many decisions and how many systems you own, and for a small team that matters more than the feature matrix.
Typing and tooling
PHP's type system has grown steadily and modern Laravel code is typed throughout. Static analysis over a Laravel codebase is mature and routinely part of CI.
Ruby's typing story is younger and less settled in practice. If you value a type checker that most of the ecosystem cooperates with, PHP is currently ahead - which is not a sentence anybody would have written a decade ago.
Hosting economics
PHP deploys onto anything. A single modest server runs a Laravel application with its queue workers and its scheduler, and managed platforms specifically for it are inexpensive.
Rails hosting is well supported and generally costs more at the low end, largely through memory per process. At small scale this is a real line in a budget. At large scale it stops mattering, because both are dominated by the database and the infrastructure around it.
Hiring, which is the argument that usually wins
The PHP and Laravel pool is substantially larger, worldwide and at more experience levels. The Rails pool is smaller and skews senior - so the people are often excellent and there are fewer of them, at a higher price.
This decides more of these choices than any technical point in this article, and it decides them correctly. A framework you cannot hire for is a framework you will be rewriting in four years.
Where Rails is genuinely ahead
Convention depth. Rails has been settling its conventions for longer, and the answer to "where does this go" is more often agreed. Laravel gives you more freedom, which large teams have to convert into written rules themselves.
The frontend story. Hotwire and Turbo are a coherent, mature answer to building interactive applications without a separate frontend stack. Laravel's equivalent options are good and there are several of them, which is a decision where Rails has a default.
Maturity of the upgrade path. Rails' long release history means its upgrade conventions are extremely well worn. Laravel's annual cadence is predictable but less forgiving of falling behind.
Choosing between them today
If you have a team in one of them, that is the answer, and the margin is not close.
If you are starting fresh with no preference: Laravel if you expect to hire and grow, if background work is central, or if hosting cost at small scale matters. Rails if you want the most settled conventions available and a first-party answer for interactive frontends.
If you are considering a move from one to the other, the honest advice is the same as it always is - find out what is actually costing you first. In most of these conversations it turns out to be the schema, the absent tests or the people who left, and none of those improve by changing language.
This one comes up most in the United States, where the Rails shop across the table is a real alternative. What usually decides it there is hiring and the payments ecosystem, not the two frameworks.
Inside PHP the same argument about convention and opinion plays out against Symfony, which is the closer comparison once the language is settled. And if the real doubt is the shape of framework rather than which one, there is a page for that.
