Thursday, October 14, 2004

KDiff3 - a new favorite

Diff and merge tools are critically important to pretty much any real development effort. I've been using WinMerge for a few months, and have been mostly happy with it. It doesn't do three-way merge, but hey, it works.

Then the other day I ran across KDiff3 (which is free, same as WinMerge), and I like it a whole lot better. But some of the features it has that make me like it better than WinMerge:

  • Supports three-way merge

  • Supports directory merges

  • Seems to be faster than WinMerge

  • Will word wrap long lines at your option

But I think the nicest feature is that it shows you not just what lines differ, but actually what's different in those lines. That's really handy for long lines, or for those times where you're diffing an XML file that has no linebreaks in it.

On the downside, it's harder to use and uglier than WinMerge - it's clearly a developer power tool. Since I'm a developer, I don't mind.


  1. Have you checked out Beyond Compare?

  2. I've heard good things about it, but I haven't checked it out. I see there's a free trial, but so far KDiff3's feature/price ratio is winning. ;)

  3. I feel like the ultimate merge utility is Araxis Merge ( But I'm cheap so...KDiff and WinMerge are what I actually use!


  4. Check out SubMerge.. part of TortoiseSVN.. You'll like it :)

  5. Second on beyond compare -- price is insignificant, and features put it in the same category as Araxis (which is ~10x more expensive).

    Best diff tool I've seen, and I think I've looked at > 10 in the past 6 months.

  6. SubMerge, unfortunately, is only a merge tool, not a diff tool.

  7. No manual merge in kdiff3 ?

    No undo in kdiff3 ?

    I am doing 3 way merge, and the

    result is wicked, and I am unable to resolve conflicts in the edit view.

  8. I am vastly impressed with kdiff3

    though I was sad google?best+diff+program

    didn't list this one.

    GUI kdiff3 complements my keyboard oriented

    diff/merge tools (which I use for last 15 years)

    1 Emacs-Ediff-Emerge - because it is fully

    customisable keyboard colors editor etc,

    2 vim -d (on unix with curses, without X).

    3. The gnu/diff (on unix with curses or X!).

    I have tried and left

    behind for one reason or other:

    Winmerge,Araxis,Examdiff, windiff, either

    because of the license of quality.

    I would also recommend tortoiseCVS for home/windows users wanting to keep source

    backups locally.

  9. KDiff3 is really nice soft just because it's one of the ONLY two applications (second is winmerge) that handled my REALLY long lines. But there are problems with both of them, there is no word wrap in WinMerge and its significantly slower, on the other hand KDiff3 doesnt show ANY particular differences in long lines, it just shows that lines are different but no difference in text, loks like a bug to me, 'cuz short lines are showing exact different words. Another problem with KDiff3 that if I try to wrap long lines, it hangs and completely stops responding.

  10. BTW, Winmerge wraps lines, at least if you get a version from the last year or two.

  11. If you like Beyond Compare 2, you will love Beyond Compare 3 Professional!

    BC3Pro is due out later this year and offers 3-way merge support, full-screen edit mode, syntax high-lighting, dynamic recompare, and much much more.

  12. All the non-free ones bring up horrible licensing problems when you support farms and deployed scenarios, and travel and work on many computers.

    So if you really work systems, you have to go with free ones, and sadly, they're just not as good.

  13. Hi everyone,

    I'm using emacs and emacs expects to find (e)diff . Who can give me some hints how to bind kdiff3 to emacs (UNDER WINDOWS)?

    Thank you in advance (!

  14. Have you tried M-x customize? Not sure what customization group it would be under, but if you search a while you might be able to find something.

    Of course, I don't think kdiff3 has a console mode, so the best you're going to be able to do is to launch kdiff3 externally, right? In that case, you may as well just use shell-command or something.

  15. Thank you very much for the link. Kdiff3 is really good.