← BACK
Laravel / Validation

Understand Input Trimming & Empty String Normalization

Punyapal Shah • • 1 min read
edit this tip →

Laravel automatically trims request strings and converts empty string inputs to null via default global middleware.

Laravel includes string trimming and empty string conversion middleware in its default global stack. Incoming string inputs are automatically trimmed of whitespace, and empty strings ('') are normalized to null.


Default Behavior

// Incoming request payload: ['name' => '  Punyapal  ', 'bio' => '']

$name = $request->input('name'); // 'Punyapal' (trimmed by TrimStrings)
$bio  = $request->input('bio');  // null (converted from '' by ConvertEmptyStringsToNull)

Customizing Trimming in bootstrap/app.php

To prevent trimming for specific fields (such as passwords or formatted secret keys) or route patterns, configure exclusions via trimStrings in bootstrap/app.php:

// bootstrap/app.php
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Http\Request;

->withMiddleware(function (Middleware $middleware) {
    $middleware->trimStrings(except: [
        'current_password',
        'password',
        'password_confirmation',
        fn (Request $request) => $request->is('webhooks/*'),
    ]);
})

Key Points

  • Automatic Sanitization: Strips accidental leading and trailing whitespace before requests reach controllers.
  • Null Safety: Normalizes empty form inputs ('') into null, ensuring foreign keys and nullable database columns store clean null values.
  • Fluent Exclusions: In Laravel 11+, $middleware->trimStrings(except: ...) accepts field names or route-matching closures.

Related Tips

View all tips →
Laravel Validation

Optimize Large Wildcard Array Validation in Laravel 13.24

Laravel 13.24 introduces dramatic performance optimizations for validating large nested arrays with wildcard rules, reducing validation execution time from 85 seconds to under 1 second.

READ >

// Got a tip in mind? Contributions are always welcome