> 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/getting-started/limitations.md).

# Limitations

Soft size guidance, provider plan limits, and request-throttling limits that affect CrossWatch behavior.

CrossWatch is **not** built for very large libraries.

It is a UI-first tool with metadata enrichment, images, and safety checks.

**It is not a bulk-sync engine.** Big libraries create heavy API traffic and large JSON files.

For large libraries, try the [CrossWatch CLI](/crosswatch/command-line-interface-cli.md) for syncs and monitoring.

### Size guidance

These are **approximate** limits.

The tighter limits below are about API pressure and JSON file sizes

CW recommends these rough upper bounds for normal use:

* **Watchlist**: `~2,500`
* **Progress**: `~2,500`
* **History**: `~25,000`
* **Ratings**: `~25,000`
* **Collections**: `~25,000`

{% hint style="info" %}
Synchronization is **memory and CPU intensive** because large datasets need to be loaded, compared and processed to determine what has changed. This includes matching records, calculating differences, resolving conflicts and transforming data between systems.
{% endhint %}

### CPU usage

<table><thead><tr><th width="88.66668701171875">Items</th><th align="right">Idle</th><th align="right">While syncing</th><th align="right">Peak</th><th align="right">First sync</th><th align="right">Later syncs</th></tr></thead><tbody><tr><td>2,500</td><td align="right">1 to 2 %</td><td align="right">~85 %</td><td align="right">~120 %</td><td align="right">~5 s</td><td align="right">~3 s</td></tr><tr><td>25,000</td><td align="right">1 to 2 %</td><td align="right">~85 %</td><td align="right">~120 %</td><td align="right">~85 s</td><td align="right">~26 s</td></tr><tr><td>50,000</td><td align="right">1 to 2 %</td><td align="right">~85 %</td><td align="right">~120 %</td><td align="right">~170 s</td><td align="right">~55 s</td></tr></tbody></table>

Percentages are of a single core, as reported by docker stats. 100% means one core fully busy.\
A sync is single threaded, the percentage stays about the same whatever the library size.\
What grows is how long it runs. Actual sync times depends heavily on the provider adapter, features and options.

The first sync writes everything, later syncs only handle changes. Idle covers the scheduler and the web UI sitting there with no sync running.

### Memory usage

| Items  | Minimum |   Average |   Maximum | Idle after sync |
| ------ | ------: | --------: | --------: | --------------: |
| 2,500  |  88 MiB |  \~95 MiB | \~105 MiB |        \~95 MiB |
| 25,000 |  88 MiB | \~230 MiB | \~330 MiB |       \~225 MiB |
| 50,000 |  88 MiB | \~350 MiB | \~570 MiB |       \~370 MiB |

Measured container memory, excluding Docker Desktop overhead. Minimum is a fresh start before any sync. Maximum is reached while syncing with the Analyzer and dashboard pages open. Memory stops growing after the second sync.

Figures assume one pair. Each extra pair adds its own peak, and real providers add roughly 30 MiB on the first sync for TLS connections and provider sessions.\
\
If you're concerned about CPU or memory usage, use [Container Run Once Mode](/crosswatch/command-line-interface-cli/container-run-once-mode.md) for scheduled syncs. See [Docker setup](/getting-started/installation/docker-setup.md) for container configuration.


---

# 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/getting-started/limitations.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.
