diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts
index f377d18611..2ab38d97a8 100644
--- a/src/mfm/parser.ts
+++ b/src/mfm/parser.ts
@@ -224,7 +224,7 @@ const mfm = P.createLanguage({
 
 	//#region Italic
 	italic: r =>
-		P.regexp(/(\*|_)([a-zA-Z0-9]+?[\s\S]*?)\1/, 2)
+		P.alt(P.regexp(/<i>([\s\S]+?)<\/i>/, 1), P.regexp(/(\*|_)([a-zA-Z0-9]+?[\s\S]*?)\1/, 2))
 		.map(x => createTree('italic', P.alt(
 			r.bold,
 			r.strike,
diff --git a/test/mfm.ts b/test/mfm.ts
index 44e7d6904e..e9253ebc43 100644
--- a/test/mfm.ts
+++ b/test/mfm.ts
@@ -883,6 +883,15 @@ describe('MFM', () => {
 		});
 
 		describe('italic', () => {
+			it('<i>', () => {
+				const tokens = analyze('<i>foo</i>');
+				assert.deepStrictEqual(tokens, [
+					tree('italic', [
+						text('foo')
+					], {}),
+				]);
+			});
+
 			it('underscore', () => {
 				const tokens = analyze('_foo_');
 				assert.deepStrictEqual(tokens, [