| Automerge | |
|---|---|
| Original authors | Martin Kleppmann, Orion Henry, Peter van Hardenberg, Roshan Choxi, Adam Wiggins |
| Developers | Ink & Switch and contributors |
| Release | 2017 |
| Stable release | 3.5.0
/ September 16, 2026 |
| Written in | Rust (since 2.0); JavaScript (earlier versions) |
| Type | Conflict-free replicated data type library |
| License | MIT License |
| Website | automerge |
Automerge is a free and open-source software library for building collaborative applications. It implements a conflict-free replicated data type (CRDT) for JSON-like documents: copies of a document can be edited concurrently on different devices and later merged automatically, without a central server.
Automerge was created in 2017 by Martin Kleppmann, Orion Henry, Peter van Hardenberg, Roshan Choxi and Adam Wiggins, with copyright held by the research lab Ink & Switch and the University of Cambridge. It is based on research by Kleppmann and Alastair Beresford on a JSON CRDT, although the algorithm differs from the one in their paper in its details. Automerge was one of the technologies discussed in the 2019 paper "Local-first software" by Kleppmann, Wiggins, van Hardenberg and Mark McGranaghan. The paper proposed software that keeps the primary copy of data on users' own devices, with CRDTs as a basis for collaboration.
Version 2.0, released in January 2023, was a ground-up rewrite with a core written in Rust, which is used from JavaScript through WebAssembly and from other languages through a C interface. The project reported that it was considerably faster and used less memory than version 1. Version 3.0, released in July 2025, reduced memory usage by more than a factor of ten while keeping the same file format.
An Automerge document can contain nested maps and lists, text and numeric counters. The library keeps the full history of changes to a document, and stores documents in a compressed columnar format. A sync protocol exchanges changes between copies of a document independently of the network transport, so documents can be synchronised peer-to-peer, through a server, or as files. Besides Rust and JavaScript, ports or bindings exist for languages including Swift, Python, C and Java.
The collaborative editor of Quarto 2 is built on Automerge.