diff --git a/src/internal/parser.pegjs b/src/internal/parser.pegjs
index fda5a19b821d77a7f3060ef6464a593f47f05592..cfe67788480772548db51a44d32765183aef9b35 100644
--- a/src/internal/parser.pegjs
+++ b/src/internal/parser.pegjs
@@ -355,7 +355,7 @@ hashtagBracketPair
 	/ "「" hashtagContent* "」"
 
 hashtagChar
-	= ![  \t.,!?'"#:\/\[\]【】()「」] CHAR
+	= ![  \t.,!?'"#:\/\[\]【】()「」<>] CHAR
 
 // inline: URL
 
diff --git a/test/parser.ts b/test/parser.ts
index 88d62cd8dab9953b082ab72e3e8261c4aea0270c..72bef4c4eaa78e200fba8127f23b78bdc36c254d 100644
--- a/test/parser.ts
+++ b/test/parser.ts
@@ -716,6 +716,12 @@ hoge`;
 			assert.deepStrictEqual(mfm.parse(input), output);
 		});
 
+		it('ignore angle bracket', () => {
+			const input = '#foo<bar>';
+			const output = [HASHTAG('foo'), TEXT('<bar>')];
+			assert.deepStrictEqual(mfm.parse(input), output);
+		});
+
 		it('allow including number', () => {
 			const input = '#foo123';
 			const output = [HASHTAG('foo123')];