diff --git a/bundle/Core/Imagine/VariationPathGenerator/WebpFormatVariationPathGenerator.php b/bundle/Core/Imagine/VariationPathGenerator/WebpFormatVariationPathGenerator.php
new file mode 100644
index 00000000..c56e8451
--- /dev/null
+++ b/bundle/Core/Imagine/VariationPathGenerator/WebpFormatVariationPathGenerator.php
@@ -0,0 +1,48 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Netgen\Bundle\SiteBundle\Core\Imagine\VariationPathGenerator;
+
+use Ibexa\Contracts\Core\Variation\VariationPathGenerator;
+use Liip\ImagineBundle\Imagine\Filter\FilterConfiguration;
+
+use function array_key_exists;
+use function pathinfo;
+use function preg_replace;
+
+/**
+ * Decorates VariationPathGenerator with .webp extension if image variation is configured for this format.
+ */
+final class WebpFormatVariationPathGenerator implements VariationPathGenerator
+{
+    private VariationPathGenerator $innerVariationPathGenerator;
+
+    private FilterConfiguration $filterConfiguration;
+
+    public function __construct(
+        VariationPathGenerator $innerVariationPathGenerator,
+        FilterConfiguration $filterConfiguration,
+    ) {
+        $this->innerVariationPathGenerator = $innerVariationPathGenerator;
+        $this->filterConfiguration = $filterConfiguration;
+    }
+
+    public function getVariationPath($originalPath, $filter): string
+    {
+        $variationPath = $this->innerVariationPathGenerator->getVariationPath($originalPath, $filter);
+        $filterConfig = $this->filterConfiguration->get($filter);
+
+        if (!isset($filterConfig['format']) || $filterConfig['format'] !== 'webp') {
+            return $variationPath;
+        }
+
+        $info = pathinfo($originalPath);
+
+        if (!array_key_exists('extension', $info) || $info['extension'] === '') {
+            return $variationPath . '.webp';
+        }
+
+        return preg_replace("/\\.{$info['extension']}$/", '.webp', $variationPath) ?? $variationPath;
+    }
+}
diff --git a/bundle/DependencyInjection/Compiler/WebpFormatVariationPathGeneratorDecoratorPass.php b/bundle/DependencyInjection/Compiler/WebpFormatVariationPathGeneratorDecoratorPass.php
new file mode 100644
index 00000000..2588c14f
--- /dev/null
+++ b/bundle/DependencyInjection/Compiler/WebpFormatVariationPathGeneratorDecoratorPass.php
@@ -0,0 +1,42 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Netgen\Bundle\SiteBundle\DependencyInjection\Compiler;
+
+use Ibexa\Bundle\Core\Imagine\VariationPathGenerator\WebpFormatVariationPathGenerator as BaseWebpFormatVariationPathGenerator;
+use Netgen\Bundle\SiteBundle\Core\Imagine\VariationPathGenerator\WebpFormatVariationPathGenerator;
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+
+use function array_keys;
+use function in_array;
+use function is_array;
+
+class WebpFormatVariationPathGeneratorDecoratorPass implements CompilerPassInterface
+{
+    /**
+     * Overrides default Webp image alias variation path generator decorator to comply with legacy variation URL pattern
+     * We do this only if we have Netgen AdminUI installed (legacy-based administration).
+     */
+    public function process(ContainerBuilder $container): void
+    {
+        if (!$container->hasParameter('kernel.bundles') || !is_array($container->getParameter('kernel.bundles'))) {
+            return;
+        }
+
+        $activatedBundles = array_keys($container->getParameter('kernel.bundles'));
+
+        if (!in_array('NetgenAdminUIBundle', $activatedBundles, true)) {
+            return;
+        }
+
+        if (!$container->has(BaseWebpFormatVariationPathGenerator::class)) {
+            return;
+        }
+
+        $container
+            ->findDefinition(BaseWebpFormatVariationPathGenerator::class)
+            ->setClass(WebpFormatVariationPathGenerator::class);
+    }
+}
diff --git a/bundle/NetgenSiteBundle.php b/bundle/NetgenSiteBundle.php
index 14b1a38c..c8b1a86d 100644
--- a/bundle/NetgenSiteBundle.php
+++ b/bundle/NetgenSiteBundle.php
@@ -20,5 +20,6 @@ public function build(ContainerBuilder $container): void
         $container->addCompilerPass(new Compiler\IoStorageAllowListPass());
         $container->addCompilerPass(new Compiler\PHPStormPass(), PassConfig::TYPE_OPTIMIZE);
         $container->addCompilerPass(new Compiler\DirectDownloadPass());
+        $container->addCompilerPass(new Compiler\WebpFormatVariationPathGeneratorDecoratorPass());
     }
 }