diff --git a/doc/ci/debugging.md b/doc/ci/debugging.md
index ee99716e49918b1efffba4f65da4776855c1154e..e109c30e6586f27a603c01793e86d9c6a83415a2 100644
--- a/doc/ci/debugging.md
+++ b/doc/ci/debugging.md
@@ -98,6 +98,19 @@ between the two.
 The [common `if` clauses for `rules`](jobs/job_control.md#common-if-clauses-for-rules)
 can be very helpful for examples of how to write rules that behave the way you expect.
 
+### Unexpected behavior when `.gitlab-ci.yml` file contains a byte order mark (BOM)
+
+A [UTF-8 Byte-Order Mark (BOM)](https://en.wikipedia.org/wiki/Byte_order_mark) in
+the `.gitlab-ci.yml` file or other included configuration files can lead to incorrect
+pipeline behavior. The byte order mark affects parsing of the file, causing some configuration
+to be ignored - jobs might be missing, and variables could have the wrong values.
+Some text editors could insert a BOM character if configured to do so.
+
+If your pipeline has confusing behavior, you can check for the presence of BOM characters
+with a tool capable of displaying them. The pipeline editor cannot display the characters,
+so you must use an external tool. See [issue 35402](https://gitlab.com/gitlab-org/gitlab/-/issues/354026)
+for more details.
+
 ### A job with the `changes` keyword runs unexpectedly
 
 A common reason a job is added to a pipeline unexpectedly is because the `changes`