diff --git a/tools/release_noter/release_noter.py b/tools/release_noter/release_noter.py
index 2702764..5ba1e3a 100644
--- a/tools/release_noter/release_noter.py
+++ b/tools/release_noter/release_noter.py
@@ -221,6 +221,7 @@
     for noted_change in submodules[commit.submodule]:
         if noted_change.subject == submodule_change.subject:
             return noted_change
+    escape_these(submodule_change)
     submodule_change.issues = set()
     submodules[commit.submodule].append(submodule_change)
     return submodule_change
@@ -242,12 +243,18 @@
             if noted_commit.subject == commit.subject:
                 return Commit()
     if newly_released(commit.sha1, release):
+        escape_these(commit)
         commits.append(commit)
     else:
         print(f"Previously released: commit {commit.sha1}")
     return Commit()
 
 
+def escape_these(in_change):
+    in_change.subject = in_change.subject.replace("<", "\\<")
+    in_change.subject = in_change.subject.replace(">", "\\>")
+
+
 def print_commits(commits, md):
     md.write("\n## Core Changes\n")
     for commit in commits:
