A high-performance CRDT framework for building collaborative applications, providing shared data types — Y.Map, Y.Array, Y.Text, Y.XmlFragment — that merge concurrent changes automatically. Its distinguishing strengths are speed and ecosystem breadth: bindings exist for most major rich-text and code editors (ProseMirror, TipTap, Quill, CodeMirror, Monaco, Slate), and provider modules supply sync over WebSocket, WebRTC, IndexedDB and other channels. y-protocols defines the awareness and sync message formats. Yjs is the most widely deployed CRDT library in production collaborative software, and underpins several applications in this file.
LicensePermissive (MIT) — https://github.com/yjs/yjs; y-protocols and the provider/binding ecosystem also MIT
Dev Status 🟢 Active
OwnerKevin Jahns — independent open-source developer and sole principal maintainer; the yjs GitHub organization hosts the core library and the provider and binding ecosystem
Governing Body None (single principal maintainer, Kevin Jahns; no foundation or governing body. Recent v14 work funded by ZenDiS and DINUM as funders, not governors)
CountryGermany (maintainer based in Germany)
Start Year 2015
StackJavaScript/TypeScript core with a highly optimised binary encoding; Yrs is a Rust port maintained separately, used where native performance or non-JS embedding is needed
FundingIndependent open source with project-specific public funding — recent versioning and track-changes work funded via the BlockNote collaboration by ZenDiS (OpenDesk) and DINUM (La Suite Docs); otherwise sponsorship and consulting
Last Investigated Jul 31, 2026
Topology view
This tool in the centre and the things it is directly related to. Each line names the kind of relationship.
OriginsCollaborative text editing — built to make real-time collaborative editing practical in the browser without operational transformation's server-coordination requirement, then generalised into a broad shared-data-type framework
DatabaseN/A as a store — Yjs is an in-memory CRDT with pluggable persistence; y-indexeddb, y-leveldb and similar providers supply storage
Query LanguageN/A — shared types are accessed as native JavaScript objects; no query language
Data FormatsHighly optimised binary update encoding (document state and incremental updates); y-protocols defines the sync and awareness message formats; shared types Y.Map, Y.Array, Y.Text, Y.XmlFragment and Y.XmlElement
Collaborative Live EditingCollaborative real-time editing (CRDTs) — the library's primary purpose, with an awareness protocol carrying ephemeral presence state such as cursors and selections alongside document updates
Rich Text EditingRich text editing — Y.Text and Y.XmlFragment support formatted content, with official and community bindings for ProseMirror, TipTap, Quill, Slate, CodeMirror and Monaco; v14 adds versioning and track changes
Mobile SupportLibrary-level — runs in mobile browsers and React Native; Yrs enables native mobile embedding
Web SupportYes — the browser is Yjs's primary environment and the source of most of its adoption
Native AppsLibrary-level — via Yrs (Rust) for native embedding, or Electron and similar for JS applications
TermsFree / open source (MIT), described by the project as free forever. No hosted service is required; sync providers may be self-hosted
FundsUnknown — no consolidated figures published; funding is per-engagement rather than a raised total
Based OnYATA (Yet Another Transformation Approach) — the sequence CRDT algorithm underlying Yjs, published by Kevin Jahns; original work rather than a derivative implementation. y-protocols layers sync and awareness on top
P2P ArchitectureTransport-agnostic, provider-based — Yjs itself defines only the merge semantics and update encoding; connectivity comes from separate provider modules supporting WebSocket (client-server or relay), WebRTC (direct peer-to-peer), and BroadcastChannel (same-device tabs). Peers converge regardless of topology
Overlay NetworkStore-wide — sync is scoped to a document shared between connected peers or through a room on a provider; no global network exists
Content AddressingNo — documents are identified by document ID with changes referenced by hash internally, not addressed by content hash externally
Local-FirstLocal-First — full offline editing against a local replica with automatic convergence on reconnection, provided a persistence provider such as y-indexeddb is used
E2EEProvider-dependent — Yjs does not encrypt documents itself; some providers (notably y-webrtc) support encrypting updates with a shared room key, but confidentiality is not a property of the core library
CRDTs LibYjs — this entry is the library. JavaScript/TypeScript core, with Yrs as the Rust port
Byzantine Fault ToleranceNo — CRDT merge is designed for cooperating peers; a malicious peer can inject arbitrary valid-looking changes. Authentication and authorization are left to the surrounding system
SignatureN/A — updates are not signed by the library; authenticity is the embedding application's responsibility
PermissionsN/A — no access-control model in the core; any peer with document access can modify it. Authorization is enforced by the provider or surrounding application
Semantic Web CompatibilityN/A — custom binary/document model with no RDF, JSON-LD or SPARQL layer
Smart ContractN/A — no ledger or contract component
Protocol Stack PositionApplication-layer (built on TCP/IP) — transport-agnostic; sync runs over WebSocket, WebRTC, BroadcastChannel or any duplex channel
Asset / Value EmbeddingNone — no token or value-transfer mechanism
Protocol Maturity / StandardizationDe facto standard, implementation-defined — extremely widely deployed and the update encoding is stable and interoperable across the ecosystem, but the normative definition remains the JavaScript implementation plus y-protocols rather than an independent specification document. Yrs demonstrates the encoding is reimplementable, though it was written by porting rather than from a spec. No standards-body involvement
Relationships
How this tool connects to other tools and organizations, from relationships reviewed by the OpenHaven data steward. They describe how projects connect, not how good they are.