Review the diff. Ship the branch.
Stay private.

Diffloupe is a Mac app for reading git changes: side-by-side diffs, the branch log, rendered Markdown and a 3-pane merge window. Your code stays on your Mac.

Private first. Fast and for any language.

Your code never leaves your Mac. Diffloupe reads the repository and draws every diff on your machine, with nothing sent anywhere.

Open source

Every line is on GitHub, so you can check what the app does. No account and no telemetry. Your code never leaves your Mac.

  • Source on GitHub
  • No sign-in
  • No usage data

Super fast

Built in Rust. Every release is tested against these targets.

100 MB
memory with one repository open
100 ms
to diff a 5,000-line file
150 ms
to load 500 commits
50 ms
slowest frame while scrolling 21,000 lines

Any language

Diffs work on every text file. Syntax colours cover the languages you use most.

  • JavaScript
  • HTML
  • CSS
  • Python
  • SQL
  • TypeScript
  • Shell
  • Java
  • Go
  • Rust
  • Kotlin
  • Ruby
  • Markdown
  • JSON
  • YAML
  • TOML
Mac only · Open source

Every change in one window

Pick any two branches: the one you work on and a target to compare it with. Diffloupe shows every change between them, and keeps the view current while you work.

The Changes list with staged, changed and unversioned files

Changes list

Staged, changed and new files in one list that refreshes as you edit.

Changed words highlighted inside a line of Kotlin

Word highlights

Changed words stand out inside each line, and unchanged code folds away.

The branch log with the branch's commits and a merge row

Branch log

Only your branch's own commits, with merges from the target shown as dividers.

The 3-pane merge window with yours, the result and theirs

3-pane merge

Yours, the result and theirs side by side when a merge has conflicts.

Built around the review

Changes, diffs, history, documentation, merges, commits and a terminal. Eight views in one window, all reading the same repository.

Review markdown in rendered preview

  • Rendered side by side or inline
  • Changed words marked in the text
  • Tables, lists and code blocks too
  • The raw text one click away
An API document rendered side by side, with changed table cells, a removed section and a new section marked

Finish a merge in three panes

  • Yours, the result and theirs side by side
  • Take one change or a whole side
  • Every conflicted file in one list
  • Commit the merge when it is done
The 3-pane merge window with yours, the result and theirs

See what your branch changed

  • Compares against the branch of your choice
  • Refreshes live while you edit
  • Staged, changed and unversioned files apart
  • A side-by-side diff with linked changes
The Changes list next to the side-by-side diff of a Kotlin file

Read it in one column or split view

  • One click between side-by-side and unified
  • Word highlights inside changed lines
  • Unchanged lines fold away
  • Jump to the next change or file
The same change in the unified view

Compare with any branch

  • Local and remote branches in one picker
  • The list follows the new target at once
  • The target always shown above the list
The Target picker with local and remote branches

Read the branch's own history

  • Only the commits your branch adds
  • Merges from the target as divider rows
  • Each commit's message and files
  • The diff of a commit, file by file
The branch log with one commit's diff

Commit and push in one step

  • Choose the files one by one
  • Commit, or commit and push
  • Switch branches from the toolbar
  • A clear message when a push is rejected
The commit dialog with files picked and a message

A terminal when you need one

  • Docked under the diff
  • Starts in the repository folder
  • Opens and closes with one shortcut
The terminal docked under the diff, running git status

Made for everyday reviews

Before a pull request

Catch it before review

Walk through every file your branch changes, and fix what you find before anyone else reads it.

After a merge

Finish the merge calmly

See each conflict in three panes, take the right lines, then commit the merge in the same window.

Documentation

Read docs as readers will

Review changes to a README or a guide rendered as a page, with every changed word marked.

Open source

Read every line

The source is on GitHub, so you can see exactly what Diffloupe does with your code.

Pricing

Free to use today.

Download Diffloupe and use every feature at no cost. There is no account to create and no trial that runs out.

Does Diffloupe cost anything?

No. Every feature in this release is free to use.

Do I need an account?

No. Diffloupe has no accounts. Install it and open a repository.

Will there be a paid plan?

Perhaps later, for new features. This page will show it first.

One plan, no account

Free plan

Everything Diffloupe does today, on every Mac you use.

$0today

Download free
  • Side-by-side and unified diffs
  • Branch log and rendered Markdown
  • The 3-pane merge window
  • Commit, push and a terminal
  • No account, open source

Paid features may be added later.

Quick start

Ready in under a minute

  1. 1Paste the command
  2. 2Open Diffloupe
  3. 3Pick a repository
No account needed.
What is Diffloupe?

Diffloupe is a Mac app for reviewing git changes. It shows what your branch changes compared with the branch it will merge into, with side-by-side diffs, the branch log, rendered Markdown and a 3-pane merge window.

What do I need?

A Mac with Apple silicon and macOS 13 or later.

Why install with a Terminal command?

Diffloupe is not notarised by Apple yet, so macOS stops a copy downloaded in a browser at its first start. The command installs it without that dialog, and it checks the download first.

Where does my code go?

Nowhere. Your repositories and settings stay on your Mac. Diffloupe is open source, so you can check every line of what it does.

How do I update?

Diffloupe tells you when a new version is out and installs it with one click, keeping your settings. Running the install command again works too.

How do I remove it?

Choose Uninstall Diffloupe… in the settings menu. It removes the app and the data it stored.

Review your next branch in Diffloupe

Install it with one command, open a repository, and read every change before you merge.