diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Change Log for gemoire
 
+## 1.0.1 (February 1, 2025)
+
+- Hotfix for recursive generations in Gemoire.Converter.
+
 ## 1.0.0 (February 1, 2025)
 
 - Add gemtext converter modules.
diff --git a/gemoire.cabal b/gemoire.cabal
--- a/gemoire.cabal
+++ b/gemoire.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.2
 name:            gemoire
-version:         1.0.0
+version:         1.0.1
 category:        Gemini
 homepage:        https://codeberg.org/sena/gemoire
 bug-reports:     https://codeberg.org/sena/gemoire/issues
diff --git a/src/Gemoire/Converter.hs b/src/Gemoire/Converter.hs
--- a/src/Gemoire/Converter.hs
+++ b/src/Gemoire/Converter.hs
@@ -56,7 +56,15 @@
 import qualified Data.Text.IO as TIO
 import System.Directory (copyFile, createDirectoryIfMissing)
 import System.Directory.Extra (listFilesRecursive)
-import System.FilePath (makeRelative, takeBaseName, takeExtension, takeFileName, (-<.>), (</>))
+import System.FilePath
+    ( makeRelative
+    , takeBaseName
+    , takeDirectory
+    , takeExtension
+    , takeFileName
+    , (-<.>)
+    , (</>)
+    )
 import Text.Gemini (GemItem (..))
 import qualified Text.Gemini as G
 import Text.Regex (matchRegex, mkRegex, mkRegexWithOpts, subRegex)
@@ -88,21 +96,21 @@
                 . (\inp -> (inp, output </> makeRelative input inp))
             )
             <$> listFilesRecursive input
-    createDirectoryIfMissing True output
     mapM_
         ( \(inp, out) ->
             let rules = filterRules (takeFileName inp) rewriteRules
-             in if takeExtension inp == ".gmi"
-                    then
-                        TIO.writeFile out
-                            . convertDocument
-                                (singleton "fname" (T.pack . takeBaseName $ inp) <> conversionOverrides)
-                                (config{rewriteRules = rules})
-                            =<< TIO.readFile inp
-                    else
-                        if not $ null rules
-                            then TIO.writeFile out . rewriteText rules =<< TIO.readFile inp
-                            else copyFile inp out
+             in createDirectoryIfMissing True (takeDirectory out)
+                    >> if takeExtension inp == ".gmi"
+                        then
+                            TIO.writeFile out
+                                . convertDocument
+                                    (singleton "fname" (T.pack . takeBaseName $ inp) <> conversionOverrides)
+                                    (config{rewriteRules = rules})
+                                =<< TIO.readFile inp
+                        else
+                            if not $ null rules
+                                then TIO.writeFile out . rewriteText rules =<< TIO.readFile inp
+                                else copyFile inp out
         )
         files
 
