diff --git a/src/matrixmessageprocessor.ts b/src/matrixmessageprocessor.ts
index 562d20a30729cb5281bce536d4d87d4eca1ff434..e47f3efccf226cd8a6412ff1f903aa5af8587477 100644
--- a/src/matrixmessageprocessor.ts
+++ b/src/matrixmessageprocessor.ts
@@ -94,7 +94,7 @@ export class MatrixMessageProcessor {
                 msg = msg.replace(/@room/g, "@here");
             }
         }
-        const escapeChars = ["\\", "*", "_", "~", "`"];
+        const escapeChars = ["\\", "*", "_", "~", "`", "|"];
         msg = msg.split(" ").map((s) => {
             if (s.match(/^https?:\/\//)) {
                 return s;
diff --git a/test/test_matrixmessageprocessor.ts b/test/test_matrixmessageprocessor.ts
index a823c651c285be8f3407472d442a31fa29be22ca..66fced8ee3fe2e238c8ea451dd0aa92924981316 100644
--- a/test/test_matrixmessageprocessor.ts
+++ b/test/test_matrixmessageprocessor.ts
@@ -98,6 +98,13 @@ describe("MatrixMessageProcessor", () => {
             const result = await mp.FormatMessage(msg, guild as any);
             expect(result).is.equal("wow \\\\\\*this\\\\\\* is cool");
         });
+        it("escapes ALL the stuff", async () => {
+            const mp = new MatrixMessageProcessor(bot);
+            const guild = new MockGuild("1234");
+            const msg = getPlainMessage("\\ * _ ~ ` |");
+            const result = await mp.FormatMessage(msg, guild as any);
+            expect(result).is.equal("\\\\ \\* \\_ \\~ \\` \\|");
+        });
     });
     describe("FormatMessage / formatted_body / simple", () => {
         it("leaves blank stuff untouched", async () => {