⌥+⌃AltPlusCtrl

WinMerge Keyboard Shortcuts

WinMerge is Windows-only and free, which shapes both its user base (developers who want a no-cost diff tool integrated with tools like TortoiseSVN or as a Git difftool) and its shortcut set, which is noticeably leaner than commercial competitors like Beyond Compare. Alt+Down and Alt+Up for next/previous difference form the core navigation loop just as they do in most diff tools, since jumping between changes rather than scrolling is universally how diffing tools are meant to be used. WinMerge's copy-between-panes shortcuts are directional (left-to-right, right-to-left) rather than source/target-agnostic, which matters because the app's default layout always treats the left pane as the 'original' and the right as the 'modified' file, a convention that affects which direction feels natural once you're merging changes regularly. Teams that standardize on WinMerge specifically because it's free and Windows-native tend to be smaller shops or individual developers rather than large enterprises, since bigger organizations more often license Beyond Compare for its broader platform support and polish — knowing this positioning helps explain why WinMerge's shortcut set stays deliberately compact rather than trying to match a commercial competitor feature-for-feature.

Difference Navigation

ActionWindowsMacDescription
Go to next differenceAlt+DownMoves to the next detected difference block in the current file comparison, the primary way to step through a diff of any real length.
Go to previous differenceAlt+UpMoves back to the previous difference block, paired with next-difference for stepping through changes in either direction.
Go to first differenceAlt+HomeJumps directly to the first difference in the file, useful for resetting your position after scrolling manually away from the diff sequence.
Toggle word wrapAlt+WToggles whether long lines wrap visually within the pane or extend off-screen requiring horizontal scrolling, useful for files with long unbroken lines like minified code or logs.

Merge Actions

ActionWindowsMacDescription
Copy difference to right paneAlt+RightCopies the currently selected difference from the left pane into the right pane, overwriting the corresponding section in the file treated as the 'modified' side by default.
Copy difference to left paneAlt+LeftCopies the currently selected difference from the right pane into the left pane, the reverse merge direction from copy-to-right.
Save current fileCtrl+SSaves changes made to the focused file pane after merging or editing directly within the diff view.

File Folder Compare

ActionWindowsMacDescription
Open new comparisonCtrl+OOpens the dialog to select two (or three) files or folders to compare, starting a new comparison session.
Refresh comparisonF5Re-runs the comparison from disk, useful when the underlying files have changed since the comparison was first opened, such as after pulling new changes in Git.
Go to next different file (folder compare)Alt+F7In folder comparison mode, jumps to the next file flagged as different between the two compared folders, skipping over identical files entirely.
Collapse all folders (folder compare)Ctrl+Shift+-Collapses every expanded folder in a folder comparison tree back to its top level, useful for resetting an overview after drilling deep into a nested subfolder.

Frequently Asked Questions

Is WinMerge available on Mac or Linux?

No — WinMerge is Windows-only by design, built on Windows-native UI components. Mac and Linux users looking for a similar free open-source tool typically use Meld instead, which serves a comparable purpose but has its own distinct shortcut set.

Can WinMerge be set as the default diff tool for Git?

Yes, WinMerge is commonly configured as Git's difftool and mergetool via .gitconfig, letting you run 'git difftool' from the command line and have WinMerge open automatically with the two versions loaded, which is one of its most common real-world use cases beyond manual ad hoc file comparison.

Why does copy-to-right sometimes copy more than the single line I intended?

WinMerge groups adjacent changed lines into a single difference block, and copy actions operate on the whole highlighted block rather than an individual line unless you've manually adjusted the selection first — if several consecutive lines changed together, they're treated and copied as one unit.

Why does WinMerge show a file as different when it looks identical when I open both manually?

Line-ending differences (CRLF versus LF), trailing whitespace, or encoding mismatches (UTF-8 versus UTF-8 with a byte-order mark) are all invisible to the eye when casually reading a file but register as real byte-level differences to WinMerge's comparison engine. Enabling 'Ignore whitespace' or checking the file's line-ending setting under the compare options usually resolves an unexpectedly-flagged-as-different file that appears visually identical.

Can WinMerge compare three files at once for a three-way merge?

Yes — WinMerge supports three-way file comparison, commonly used for resolving Git merge conflicts where you need to see the common ancestor, your version, and the incoming version simultaneously, and this three-pane mode has its own slightly adjusted set of navigation behaviors compared to the standard two-pane comparison covered primarily here.

Does WinMerge support comparing files inside archives like ZIP without extracting them first?

With the optional 7-Zip plugin installed, yes — WinMerge will open a ZIP or similar archive as though it were just another folder and let you diff its contents directly, but that plugin has to be added separately since archive support isn't part of the base install.

Does WinMerge integrate with any code editors directly, or is it always a standalone window?

WinMerge is typically launched as its own standalone window rather than embedding inside an editor, but it's commonly invoked from other tools — a Git GUI, a version control command, or a file manager's right-click context menu — as an external diff/merge tool, meaning the trigger point varies even though the comparison window itself always opens the same way.

Does WinMerge remember my comparison settings (like ignore whitespace) between sessions?

Most comparison options persist as global preferences saved in WinMerge's own settings rather than resetting with every new comparison, so once you've configured something like whitespace-ignoring for your typical workflow, subsequent comparisons default to that same configuration until you change it again, though certain project-specific filters may need to be reapplied depending on how a particular comparison was originally set up.

Is there a way to export a WinMerge comparison result as a report file?

Yes, WinMerge supports generating an HTML report summarizing a comparison's differences through its File menu, useful for sharing a record of what changed with a reviewer who doesn't have WinMerge installed themselves, though generating this report is a menu-driven action rather than something bound to one of the keyboard shortcuts covered here.