I noticed the previous accepted answer's link is broken, and when I looked, I did not find they are the same thing, although very similar. Here is the documentation outlining catchup - https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dag-run.html#catchup with backfill being defined right below.
Backfill is a manual operation you can run in the command line while catchup is an attribute you can set directly on the DAG. I also can't verify this in the documentation, but backfill will run in parallel to your other DAGs, while I believe catchup will be executed by the scheduler and will be part of the normal DAG process.
Possibly a little pedantic, but adding backfill=False on a DAG won't work, and running
airflow dags catchup \
--start-date START_DATE \
--end-date END_DATE \
dag_id
won't work. When I first read the current accepted answer, I personally thought that catchup was a deprecated keyword to mean same thing as backfill, which is not the case.