> For the complete documentation index, see [llms.txt](https://wiki.crosswatch.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.crosswatch.app/crosswatch/tools/captures/capture-compare.md).

# Capture Compare

Capture Compare is a **read-only diff** between two capture files from the **same provider**.

It helps you answer: “What changed between capture A and capture B?”

It does **not** decide what should sync.

{% hint style="info" %}
Captures are stored under `/config/snapshots/` (legacy folder name). Capture Compare never writes to your providers.
{% endhint %}

### What you can compare

You pick:

* **Capture A** (baseline)
* **Capture B** (the one you’re comparing against)

Both captures should be from the **same provider**.

Capture Compare supports:

* **single-feature captures**
  * Watchlist
  * Ratings
  * History
  * Progress
* **All** capture bundles
  * one set that contains multiple features in one restore point

For the cleanest results, compare like-for-like:

* feature vs the same feature
* **All** bundle vs **All** bundle

### How to run a diff (UI)

{% stepper %}
{% step %}

### Open Compare

Open **Tools → Captures**, then open the **Compare** panel.
{% endstep %}

{% step %}

### Pick two captures

Pick Capture **A** and Capture **B**.

Keep the provider the same.

Keep the feature, or bundle type, the same when you can.
{% endstep %}

{% step %}

### Run Compare

Click **Compare** to load results.

Use the filters to focus on Added/Removed/Updated.
{% endstep %}
{% endstepper %}

### How to read results

Compare groups items into four buckets:

* **Added**: in B, not in A
* **Removed**: in A, not in B
* **Updated**: same key, but fields changed
* **Unchanged**: same key, identical payload

Updated items can be expanded to show field-level changes.

{% hint style="warning" %}
If you diff captures from different features, everything can look “added/removed”. That’s expected.
{% endhint %}

{% hint style="info" %}
Compare is intended for **same-provider diffs**. If you compare different providers, results won’t be meaningful.
{% endhint %}

### Limits and truncation

The UI may cap how many rows it shows per section.

If you expect huge diffs, tighten your comparison first.

Try same provider, same feature or same bundle type, close timestamps, and a short label.

<details>

<summary>API reference (optional)</summary>

#### Endpoint

`GET /api/snapshots/diff`

#### Query params

* `a` (required): capture A path (relative under `/config/snapshots`)
* `b` (required): capture B path (relative under `/config/snapshots`)
* `limit` (optional, default `200`, min `1`, max `2000`): max items returned per section
* `max_changes` (optional, default `25`, min `1`, max `200`): max field-level changes per updated item

</details>

<details>

<summary>How the diff works (high level)</summary>

Compare is intentionally simple.

It loads both capture JSON files, then compares:

* the set of item keys in A vs B
* the full item payload for keys present in both

That produces:

* Added = keys in B but not A
* Removed = keys in A but not B
* Updated = key in both, payload differs
* Unchanged = key in both, payload identical

{% hint style="info" %}
This is deterministic. It does not do ID mapping or fuzzy matching.
{% endhint %}

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.crosswatch.app/crosswatch/tools/captures/capture-compare.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
