Best AWS EC2 Instance for Laravel
For most Laravel apps, **t4g.large** is the right starting point. Laravel's PHP-FPM model is the textbook fit for AWS's burstable "t" family — requests come in bursts, PHP-FPM workers handle them, and the instance earns CPU credits during idle periods. Two vCPUs and 8GB of RAM at $0.0672/hr (about $48/mo) gives a typical Laravel deployment plenty of headroom for nginx, PHP-FPM, a local Redis cache, and a small in-process queue worker without touching swap.
Graviton (ARM64) deserves to be the default choice for Laravel in 2026. PHP, Composer, and all major Laravel ecosystem packages have shipped first-class ARM64 builds for years; you won't run into the compiled-extension surprises that bit early ARM adopters. The t4g family is priced ~20-40% below the equivalent Intel (t3) or AMD (t3a) instance for the same vCPU/RAM, so the cost savings are real and ongoing.
Where this recommendation breaks down: if you've adopted Laravel Octane with Swoole or RoadRunner, you're running persistent PHP workers that hold CPU continuously — burstable credit accounting works against you, and you want a c-series compute-optimized instance instead. Also, don't try to run MySQL or PostgreSQL on the same burstable instance once you cross a few hundred requests per minute; split the database to a managed RDS or Aurora instance so each tier can be sized independently.
The "budget" tier (t4g.medium) is appropriate for staging environments and single-developer side projects. The "scale" tier (m7g.xlarge) is where you go when you've outgrown burstable and want the equivalent Graviton3 sustained-CPU instance — same architecture, no credit accounting, more headroom. Live pricing for each tier is on its dedicated instance page below.
Alternatives by tier
Things to consider
- PHP runs perfectly well on ARM64 — Laravel, Composer, all major packages have been arm64-native since 2020
- For small-to-medium sites, the burstable CPU model is a feature, not a bug — most Laravel traffic is genuinely bursty
- Don't colocate Redis and MySQL with PHP-FPM on burstable above ~500 req/min — split the DB to RDS once you cross that line
- Octane + Swoole change the math significantly. With persistent workers, you want sustained CPU (c-series), not burstable