diff --git a/clippy_lints/src/strings.rs b/clippy_lints/src/strings.rs
index eae464ee249..57f63a600a7 100644
--- a/clippy_lints/src/strings.rs
+++ b/clippy_lints/src/strings.rs
@@ -138,6 +138,9 @@ fn is_add(cx: &LateContext<'_, '_>, src: &Expr, target: &Expr) -> bool {
     }
 }
 
+// Max length a b"foo" string can take
+const MAX_LENGTH_BYTE_STRING_LIT: usize = 32;
+
 declare_lint_pass!(StringLitAsBytes => [STRING_LIT_AS_BYTES]);
 
 impl<'a, 'tcx> LateLintPass<'a, 'tcx> for StringLitAsBytes {
@@ -173,6 +176,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for StringLitAsBytes {
                             );
                         } else if callsite == expanded
                             && lit_content.as_str().chars().all(|c| c.is_ascii())
+                            && lit_content.as_str().len() <= MAX_LENGTH_BYTE_STRING_LIT
                             && !in_macro_or_desugar(args[0].span)
                         {
                             span_lint_and_sugg(
diff --git a/tests/ui/string_lit_as_bytes.fixed b/tests/ui/string_lit_as_bytes.fixed
index a70504656d9..1922478165f 100644
--- a/tests/ui/string_lit_as_bytes.fixed
+++ b/tests/ui/string_lit_as_bytes.fixed
@@ -6,10 +6,11 @@
 fn str_lit_as_bytes() {
     let bs = b"hello there";
 
-    let bs = br###"raw string with three ### in it and some " ""###;
+    let bs = br###"raw string with 3# plus " ""###;
 
-    // no warning, because this cannot be written as a byte string literal:
+    // no warning, because these cannot be written as byte string literals:
     let ubs = "☃".as_bytes();
+    let ubs = "hello there! this is a very long string".as_bytes();
 
     let strify = stringify!(foobar).as_bytes();
 
diff --git a/tests/ui/string_lit_as_bytes.rs b/tests/ui/string_lit_as_bytes.rs
index ea8c712854b..560cbcb657b 100644
--- a/tests/ui/string_lit_as_bytes.rs
+++ b/tests/ui/string_lit_as_bytes.rs
@@ -6,10 +6,11 @@
 fn str_lit_as_bytes() {
     let bs = "hello there".as_bytes();
 
-    let bs = r###"raw string with three ### in it and some " ""###.as_bytes();
+    let bs = r###"raw string with 3# plus " ""###.as_bytes();
 
-    // no warning, because this cannot be written as a byte string literal:
+    // no warning, because these cannot be written as byte string literals:
     let ubs = "☃".as_bytes();
+    let ubs = "hello there! this is a very long string".as_bytes();
 
     let strify = stringify!(foobar).as_bytes();
 
diff --git a/tests/ui/string_lit_as_bytes.stderr b/tests/ui/string_lit_as_bytes.stderr
index f51cd71a6dc..59aaec75bd2 100644
--- a/tests/ui/string_lit_as_bytes.stderr
+++ b/tests/ui/string_lit_as_bytes.stderr
@@ -9,11 +9,11 @@ LL |     let bs = "hello there".as_bytes();
 error: calling `as_bytes()` on a string literal
   --> $DIR/string_lit_as_bytes.rs:9:14
    |
-LL |     let bs = r###"raw string with three ### in it and some " ""###.as_bytes();
-   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br###"raw string with three ### in it and some " ""###`
+LL |     let bs = r###"raw string with 3# plus " ""###.as_bytes();
+   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br###"raw string with 3# plus " ""###`
 
 error: calling `as_bytes()` on `include_str!(..)`
-  --> $DIR/string_lit_as_bytes.rs:16:22
+  --> $DIR/string_lit_as_bytes.rs:17:22
    |
 LL |     let includestr = include_str!("entry.rs").as_bytes();
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `include_bytes!(..)` instead: `include_bytes!("entry.rs")`