Meld 3-Way Merge for VS Code
This extension brings the power of Meld's intuitive frontend diff viewer and advanced auto-merge heuristics directly into Visual Studio Code. If you're looking for a dedicated 3-way merge tool and superior Git merge conflict resolution, this Visual Studio Code Git extension provides an unmatched developer experience. Table of Contents
⚠️ Alpha Release NoticeThis extension is currently in alpha. While the core Meld algorithms have been carefully ported and tested, the VS Code UI integration is under active development. Features may be incomplete, behavior may change without notice, and bugs are expected. Please review your merges carefully and report any bugs you find! Use at your own discretion. InstallationAs this extension is currently in Alpha, it may not be published to the public VS Code Marketplace. Currently, you must download the
Why Use This?VS Code's built-in Git conflict resolution is excellent, but its standard interface can sometimes be visually noisy and challenging to navigate during complex merges:
Even the improved built-in 3-way view can still feel less intuitive than dedicated desktop tools like Meld:
Meld for VS Code provides a cleaner, dedicated 3-way merge editor modeled right after the Meld application. Beyond the improved UI, it brings Meld's highly-tuned conflict resolution algorithm that is capable of:
The end result? An intuitive merge experience that handles the tedious work for you.
Features🔀 3-Way Merge EditorA seamless, visually distinct 3-way merge interface opening directly inside your editor for any conflicted files. See local, base, and remote versions side-by-side with clear connections to the merged output. ✨ Auto-Merge Conflicted FilesManually trigger auto-merge at any time via the Command Palette: "Meld: Auto-Merge Current File". This extracts the LOCAL, BASE, and REMOTE versions via Git and runs them through the Meld 🛠️ Quality of Life Git Tools (Source Control UI)The extension contributes a Meld Conflicted Files view to the native Source Control (SCM) panel, displaying all current conflicts. Each file has inline actions:
How It WorksTo ensure maximum performance and zero external dependencies, we have ported Meld's core Python logic to pure TypeScript. This includes:
The logic runs entirely within the VS Code extension host process—no Python installation or background daemons required. How to Use the ExtensionFrom the Source Control Tab
From the Command Palette (
|
| Setting | Default | Description |
|---|---|---|
meld.mergeEditor.debounceDelay |
300 |
Delay in milliseconds before recomputing diff highlights while typing. |
meld.mergeEditor.syntaxHighlighting |
true |
Enable or disable syntax highlighting in the merge editor. |
Theme Colors
All diff highlight colors are fully themeable via the workbench colorCustomizations setting in your settings.json:
| Color Token | Default | Description |
|---|---|---|
meldMerge.diffInsertBackground |
#00c80026 |
Background for inserted lines. |
meldMerge.diffDeleteBackground |
#00c80026 |
Background for deleted lines. |
meldMerge.diffReplaceBackground |
#0064ff26 |
Background for replaced lines. |
meldMerge.diffReplaceInlineBackground |
#0064ff59 |
Highlight for inline changed text within replaced lines. |
meldMerge.diffConflictBackground |
#ff000026 |
Background for unresolved conflict lines. |
meldMerge.diffCurtainInsertFill |
#00c80033 |
Fill color for insert regions in the connecting curtain SVG. |
meldMerge.diffCurtainInsertStroke |
#00c80080 |
Stroke color for insert regions in the connecting curtain SVG. |
meldMerge.diffCurtainReplaceFill |
#0064ff33 |
Fill color for replace regions in the connecting curtain SVG. |
meldMerge.diffCurtainReplaceStroke |
#0064ff80 |
Stroke color for replace regions in the connecting curtain SVG. |
meldMerge.diffCurtainConflictFill |
#ff000033 |
Fill color for conflict regions in the connecting curtain SVG. |
meldMerge.diffCurtainConflictStroke |
#ff000080 |
Stroke color for conflict regions in the connecting curtain SVG. |
Example settings.json snippet to tweak colors:
"workbench.colorCustomizations": {
"meldMerge.diffConflictBackground": "#ff00001a",
"meldMerge.diffInsertBackground": "#00ff001a"
}
Developer Setup
To run this extension locally:
- Clone the repository and open the root folder in VS Code.
- Install dependencies:
npm install - Compile the extension:
npm run compile - Launch: Press
F5to open an "Extension Development Host" window with the extension loaded.
Testing & Packaging
We use Jest to verify the TypeScript port against Meld's original Python logic:
npm test # run unit tests
npm run lint # lint and format check
npm run compile # type-check
npx vsce package # build the .vsix
Credits
This VS Code extension is authored and maintained by Pyarelal Knowles, 2026.
It is a port of the Meld visual diff and merge tool, originally written in Python. All credit for the core algorithm design, advanced diffing heuristics, and 3-way merge logic and fantastic UI belongs to the original Meld developers. This extension aims to bring their hard work and excellent merge experience into the VS Code ecosystem.
License
GPL Version 2; see LICENSE.
Feedback & Support
If you encounter a bug, have a feature request, or just want to share feedback, please file an issue on our GitHub repository at:
https://github.com/pknowles/meld/issues
Boost developer productivity with an intuitive layout, clear connections, and automated resolutions that standard git tools miss.
Standard VS Code 3-way view.
Improved VS Code 3-way view.
Conflict resolution made intuitive – Meld resolves conflicts automatically when VS Code cannot.