Self-hosted service
streetwriters/notesnook avatar
streetwriters/notesnook

Notesnook: An E2E Encrypted Note-Taking App That Opens Its Entire Stack

A fully open source & end-to-end encrypted note taking alternative to Evernote.

14,931 stars1,051 forksTypeScriptGPL-3.0

At a glance

What is it?
Notesnook is a GPL-3.0, end-to-end encrypted note-taking suite with clients for web, desktop, and mobile. The repository exposes every layer, from crypto wrappers to editor internals, making it a serious candidate for privacy-focused users and developers.
Who is it for?
Adopt Notesnook if you want a cross-platform note-taking app with client-side encryption and the ability to inspect or modify every layer, from the crypto wrapper to the editor. Do not adopt it if you need a stable, plugin-rich ecosystem or if you are unwilling to manage a monorepo with multiple build targets and a GPL-3.0 license.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • streetwriters/notesnook14,931 ★ · +591
Star history
Repository2026-07-282026-11-13
streetwriters/notesnook14.3k14.9k

591 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What Notesnook Solves and Who It Is For

Notesnook targets people who want an Evernote-like note-taking experience without surrendering access to their data. The README states it is a free and open-source note-taking app focused on user privacy and ease of use. The core promise is zero knowledge: everything is encrypted on the device using XChaCha20-Poly1305 and Argon2. This is for users who are willing to trust a smaller project over established commercial alternatives, and for developers who want to study or extend a full note-taking stack. The project covers web, desktop, and mobile clients, so the intended audience spans individual users and tinkerers who want a self-contained, auditable solution.

The Encryption Mechanism: XChaCha20-Poly1305 and Argon2

The README names the two cryptographic primitives: XChaCha20-Poly1305 for authenticated encryption and Argon2 for key derivation. The actual implementation lives in the @notesnook/crypto package, which is described as a cryptography library wrapper around libsodium. There is also @notesnook/sodium, a wrapper that makes libsodium work in both Node.js and the browser. This split matters: the crypto core is isolated from the UI and can be audited independently. The README also points to Vericrypt, a separate tool that lets users verify the encryption claims themselves. That is a concrete step toward transparency, and the root package.json includes build:vericrypt and start:vericrypt scripts for it.

Monorepo Architecture: Every Client, One Codebase

The repository is a monorepo with a clear table of contents. The apps folder holds the web client, the desktop client (Electron) and the mobile clients (React Native), while the web clipper extension lives in /extensions/web-clipper. The packages folder contains the shared core, crypto, editor, logger, theme, and a streaming file system. The core package is the shared logic across all platforms, which means the business logic is not duplicated per client. The editor is its own package, and there is a thin wrapper for mobile. This structure is sensible for a project that must keep feature parity across web, desktop, and mobile. The downside is that building any single client likely requires understanding the whole monorepo, which raises the barrier for contributors who only care about one platform.

Getting It Running: Build and Development Commands

The README does not list explicit build commands, but it does say that NPM is the package manager and that the project does not use Yarn or PNPM. It also says each project in the monorepo has its own architecture details. So a developer would start by cloning the repository and running npm install at the root; the root package.json then provides scripts such as npm run bootstrap, npm run start:web, npm run start:desktop and npm run start:android. The absence of a top-level build guide in the README is a small friction point. The README directs contributors to the contributing guidelines file for style and PR rules, but it does not give a quick start.

Limitations and Failure Modes

A genuine limitation is the hybrid state of the codebase. The README admits that the repository is in a hybrid state, with newer code in TypeScript and older code being slowly ported. That means a contributor might encounter inconsistent patterns and a higher risk of type-related bugs. Another limitation is the reliance on a single email-based account system. The README links to a blog post explaining why an email address is required, but for users who want complete anonymity, that is a barrier. The repository root contains a servers/ directory, but the README does not explain how to deploy or self-host a sync service.

Real Alternative: Joplin and Its Approach

Joplin is a direct alternative. It is also open source and supports end-to-end encryption, but it takes a different approach. Joplin lets users sync with their own Nextcloud, WebDAV, or filesystem, while the Notesnook README does not describe its sync setup. Joplin's encryption uses AES-256 and a master password, while Notesnook uses XChaCha20-Poly1305 with Argon2. Architecturally, Notesnook is a monorepo with separate clients and a shared core. For a user who wants to control their sync destination, Joplin is the better fit. For a developer who wants to audit the entire stack, Notesnook's monorepo offers more surface area to inspect.

Maintenance and License Implications

The repository is actively maintained, with recent Desktop releases up to v3.4.12 on 2026-11-02. The license is GPL-3.0, which has real implications. If you embed Notesnook's code into your own project, that project must also be GPL-3.0. This is fine for personal use or for a new open source project, but it is a blocker for proprietary applications. The README mentions that the decision to go fully open source is a step toward transparency, but it does not discuss dual licensing. The codebase is large, and the maintenance cost is non-trivial: you have to keep up with updates across web, desktop, and mobile, plus the crypto and editor packages. For a single developer, that is a heavy burden. The presence of a streamable-fs package suggests they have invested in handling large files, but that also adds complexity to the storage layer.

Editorial conclusion

Adopt Notesnook if you want a cross-platform note-taking app with client-side encryption and the ability to inspect or modify every layer, from the crypto wrapper to the editor. Do not adopt it if you need a stable, plugin-rich ecosystem or if you are unwilling to manage a monorepo with multiple build targets and a GPL-3.0 license. Before committing, verify that the current release supports your platform, review the import/export tools for your existing notes, and check the repository's issue tracker for any unresolved sync or encryption bugs.

Frequently asked questions

Is Notesnook free?

The README calls it free (as in speech) and open source, and the repository carries a GPL-3.0 licence. What any hosted tier costs is not covered by the repository itself.

What is Notesnook?

A note-taking app presented as a fully open source, end-to-end encrypted alternative to Evernote. One repository holds the web, desktop and mobile clients along with the shared packages they depend on.

Is Notesnook really private?

Encryption happens on the device with XChaCha20-Poly1305 and keys are derived with Argon2, which is what the zero knowledge claim rests on. The project points readers to Vericrypt at https://vericrypt.notesnook.com/ as the place to check the claim rather than take it on trust.

How do I install Notesnook?

Ordinary users take a client from https://notesnook.com/downloads, since the README gives no package manager command for them. Developers work from a clone of this repository and bootstrap the npm workspace with npm run bootstrap, which runs node scripts/bootstrap.mjs.

Is Notesnook end to end encrypted?

The README states that Notesnook encrypts everything on your device using XChaCha20-Poly1305 and Argon2. Whether a given installation honours that depends on the client build you run, which is why Vericrypt exists as an outside check.

Is Notesnook open source?

Yes, under GPL-3.0, and the repository contains all the code needed to build and use the web, desktop and mobile clients. What is not covered is deploying the sync service, since the servers/ directory appears in the repository root without documented build or run instructions.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/streetwriters-notesnook.svg)](https://hysenlabs.com/projects/streetwriters-notesnook)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/streetwriters-notesnook.svg)](https://hysenlabs.com/projects/streetwriters-notesnook)

Was this useful?