RibbonDiff — User Guide

Step-by-step help for the RibbonDiff macOS app.

👑 marks a Pro feature (available in Pro Trial or Pro Lifetime). Click the crown for details.

RibbonDiff is a side-by-side, editable diff tool for macOS. You can type or paste text, or open files 👑 in two panes, edit either side, and RibbonDiff continuously updates a visual diff once both panes contain content. If either pane is blank, RibbonDiff hides diff highlights until both sides have text again. The editor also behaves much more like a native macOS code editor, with line indent/outdent shortcuts, auto-indent on Return, text-size shortcuts, per-pane Find fields with standard macOS shortcuts, and a subtle current-line highlight. The top toolbar row (Wrap, Swap, and Clear) can also be shown or hidden. A center "ribbon" links corresponding changed blocks, helping you follow what moved or changed as you scroll.

Contents

1. Quick start

  1. Put content in both panes

    • Paste text into Text 1 (left / Original) and Text 2 (right / Modified), or
    • Drag a file from Finder onto the left or right pane 👑.
    • Click inside a pane and choose File → Open… (⌘O) 👑.
    • From Terminal, open two files at once with open -a RibbonDiff old.txt new.txt 👑.
  2. Edit freely

    • Both panes are fully editable. Diff highlighting appears once both panes have content and updates automatically as you type or paste.
    • Press Return to keep the current line's indentation automatically. Use Tab / Shift-Tab or ⌘] / ⌘[ to indent or outdent lines.
    • When both panes first have content, RibbonDiff automatically jumps to the first changed block (if any).
  3. Use the ribbon to stay oriented

    • The middle ribbon visually connects matching change blocks between the left and right panes.

2. Interface at a glance

Toolbar (top controls row)

The top controls row acts as a lightweight toolbar for window-level actions. Choose View → Hide Toolbar / View → Show Toolbar or press ⌥⌘T to hide or reveal this row. RibbonDiff remembers this visibility setting across launches.

Change navigation

Pane header (each side)

Each pane has a header row containing:

Window / tab title: when either pane is opened from a file, the macOS window and tab title follows that file name. If both panes are file-backed, the left file name wins. If neither pane is file-backed, the title falls back to RibbonDiff. When a file is supplying the title, macOS also shows the standard proxy icon and path menu in the title bar.

The editors + ribbon

3. Comparing text (how the diff is shown)

RibbonDiff highlights changes using configurable colors:

Note: Diff highlights (line background tints, change markers, and the center ribbon) appear once both panes have content. Clearing/unbinding either pane hides the diff until both sides have text again. When a comparison first becomes available (for example after opening files or pasting into the second pane), RibbonDiff automatically scrolls to the first changed block (if any).

For large diffs, you can jump directly between changed blocks without manually scrolling.

How to use

What counts as a "change"

Notes

4. Opening files 👑

Drag and drop (Finder → pane)

Overwrite protection RibbonDiff avoids overwriting text accidentally:

If a pane is file-backed and has no unsaved edits, RibbonDiff will offer a Replace confirmation.

Open from the menu (⌘O)

RibbonDiff applies the same overwrite rules as drag-and-drop.

Open from Finder (double-click / "Open With…")

Open from Terminal (CLI)

You can open files from the command line using macOS's built-in open command:

open -a RibbonDiff /path/to/old.txt /path/to/new.txt

If your file paths contain spaces, quote them:

open -a "RibbonDiff" "Old File.txt" "New File.txt"

Tab/window behavior (overwrite protection)

Advanced: reuse modes (CLI wrappers)

Some CLI wrappers can request a different reuse policy when opening files. RibbonDiff reads this policy from an optional control file included in the same open request.

Note: When using Reuse or Force Reuse, opening 3+ files (multiple pairs) may reuse the same tab repeatedly. In that case, the last pair wins. Use Automatic if you want each pair to open in its own new tab/window.

Control file requirements

Example (create a control file, then open two files):

echo '{"mode":"reuse","version":1}' > /tmp/.ribbondiff-cli--control.json
open -a RibbonDiff /tmp/.ribbondiff-cli--control.json old.txt new.txt

5. Saving files 👑

RibbonDiff saves per pane (whichever pane is active).

Save (⌘S)

Save As (⇧⌘S)

Line endings and encoding

RibbonDiff focuses the diff on text content, not file storage details. Line endings and character encodings are normalized internally, so two files can compare as identical even if they use different line-ending styles or different Unicode encodings.

Line endings

Text encoding

Supported encodings

These options appear in the per-pane Encoding badge menu:

Category Encodings
Unicode UTF-8, UTF-8 (with BOM), UTF-16, UTF-16 Little Endian, UTF-16 Big Endian, UTF-32, UTF-32 Little Endian, UTF-32 Big Endian
Japanese Shift_JIS, EUC-JP, ISO-2022-JP, x-mac-japanese
Chinese GB18030, GBK, GB2312, HZ-GB-2312, Big5, Big5-HKSCS
Korean EUC-KR, CP949
Western Windows-1252, MacRoman, Windows-1250 (Central European), Windows-1251 (Cyrillic), Windows-1253 (Greek), Windows-1254 (Turkish), Windows-1257 (Baltic), ISO-8859-1 (Latin-1), US-ASCII
Middle Eastern Windows-1255 (Hebrew), Windows-1256 (Arabic)
Southeast Asian Windows-874 (Thai), Windows-1258 (Vietnamese)

Tip: When you're comparing clipboard text (not a file), the pane defaults are typically LF + UTF-8 for saving.

6. Unsaved changes behavior

RibbonDiff tracks unsaved edits independently for each pane.

Note: The close prompt is intentionally "no-save" — save the relevant pane(s) first using ⌘S or ⇧⌘S 👑.

7. Find (search) in either pane

RibbonDiff uses per-pane Find fields in the header row, while still honoring the standard macOS Find shortcuts for the active pane.

Basic use

  1. Click in the left or right editor to make that pane active.
  2. Press ⌘F to focus that pane's Find field in the header. If text is selected in the editor, RibbonDiff uses that selection as the query. Otherwise, if that pane's Find field is empty, RibbonDiff can prefill it from the standard macOS shared Find string.
  3. Type your query. Case-insensitive matches are highlighted as you type.
  4. Press Return or ⌘G for the next match, and ⇧Return or ⇧⌘G for the previous match. Find navigation wraps around when you reach the end or beginning of the pane.

Keyboard shortcuts

Notes

8. Syntax highlighting

RibbonDiff includes built-in syntax highlighting and automatic language detection.

Auto vs manual

Supported languages (badge)

Markdown fenced code blocks

In Preferences you can choose whether Markdown fenced blocks (``` / ~~~) are highlighted using the language tag after the fence (e.g. ```swift).

9. Toolbar, word wrap and line numbers

Toolbar visibility

Word wrap

Important: Wrap is per window, not global. Preferences only set the default for newly opened editor windows.

Line numbers

Enable/disable line numbers independently for:

You can change this in Preferences.

Font, font size and line spacing

RibbonDiff lets you adjust the editor typography so long comparisons are easier on your eyes.

Editing behavior

10. Preferences and themes

Open Preferences from the app menu:

General

Appearance

System backgrounds automatically follow macOS Light/Dark Mode.

Syntax

Changes are saved automatically.

Theme

RibbonDiff supports:

Theme list tips:

Actions you may see:

Pro

If you previously purchased RibbonDiff as a paid App Store download, it should automatically unlock Pro Lifetime on the same Apple ID. If it doesn't, open RibbonDiff → Settings… → Pro and use Restore Purchases.

11. Importing and exporting themes (advanced)

Themes can be imported/exported as JSON.

Import a theme

  1. Open Preferences → Theme
  2. Click Import Theme…
  3. Choose a theme .json file

The imported theme is added to User Themes and applied.

Export a theme

  1. Open Preferences → Theme
  2. Click Export Theme…
  3. Enter a theme name (stored in the JSON as Name)
  4. Choose a save location

The Export button saves the current theme's settings to a JSON file.

The exported JSON includes:

12. Keyboard shortcuts reference

Action Shortcut Notes
New Tab ⌘T Creates a new tabbed comparison window
Open… 👑 ⌘O Opens into the active pane
Save 👑 ⌘S Saves the active pane
Save As… 👑 ⇧⌘S Saves the active pane to a new file
Close Window/Tab ⌘W Prompts if there are unsaved changes
Increase Text Size ⌘= Increases the shared editor text size for both panes (same key as ⌘+ on many keyboards)
Decrease Text Size ⌘- Decreases the shared editor text size for both panes
Reset Text Size ⌘0 Resets the shared editor text size
Find… ⌘F Focuses the active pane's Find field
Find Next ⌘G Active pane
Find Previous ⇧⌘G Active pane
Use Selection for Find ⌘E Copies the selected text from the active editor into the active pane's Find field
Indent Tab Indents the current line or selected lines; with no line selection, inserts one indent level
Outdent Shift-Tab Outdents the current line or selected lines
Indent Selection ⌘] Indents the current line or selected lines
Outdent Selection ⌘[ Outdents the current line or selected lines
Previous Change ⌥⌘↑ Jump to the previous changed block (active pane)
Next Change ⌥⌘↓ Jump to the next changed block (active pane)
Show/Hide Toolbar ⌥⌘T View menu; toggles the top controls row (Wrap, Swap, Clear) and remembers the setting across launches
Toggle Wrap ⌃⌘W View menu, window-local
Swap Panes ⌃⌘S View menu; swaps both panes and their file bindings
Clear Both Panes ⌃⌘K Edit menu; clears both panes

Tip: Pressing Return in an editor continues the current line's indentation automatically.

13. Troubleshooting

"Can't open file"

Common reasons:

Fix:

Opening from Finder/Terminal created a new tab

When you open files from Finder (double-click / Open With…) or from Terminal (open -a RibbonDiff …), RibbonDiff protects your current comparison.

Text looks garbled (wrong encoding)

If a file opens with unreadable characters (mojibake), it was likely decoded with the wrong encoding.

Wrap / Swap / Clear disappeared

The top toolbar row may be hidden.

"Theme Import Failed"

Syntax highlighting looks disabled

RibbonDiff may skip syntax highlighting for very large texts to keep editing responsive.

14. Pro access (trial and lifetime)

RibbonDiff is free to download and use in Limited mode. File workflows are available with a one-time Pro Lifetime unlock, or a one-time free Pro Trial (7 days). 👑 marks Pro features throughout this guide.

Feature Limited (Free) Pro Trial (7 days) Pro Lifetime
Compare typed / pasted text
Open files from disk
Drag & drop files
Save pane contents to disk (⌘S / ⇧⌘S)
Restore Purchases

7-day Pro Trial: The trial starts when you tap "Start 7-Day Pro Trial" and lasts 7 days. When it ends, RibbonDiff returns to Limited mode (file open/drag-drop/save are disabled) unless you unlock Pro Lifetime. There are no automatic charges when the trial ends.

Start the Pro Trial

  1. Open RibbonDiff → Settings… and select Pro.
  2. Click Start 7-Day Pro Trial.

Unlock Pro Lifetime

Open RibbonDiff → Settings… → Pro and click Unlock Pro Lifetime. This is a one-time purchase tied to your Apple ID.

Restore purchases

If you previously purchased Pro Lifetime (or bought RibbonDiff when it was a paid App Store app), restore access from Settings → Pro → Restore Purchases. Make sure you're signed into the same Apple ID that made the original purchase.

Legacy paid customers

If you purchased RibbonDiff when it was a paid App Store download, the app automatically migrates you to Pro Lifetime on the same Apple ID. If it doesn't show as unlocked right away, use Restore Purchases.

Last updated: 2026-03-03