diff --git a/src/doc.rs b/src/doc.rs
index 00c3e4398ea..cf32c1731fa 100644
--- a/src/doc.rs
+++ b/src/doc.rs
@@ -126,6 +126,7 @@ pub fn check_doc(cx: &EarlyContext, valid_idents: &[String], doc: &str, span: Sp
         span
     }
 
+    let mut new_line = true;
     let len = doc.len();
     let mut chars = doc.char_indices().peekable();
     let mut current_word_begin = 0;
@@ -133,6 +134,9 @@ pub fn check_doc(cx: &EarlyContext, valid_idents: &[String], doc: &str, span: Sp
         match chars.next() {
             Some((_, c)) => {
                 match c {
+                    '#' if new_line => { // don’t warn on titles
+                        current_word_begin = jump_to!(chars, '\n', len);
+                    }
                     '`' => {
                         current_word_begin = jump_to!(chars, '`', len);
                     }
@@ -182,6 +186,8 @@ pub fn check_doc(cx: &EarlyContext, valid_idents: &[String], doc: &str, span: Sp
                         current_word_begin = jump_to!(@next_char, chars, len);
                     }
                 }
+
+                new_line = c == '\n' || (new_line && c.is_whitespace());
             }
             None => break,
         }
diff --git a/tests/compile-fail/doc.rs b/tests/compile-fail/doc.rs
index 0c8d1d50532..eca9d79354c 100755
--- a/tests/compile-fail/doc.rs
+++ b/tests/compile-fail/doc.rs
@@ -108,6 +108,18 @@ fn main() {
     test_units();
 }
 
+/// ## CamelCaseThing
+/// Talks about `CamelCaseThing`. Titles should be ignored, see issue #897.
+///
+/// # CamelCaseThing
+///
+/// Not a title #897 CamelCaseThing
+//~^ ERROR: you should put `CamelCaseThing` between ticks
+/// be_sure_we_got_to_the_end_of_it
+//~^ ERROR: you should put `be_sure_we_got_to_the_end_of_it` between ticks
+fn issue897() {
+}
+
 /// I am confused by brackets? (`x_y`)
 /// I am confused by brackets? (foo `x_y`)
 /// I am confused by brackets? (`x_y` foo)