univer is a free, open source collaboration & communication project written in TypeScript and released under Apache-2.0. It has 14,395 GitHub stars, 1,303 forks and 151 open issues, and was last pushed 11 hours ago. On this registry it ranks #11 of 41 tracked projects in Collaboration & Communication, with 5 head-to-head comparisons available. It gained 20 stars over the last 3 tracked days.

What is univer?

What it is

Univer is an open-source, full-stack office SDK for building spreadsheet, document and presentation interfaces inside your own product. Rather than shipping an end-user office suite, it gives developers the primitives — a Canvas-based renderer, a formula engine, a plugin architecture and a single Facade API — to embed spreadsheet and document editing into a web application or run the same logic headlessly on Node.js.

The problem it solves is the one every product team hits when users inevitably ask for "just a small editable table": the polished commercial options are expensive per-seat licensing deals, the point solutions cover one document type only, and building spreadsheet semantics — formulas, ranges, undo history, collaborative cursors — from scratch is months of work. Univer collapses spreadsheets, documents and slides onto one isomorphic runtime, so the same code renders in the browser and executes on the server for batch calculation or export.

Key capabilities

  • Spreadsheets, word processing and presentations from one SDK, in a single unified data model
  • Canvas-based rendering, which keeps large grids responsive where DOM-per-cell approaches degrade
  • A built-in formula engine supporting the standard spreadsheet function set
  • Plugin architecture: features are registered as plugins, so you enable or write only what you need
  • One Facade API that works identically in the browser and on Node.js (isomorphic execution)
  • Import and export of common office formats, including Excel and Word interchange
  • Collaboration and live-share primitives for multi-user editing

Who uses it and how

  • SaaS products that need embedded spreadsheet or document editing without licensing a commercial suite
  • Internal tooling teams building admin dashboards where users configure data in grid form
  • Analytics and reporting products that generate spreadsheet output server-side and stream it to the browser
  • Teams that need to read, recalculate and rewrite spreadsheet files as part of a backend pipeline
  • Any product where one editing surface must cover tables, docs and slides rather than three separate integrations

Getting started

Install from npm (@univerjs/* packages) or build from the repository with the standard Node toolchain; the project ships documentation, an API reference and a showcase at docs.univer.ai covering browser and server integration.

When to use it — and when not to

Univer is the right choice when you are building an office-editing capability into a product and want control over the data model, rendering and deployment. It is not a drop-in Google Sheets replacement for end users, and it does not replace commercial suites for organisations that need enterprise support contracts, deep format-fidelity guarantees or a ready-made UI. Expect to write integration code: the SDK gives you the engine, and you own the surrounding product experience.

project readme (upstream, from github) — read inline

A full-stack, isomorphic office SDK for building spreadsheets, documents, and presentations.

Build embeddable productivity experiences with a plugin architecture, Canvas-based rendering, a formula engine, and one Facade API that works in the browser and on Node.js.

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español

📖 Documentation | ✨ Showcase | 📘 API Reference | 📝 Blog

Release License Build CodeFactor Codecov

Stars Contributors Issues Last Commit

Discord Twitter Open Collective

Trendshift

✨ What is Univer?

Univer is an open-source SDK for creating office applications inside your own product. It gives you the building blocks for spreadsheet, document, and presentation experiences without forcing you into a hosted app or a fixed UI.

Use Univer when you need to:

  • Embed spreadsheet or document editing into a SaaS product, internal tool, BI workflow, or AI application.
  • Run workbook/document processing on the server with the same architecture used in the browser.
  • Compose only the features you need through plugins or start quickly with presets.
  • Extend behavior through custom plugins, commands, services, UI components, and Facade APIs.

Univer is not a spreadsheet file viewer only. It is a framework for building your own productivity surface.

🌟 Highlights


Built for large surfaces
Canvas-based rendering and a dedicated formula engine keep complex workbooks responsive.
🧩
Plugin-shaped by default
Compose, replace, lazy-load, or extend capabilities without taking the whole stack.
🤖
Headless for AI infrastructure
Run workbook and document logic in Node.js to power agents, automation, and server-side workflows.
🛠️
Product-ready SDK
Framework adapters, Facade APIs, presets, and headless runtime fit real integration paths.
🌗
Dark-mode ready
UI components and the rendering engine both adapt to light and dark themes.
🔌
Unified Facade API
One consistent API surface for workbooks, ranges, formulas, and documents across browser and Node.js.

🚀 Why Univer?

  • Isomorphic by design: run UI apps in browsers and headless processing in Node.js.
  • Plugin-first architecture: every capability is delivered as a composable plugin, so features can be added, removed, replaced, or lazy-loaded.
  • Preset mode for fast integration: use the curated plugin collections in presets/ when you want a working app quickly.
  • Plugin mode for full control: manually compose packages when you need custom loading, smaller bundles, or deep integration.
  • Facade API: work with workbooks, worksheets, ranges, documents, formulas, commands, and events through a higher-level API.
  • Canvas rendering engine: support large editable document surfaces with a rendering layer shared across document types.
  • Extensible UI: integrate with React, Vue, Web Components, and framework-specific application shells.

⚡ Quick Start

Use Plugin Mode for complete product coverage and precise composition. For supported Sheets, Docs, and Node profiles, Preset Mode provides a shorter curated setup.

Plugin Mode

Plugin Mode gives you lower-level control over packages, style imports, locale merging, Facade API registration, and plugin configuration.

pnpm add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/sheets @univerjs/sheets-formula @univerjs/sheets-formula-ui @univerjs/sheets-numfmt @univerjs/sheets-numfmt-ui @univerjs/sheets-ui @univerjs/ui
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import { FUniver } from '@univerjs/core/facade'
import DesignEnUS from '@univerjs/design/locale/en-US'
import { UniverDocsPlugin } from '@univerjs/docs'
import { UniverDocsUIPlugin } from '@univerjs/docs-ui'
import DocsUIEnUS from '@univerjs/docs-ui/locale/en-US'
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'
import { UniverRenderEnginePlugin } from '@univerjs/engine-render'
import { UniverSheetsPlugin } from '@univerjs/sheets'
import SheetsEnUS from '@univerjs/sheets/locale/en-US'
import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula'
import SheetsFormulaEnUS from '@univerjs/sheets-formula/locale/en-US'
import { UniverSheetsFormulaUIPlugin } from '@univerjs/sheets-formula-ui'
import SheetsFormulaUIEnUS from '@univerjs/sheets-formula-ui/locale/en-US'
import { UniverSheetsNumfmtPlugin } from '@univerjs/sheets-numfmt'
import { UniverSheetsNumfmtUIPlugin } from '@univerjs/sheets-numfmt-ui'
import SheetsNumfmtUIEnUS from '@univerjs/sheets-numfmt-ui/locale/en-US'
import { UniverSheetsUIPlugin } from '@univerjs/sheets-ui'
import SheetsUIEnUS from '@univerjs/sheets-ui/locale/en-US'
import { UniverUIPlugin } from '@univerjs/ui'
import UIEnUS from '@univerjs/ui/locale/en-US'

import '@univerjs/design/lib/index.css'
import '@univerjs/ui/lib/index.css'
import '@univerjs/docs-ui/lib/index.css'
import '@univerjs/sheets-ui/lib/index.css'
import '@univerjs/sheets-formula-ui/lib/index.css'
import '@univerjs/sheets-numfmt-ui/lib/index.css'

import '@univerjs/engine-formula/facade'
import '@univerjs/ui/facade'
import '@univerjs/sheets/facade'
import '@univerjs/sheets-ui/facade'
import '@univerjs/sheets-formula/facade'
import '@univerjs/sheets-numfmt/facade'

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      DesignEnUS,
      UIEnUS,
      DocsUIEnUS,
      SheetsEnUS,
      SheetsUIEnUS,
      SheetsFormulaEnUS,
      SheetsFormulaUIEnUS,
      SheetsNumfmtUIEnUS,
    ),
  },
})

univer.registerPlugin(UniverRenderEnginePlugin)
univer.registerPlugin(UniverFormulaEnginePlugin)
univer.registerPlugin(UniverUIPlugin, { container: 'app' })
univer.registerPlugin(UniverDocsPlugin)
univer.registerPlugin(UniverDocsUIPlugin)
univer.registerPlugin(UniverSheetsPlugin)
univer.registerPlugin(UniverSheetsUIPlugin)
univer.registerPlugin(UniverSheetsFormulaPlugin)
univer.registerPlugin(UniverSheetsFormulaUIPlugin)
univer.registerPlugin(UniverSheetsNumfmtPlugin)
univer.registerPlugin(UniverSheetsNumfmtUIPlugin)

const univerAPI = FUniver.newAPI(univer)
univerAPI.createWorkbook({})

</detail

readme truncated — read the full docs on github

Frequently asked questions

Is univer free to use?

univer is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does univer do?

Univer is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.

What is univer written in?

univer is primarily written in TypeScript. Its source is publicly available at https://github.com/dream-num/univer, and it has 14,395 GitHub stars.