I conjecture that `ediff-diff-options' and `ediff-diff3-options' are not implemented correctly on Windows systems for the following reasons: (1) Trying to customize these options gives something like ediff-diff-options: Hide Value --binary State: CHANGED outside Customize; operating on it here may be unreliable. before I even tried to do anything here. FWIW (set symb (concat mandatory-option val)) in `ediff-reset-diff-options' should become (set-default symb (concat mandatory-option val)) (2) When customizing `ediff-diff-options', `ediff-reset-diff-options' will, via `ediff-diff-mandatory-option', always prepend one "--binary" to the actual value. Eventually, this will prepend as many "--binary" to the option's value as the option has been customized. (3) "--binary" is not supported by diff3 (at least not by version 2.8.7 which is the one I'm using). According to the diffutils manual: If diff3 thinks that any of the files it is comparing is binary (a non-text file), it normally reports an error, because such comparisons are usually not useful. Hence I don't understand why this should be set at all. Does anyone have a diff3 supporting the "--binary" option? (4) Although "--binary" is not supported on my system `ediff-test-utility' still returns 0 in the diff3 case. I suspect that this test is rather useless on Windows systems in its current form. In my opinion most measurements are much too drastic to deal with the trivial problem that some Windows users don't set "--binary" for diff. I'd therefore propose to simplify the code as in the attached patch.