diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,8 @@
 # trace-embrace changelog
 
+## Version 1.0.4 2025-03-11
+  * bugfix: multiple traces on the same line
+
 ## Version 1.0.3 2025-03-07
   * bugfix: config yaml change didn't trigger rebuild
   * fix link to tw\'
diff --git a/src/Debug/TraceEmbrace/Internal/TH.hs b/src/Debug/TraceEmbrace/Internal/TH.hs
--- a/src/Debug/TraceEmbrace/Internal/TH.hs
+++ b/src/Debug/TraceEmbrace/Internal/TH.hs
@@ -209,8 +209,10 @@
       [] -> []
 
 flagVarName :: Q Name
-flagVarName =
-  newName =<< ("_trace_if_flag_on_line_" <>) . show . fst . loc_start <$> location
+flagVarName = do
+  l <- location
+  let (line, col) = loc_start l
+  newName $ "_trace_if_flag_on_line_" <> show line <> "_on_col_"  <> show col
 
 getModTraceFlagVar :: Q Name
 getModTraceFlagVar = do
diff --git a/test/Debug/TraceEmbrace/Test/TraceEmbrace/TH.hs b/test/Debug/TraceEmbrace/Test/TraceEmbrace/TH.hs
--- a/test/Debug/TraceEmbrace/Test/TraceEmbrace/TH.hs
+++ b/test/Debug/TraceEmbrace/Test/TraceEmbrace/TH.hs
@@ -14,6 +14,13 @@
       where
         foo = $(tr "-foo trace/x")
 
+unit_tr_twice_on_same_line :: IO ()
+unit_tr_twice_on_same_line = withPrefixEnvVar thresholdConfig "" $ go one
+  where
+    go x = x @=? foo x
+      where
+        foo = $(tr "-foo trace/x") . $(tr "-foo trace/x")
+
 unit_tr_info :: IO ()
 unit_tr_info = withPrefixEnvVar thresholdConfig "" $ go one
   where
diff --git a/trace-embrace.cabal b/trace-embrace.cabal
--- a/trace-embrace.cabal
+++ b/trace-embrace.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.0
 name:            trace-embrace
-version:         1.0.3
+version:         1.0.4
 license:         BSD-3-Clause
 license-file:    LICENSE
 category:        Development
