<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq" -->

---
title: CRDTs vs Real-Time Performance: The Truth | daily.dev
description: A deep technical discussion on CRDTs and the Automerge library covers sweet spots, limitations, and performance evolution. Automerge is ideal for small-group...
canonical: https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: CRDTs vs Real-Time Performance: The Truth | daily.dev
og:description: A deep technical discussion on CRDTs and the Automerge library covers sweet spots, limitations, and performance evolution. Automerge is ideal for small-group...
og:url: https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq
og:image: https://api.daily.dev/og/posts/Devx4b0iQ.png
og:image:alt: CRDTs vs Real-Time Performance: The Truth
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# CRDTs vs Real-Time Performance: The Truth

**[devtools-fm](https://daily.dev/sources/devtoolsfm)** · 12 min read · 0 upvotes · 0 comments

## Summary

A deep technical discussion on CRDTs and the Automerge library covers sweet spots, limitations, and performance evolution. Automerge is ideal for small-group creative collaboration (documents, to-do lists, code editors) but poorly suited for modeling scarcity (bank accounts, ticket reservations) due to its local-first, offline-first design. Early versions stored 300–350 bytes per keystroke; columnar (run-length) encoding reduced overhead to ~38% above raw text size. Automerge 3 introduced native in-memory columnar format and a bloom-filter-based sync protocol (to be replaced in the next version). The library now handles tens of millions of operations comfortably. The conversation also covers Keyhive, an upcoming decentralized auth system where access control travels with the data using public-key cryptography inspired by the Signal protocol and Secure Scuttlebutt, eliminating the need for a central auth server.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=3EHUE96qlEQ>

## Questions this post answers

### What are the main use cases where Automerge and CRDTs are a bad fit?

CRDTs like Automerge are a poor fit for modeling scarcity — situations where only one of something can exist. Examples include bank accounts (an offline ATM should stop dispensing money) and ticket reservations (two users merging offline could both believe they hold the same seat). The local-first principle that no offline server should block your work is fundamentally at odds with enforcing uniqueness constraints.

_Teams choosing between CRDTs and traditional coordination for their data model track these trade-offs on daily.dev._

### How did Automerge reduce its per-keystroke storage overhead so dramatically?

Early Automerge stored 300–350 bytes per keystroke by naively encoding each operation as a JSON-like object with full metadata. Switching to columnar (run-length) encoding groups consecutive operations by the same author, uses auto-incrementing sequence numbers, and collapses consecutive character insertions into a plain string. The result: a 100K-word human-edited document with full provenance and version history fits in ~138K — roughly 38% overhead.

_Developers optimizing collaborative document storage find the latest Automerge benchmarks and release notes on daily.dev._

### What is Keyhive and how does it handle authorization in a local-first system?

Keyhive is an upcoming Automerge project that embeds access control directly into the data rather than relying on a central server. Access rules are written as public keys at data-creation time, using a decentralized extension of the Signal protocol (similar to MLS). A sync server only needs to verify a requester's public key against the certificate hierarchy; it can relay encrypted data it cannot itself read, enabling offline peer-to-peer sharing with no central authority deciding access.

_Developers building offline-capable apps with fine-grained access control follow local-first auth developments on daily.dev._

## Similar posts on daily.dev

- [Convergence is not enough](https://daily.dev/posts/convergence-is-not-enough-v97vq1h8m) · Hacker News · 0 upvotes · 1 comments
- [Building LocalCents: A Local-first Expense Tracker with Automerge CRDTs](https://daily.dev/posts/building-localcents-a-local-first-expense-tracker-with-automerge-crdts-98fcddr48) · ElixirStatus · 9 upvotes · 0 comments

---

Tags: [#distributed-systems](https://daily.dev/tags/distributed-systems), [#local-first](https://daily.dev/tags/local-first)

[View this post on daily.dev](https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"CRDTs vs Real-Time Performance: The Truth","url":"https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq"},"datePublished":"2026-08-08T17:40:03.797Z","dateModified":"2026-08-08T18:06:01.192Z","description":"A deep technical discussion on CRDTs and the Automerge library covers sweet spots, limitations, and performance evolution. Automerge is ideal for small-group...","image":"https://i.ytimg.com/vi/3EHUE96qlEQ/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/3EHUE96qlEQ/sddefault.jpg","isAccessibleForFree":true,"articleSection":"devtools-fm","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"devtools-fm","logo":"https://media.daily.dev/image/upload/s--yvUzE7NR--/f_auto/v1717745371/logos/devtoolsfm","url":"https://daily.dev/sources/devtoolsfm"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"distributed-systems,local-first","timeRequired":"PT12M","video":{"@type":"VideoObject","name":"CRDTs vs Real-Time Performance: The Truth","description":"A deep technical discussion on CRDTs and the Automerge library covers sweet spots, limitations, and performance evolution. Automerge is ideal for small-group...","thumbnailUrl":"https://i.ytimg.com/vi/3EHUE96qlEQ/sddefault.jpg","uploadDate":"2026-08-08T17:40:03.797Z","duration":"PT12M","url":"https://api.daily.dev/r/Devx4b0iQ","embedUrl":"https://www.youtube.com/embed/3EHUE96qlEQ"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"devtools-fm","item":"https://daily.dev/sources/devtoolsfm"},{"@type":"ListItem","position":3,"name":"CRDTs vs Real-Time Performance: The Truth"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/crdts-vs-real-time-performance-the-truth-devx4b0iq#faq","mainEntity":[{"@type":"Question","name":"What are the main use cases where Automerge and CRDTs are a bad fit?","acceptedAnswer":{"@type":"Answer","text":"CRDTs like Automerge are a poor fit for modeling scarcity — situations where only one of something can exist. Examples include bank accounts (an offline ATM should stop dispensing money) and ticket reservations (two users merging offline could both believe they hold the same seat). The local-first principle that no offline server should block your work is fundamentally at odds with enforcing uniqueness constraints. Teams choosing between CRDTs and traditional coordination for their data model track these trade-offs on daily.dev."}},{"@type":"Question","name":"How did Automerge reduce its per-keystroke storage overhead so dramatically?","acceptedAnswer":{"@type":"Answer","text":"Early Automerge stored 300–350 bytes per keystroke by naively encoding each operation as a JSON-like object with full metadata. Switching to columnar (run-length) encoding groups consecutive operations by the same author, uses auto-incrementing sequence numbers, and collapses consecutive character insertions into a plain string. The result: a 100K-word human-edited document with full provenance and version history fits in ~138K — roughly 38% overhead. Developers optimizing collaborative document storage find the latest Automerge benchmarks and release notes on daily.dev."}},{"@type":"Question","name":"What is Keyhive and how does it handle authorization in a local-first system?","acceptedAnswer":{"@type":"Answer","text":"Keyhive is an upcoming Automerge project that embeds access control directly into the data rather than relying on a central server. Access rules are written as public keys at data-creation time, using a decentralized extension of the Signal protocol (similar to MLS). A sync server only needs to verify a requester's public key against the certificate hierarchy; it can relay encrypted data it cannot itself read, enabling offline peer-to-peer sharing with no central authority deciding access. Developers building offline-capable apps with fine-grained access control follow local-first auth developments on daily.dev."}}]}
```

