Laravel 13.20 Adds Native Image Processing, Middleware Attribute, and Redis Session Prefix
Laravel 13.20.0 ships a first-party Illuminate\Image component for transforming images from uploads, URLs, storage disks, or bytes, backed by optional Intervention Image v4 drivers.
The release also adds a #[WithoutMiddleware] controller attribute, a dedicated Redis session prefix, quiet bulk increments/decrements on Eloquent models, and enum support for WithoutOverlapping job keys.
Laravel 13.20.0, released on July 14, 2026, introduces a native image-processing layer and several smaller framework improvements. The new Illuminate\Image component is immutable and driver-based, letting developers transform images from uploaded files, local paths, URLs, raw bytes, base64 strings, or storage disks.
A fluent API supports operations such as cover, contain, crop, resize, scale, rotate, blur, sharpen, grayscale, flip, flop, and orient. Output methods include toWebp, toJpg, optimize, toBytes, toBase64, and toDataUri, while inspection methods expose width, height, dimensions, mimeType, and extension. You can branch from a single source image to produce multiple variants, and transformations are deferred until the result is requested. The component ships with GD and Imagick drivers, both built on Intervention Image v4, and allows per-image driver selection and per-driver transformation overrides. Because Intervention Image is a suggested dependency, it must be installed separately with composer require intervention/image.
Other additions include a #[WithoutMiddleware] attribute that excludes middleware from specific controller methods, a configurable Redis session prefix separate from cache keys, Eloquent's incrementEachQuietly and decrementEachQuietly for multi-column updates without events, and enum values as WithoutOverlapping queue keys. The release also brings QueueFake and MailFake test helpers, Storage::assertEmpty(), memory usage on WorkerStopping, collision-free migration timestamps, #[SensitiveParameter] masking, Stringable and Number fixes, and corrections for BelongsToMany::touch(), TrustProxies, and S3 temporary upload URLs. No breaking changes are expected for typical applications.
Readers’ Forum
No contributions yet — open the debate.
Open the discussion
No account or password needed — just enter your e-mail and we’ll send you a one-time sign-in link. First time here? You’re set up automatically.
Your rating will be applied automatically after you sign in.
Check your inbox
We’ve sent a sign-in link to …. Open it on this device — this tab will sign you in automatically.
Waiting for your click …
·