diff --git a/bundle/Templating/Twig/Extension/SiteExtension.php b/bundle/Templating/Twig/Extension/SiteExtension.php
index <HASH>..<HASH> 100644
--- a/bundle/Templating/Twig/Extension/SiteExtension.php
+++ b/bundle/Templating/Twig/Extension/SiteExtension.php
@@ -33,6 +33,10 @@ class SiteExtension extends AbstractExtension
                 'ngsite_image_url',
                 [SiteRuntime::class, 'getImageUrl'],
             ),
+            new TwigFunction(
+                'ngsite_reading_time',
+                [SiteRuntime::class, 'calculateReadingTime'],
+            ),
         ];
     }
 }
diff --git a/bundle/Templating/Twig/Extension/SiteRuntime.php b/bundle/Templating/Twig/Extension/SiteRuntime.php
index <HASH>..<HASH> 100644
--- a/bundle/Templating/Twig/Extension/SiteRuntime.php
+++ b/bundle/Templating/Twig/Extension/SiteRuntime.php
@@ -21,6 +21,8 @@ use function ucwords;
 
 class SiteRuntime
 {
+    private const WORDS_PER_MINUTE = 230;
+
     protected PathHelper $pathHelper;
 
     protected LocaleConverterInterface $localeConverter;
@@ -117,4 +119,12 @@ class SiteRuntime
 
         return '/';
     }
+
+    public function calculateReadingTime(string $text): float
+    {
+        $wordCount = str_word_count($text);
+        $readingTime = floor($wordCount / self::WORDS_PER_MINUTE);
+
+        return $readingTime === false || $readingTime < 1 ? 1 : $readingTime;
+    }
 }
NGSTACK-<I> implement reading time twig function