Utils classes are where responsibilities go to hide

A class named Utils, Helpers or Common has no definition, so nothing can be excluded from it. It grows monotonically, it is imported everywhere, and it ends up as the file with the most dependencies and the least clear purpose.

// what it looks like after two years
final class Utils
{
    public static function slugify(string $s): string {}
    public static function vatFor(string $country): float {}
    public static function resizeImage(string $path, int $w): string {}
    public static function isBusinessDay(DateTimeInterface $d): bool {}
}

The tell is the word “and” in any honest description of it. Each of those methods belongs somewhere with a name: Slug, a TaxRates table, an image service, a BusinessCalendar. Being static also makes every one of them unmockable, so the VAT rate is now hard-coded into every test that touches a price. Split it by asking which concept each function is about.