diff --git a/src/rustdoc/escape_pass.rs b/src/rustdoc/escape_pass.rs
new file mode 100644
index 00000000000..c9dada9026f
--- /dev/null
+++ b/src/rustdoc/escape_pass.rs
@@ -0,0 +1,18 @@
+#[doc = "Escapes text sequences"];
+
+export mk_pass;
+
+fn mk_pass() -> pass {
+    text_pass::mk_pass("escape", escape)
+}
+
+fn escape(s: str) -> str {
+    str::replace(s, "\\", "\\\\")
+}
+
+#[test]
+fn should_escape_backslashes() {
+    let s = "\\n";
+    let r = escape(s);
+    assert r == "\\\\n";
+}
diff --git a/src/rustdoc/rustdoc.rc b/src/rustdoc/rustdoc.rc
index a4df1c7e8ea..111e813b211 100644
--- a/src/rustdoc/rustdoc.rc
+++ b/src/rustdoc/rustdoc.rc
@@ -38,4 +38,5 @@ mod sort_item_type_pass;
 mod reexport_pass;
 mod par;
 mod page_pass;
-mod sectionalize_pass;
\ No newline at end of file
+mod sectionalize_pass;
+mod escape_pass;
diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs
index 8c50b492053..ce24f9b1aee 100755
--- a/src/rustdoc/rustdoc.rs
+++ b/src/rustdoc/rustdoc.rs
@@ -143,6 +143,7 @@ fn run(config: config::config) {
             tystr_pass::mk_pass(),
             path_pass::mk_pass(),
             attr_pass::mk_pass(),
+            escape_pass::mk_pass(),
             prune_hidden_pass::mk_pass(),
             desc_to_brief_pass::mk_pass(),
             unindent_pass::mk_pass(),