プログラミング言語などを形式的に定義するときに使うメタ言語(言語を記述する言語)のひとつ。ALGOL(ALGOL 60)の文法を定義(記述)するために作られた。
殆どのプログラミング言語は、BNFで記述されている。
さらに、BNFで記述された言語仕様書を元に、その言語の構文解析プログラム(パーサ)を自動的に作成するソフトも存在する(yacc、GNU Bisonなど)。