etherpad is a free, open source collaboration & communication project written in TypeScript and released under Apache-2.0. It has 18,552 GitHub stars, 3,050 forks and 31 open issues, and was last pushed 7 hours ago. On this registry it ranks #9 of 41 tracked projects in Collaboration & Communication, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is etherpad?

Etherpad is a real-time collaborative document editor, written in TypeScript and released under Apache-2.0, for teams and institutions that need every keystroke attributed to its author, every revision preserved, and all text hosted on infrastructure they control.

What it is

Etherpad is an open-source, real-time collaborative editor that has been doing the same job since 2009. It lives in the Business Software / Collaboration & Communication ecosystem, is written in TypeScript, and runs on the adopter's own server under the adopter's own governance. Every keystroke in a pad is attributed to its author, author colours make that attribution visible at a glance rather than buried in a menu, and every revision is preserved. A timeslider lets a reader scrub through a document's entire history character by character, and full data export is built into the product, so the history belongs to whoever runs the instance.

The concrete thing Etherpad replaces is the hosted collaborative editor that decides governance for its users: no telemetry, no upsells, and no assistant shipped by default. Artificial intelligence is a plugin the operator installs, pointed at the model the operator chooses, running on infrastructure the operator controls. The README is explicit that two opt-out network calls are made by Etherpad's own code and documents in PRIVACY.md how to disable each. The code is Apache 2.0 and the data format is open.

Key capabilities

  • Real-time collaborative editing with per-keystroke authorship attribution, shown through author colours rather than a separate menu.
  • A timeslider that scrubs a pad's revision history character by character, with full data export available through the project's export capabilities documentation.
  • Scaling documented at thousands of simultaneous editors per pad, with the load benchmark published at scale.etherpad.org.
  • Translation into 105 languages at 98 percent translation coverage.
  • Extension through hundreds of plugins, listed through the plugin index at etherpad.org/plugins.
  • PDF generation and rich-text editing, reflected in the project topics alongside collaborative writing, research, and AI-assisted collaboration.
  • Continuous automated verification through CodeQL analysis, backend tests, simulated load tests, rate-limit tests, Docker build checks, and frontend and frontend-admin test suites.

Who uses it and how

  • The Wikimedia Foundation uses Etherpad for collaborative drafting across editor communities, a multi-community, multi-language environment.
  • Public-sector institutions, governments, and self-hosters run it as governed infrastructure, a deployment pattern the project has supported since 2009.
  • Open-source and volunteer teams adopt it for collaborative writing and collaborative research, where attribution and revision history are the point of the document rather than an afterthought.
  • Organisations that need a hosted-adjacent first look can evaluate the public instance at scanner.etherpad.org before committing to a self-managed deployment.
  • Operators who want AI assistance in the editor add it themselves as a plugin and direct it at a model they select, keeping the text on their own infrastructure.

Getting started

The project publishes a Docker image at etherpad/etherpad on Docker Hub, which is the concrete deployment route named in the facts; the companion documentation and downloads live at etherpad.org, and a public instance is available at scanner.etherpad.org for evaluation.

How it compares

No comparable or paid products are named in the facts provided, so Etherpad stands alone in this registry entry: it is listed on its own as an Apache-2.0, self-hosted alternative in the Collaboration & Communication category, without a documented competitor set to contrast it against.

When to use it — and when not to

Choose Etherpad when attribution, permanent revision history, open data formats, and governance of your own text matter more than a managed service: the operator runs a Node.js real-time service, maintains the deployment, and must read PRIVACY.md if the two opt-out network calls need disabling. Do not choose it expecting a large commercial support organisation, because the project is maintained by a small volunteer team that is actively recruiting maintainers and asks for Node.js and real-time systems experience. The README excerpt also gives no packaged install or upgrade command beyond the Docker image, so a self-hoster should expect to work from the project documentation rather than a single copy-paste setup path.

project readme (upstream, from github) — read inline

Etherpad — the editor for documents that matter

Real-time collaborative editing where authorship is the default, your server is the only server, and you decide what AI (if any) ever touches your text.

Demo Etherpad Animated Jif

About

Etherpad is a real-time collaborative editor for documents that matter.

Every keystroke is attributed to its author. Every revision is preserved. The timeslider lets you scrub through a document's entire history, character by character. Author colours make collaboration visible at a glance — not buried in a menu.

Etherpad runs on your server, under your governance. No telemetry. No upsells. AI is a plugin you install, pointed at the model you choose, running on infrastructure you control — not a feature decided for you in a boardroom you weren't in. See PRIVACY.md for the two opt-out network calls Etherpad's own code makes and how to disable each.

The code is Apache 2.0. The data format is open. It scales to thousands of simultaneous editors per pad. Translated into 105 languages. Extended through hundreds of plugins. Used by Wikimedia, governments, public-sector institutions, and self-hosters worldwide since 2009.

Full data export is built in. The history is yours.

Try it out

Try out a public Etherpad instance

Project Status

Etherpad has been doing the same thing — well — since 2009. No pivots, no acquisitions, no enshittification. Maintained by a small volunteer team.

We are actively looking for maintainers. If you have experience with Node.js, real-time systems, or institutional collaboration tooling and you want to work on infrastructure that thousands of organisations quietly depend on, please open an issue or contact John McLear.

Code Quality

Code Quality

Testing

Backend tests Simulated Load Rate Limit Docker file Frontend admin tests Frontend tests

Engagement

Docker Pulls Discord Etherpad plugins Languages Translation Coverage

Who uses Etherpad

For more than a decade, Etherpad has quietly underpinned the documents that matter to:

  • Wikimedia Foundation — collaborative drafting across editor communities.
  • Public-sector institutions across the EU — including organisations that legally cannot use US-cloud SaaS for sovereignty and GDPR reasons.
  • Universities and schools worldwide — including jurisdictions where Google Workspace is no longer permitted in education.
  • Civic-tech and democratic-deliberation projects — citizen assemblies, participatory budgeting, public consultations.
  • Newsrooms and investigative journalism teams — where authorship and editing history matter for legal and editorial integrity.
  • Tens of thousands of self-hosted instances worldwide, run by IT teams who chose Etherpad because it is theirs.

Public Etherpad Instances for you to try out. Third party instances not provided by the Etherpad foundation.

Installation

Quick install (one-liner)

The fastest way to get Etherpad running. Requires git and Node.js >= 24.

macOS / Linux / WSL:

curl -fsSL https://raw.githubusercontent.com/ether/etherpad/master/bin/installer.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/ether/etherpad/master/bin/installer.ps1 | iex

Both installers clone Etherpad into ./etherpad-lite, install dependencies, and build the frontend. When the installer finishes, run:

cd etherpad-lite && pnpm run prod

Then open .

To install and start in one go:

# macOS / Linux / WSL
ETHERPAD_RUN=1 sh -c "$(curl -fsSL https://raw.githubusercontent.com/ether/etherpad/master/bin/installer.sh)"
# Windows
$env:ETHERPAD_RUN=1; irm https://raw.githubusercontent.com/ether/etherpad/master/bin/installer.ps1 | iex

Docker-Compose

The official image is published to both Docker Hub (etherpad/etherpad) and GitHub Container Registry (ghcr.io/ether/etherpad) with identical tags. Use whichever suits your environment; GHCR avoids Docker Hub's anonymous pull rate limits.

services:
  app:
    user: "0:0"
    image: etherpad/etherpad:latest  # or: ghcr.io/ether/etherpad:latest
    tty: true
    stdin_open: true
    volumes:
      - plugins:/opt/etherpad-lite/src/plugin_packages
      - etherpad-var:/opt/etherpad-lite/var
    depends_on:
      - postgres
    environment:
      NODE_ENV: production
      ADMIN_PASSWORD: "${DOCKER_COMPOSE_APP_ADMIN_PASSWORD:?Set DOCKER_COMPOSE_APP_ADMIN_PASSWORD to a strong value}"
      DB_CHARSET: ${DOCKER_COMPOSE_APP_DB_CHARSET:-utf8mb4}
      DB_HOST: postgres
      DB_NAME: ${DOCKER_COMPOSE_POSTGRES_DATABASE:-etherpad}
      DB_PASS: "${DOCKER_COMPOSE_POSTGRES_PASSWORD:?Set DOCKER_COMPOSE_POSTGRES_PASSWORD to a strong value}"
      DB_PORT: ${DOCKER_COMPOSE_POSTGRES_PORT:-5432}
      DB_TYPE: "postgres"
      DB_USER: ${DOCKER_COMPOSE_POSTGRES_USER:-admin}
      # For now, the env var DEFAULT_PAD_TEXT cannot be unset or empty; it seems to be mandatory in the latest version of etherpad
      DEFAULT_PAD_TEXT: ${DOCKER_COMPOSE_APP_DEFAULT_PAD_TEXT:- }
      DISABLE_IP_LOGGING: ${DOCKER_COMPOSE_APP_DISABLE_IP_LOGGING:-false}
      SOFFICE: ${DOCKER_COMPOSE_APP_SOFFICE:-null}
      TRUST_PROXY: ${DOCKER_COMPOSE_APP_TRUST_PROXY:-false}
    restart: always
    ports:
      - "${DOCKER_COMPOSE_APP_PORT_PUBLISHED:-9001}:${DOCKER_COMPOSE_APP_PORT_TARGET:-9001}"

  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: ${DOCKER_COMPOSE_POSTGRES_DATABASE:-etherpad}
      POSTGRES_PASSWORD: "${DOCKER_COMPOSE_POSTGRES_PASSWORD:?Set DOCKER_COMPOSE_POSTGRES_PASSWORD to a strong value}"
      POSTGRES_PORT: ${DOCKER_COMPOSE_POSTGRES_PORT:-5432}
      POSTGRES_USER: ${DOCKER_COMPOSE_POSTGRES_USER:-admin}
      PGDATA: /var/lib/postgresql/data/pgdata
    restart: always
    # Exposing the port is not needed unless you want to access this database instance from the host.
    # Be careful when other postgres docker container are running on the same port
    # ports:
    #   - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:
  plugins:
  etherpad-var:

Requirements

Node.js >= 24.

Windows, macOS, Linux

  1. Download the latest Node.js runtime from nodejs.org.
  2. Install pnpm: npm install -g pnpm (Administrator privileges may be required).
  3. Clone the repository: git clone -b master
  4. Run pnpm i
  5. Run pnpm run build:etherpad
  6. Run pnpm run prod
  7. Visit http://localhost:9001 in your browser.

Docker container

Find here information on running Etherpad in a container.

Plugins

Etherpad is very customizable through plugins.

Basic install

Full Features

readme truncated — read the full docs on github

Frequently asked questions

Is etherpad free to use?

etherpad 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 etherpad do?

Etherpad: A modern really-real-time collaborative document editor.

What is etherpad written in?

etherpad is primarily written in TypeScript. Its source is publicly available at https://github.com/ether/etherpad, and it has 18,552 GitHub stars.