EasyNotes

Notes at the
speed of thought

A pocket notebook that lives in your browser toolbar.

Most note tools ask you something before they let you write: which notebook, which tag, which project. EasyNotes asks nothing. The page is already open, the cursor is already in the line, and one keystroke files the thought away.

Firefox coming soon · view source

v1.0.1 Manifest V3 0 dependencies no build step 166 tests passing
The EasyNotes popup: a sheet of ruled paper with four notes, one ticked off

Four screens, no menus

Everything the extension does, on one sheet of paper.

A page of notes with one ticked off A pageType at the top, tick the box, click the text to edit.
The index listing four pages with tallies All pagesA tally each. Type a name to make a new one.
Search results drawn from two different pages SearchPress /. Hits come from every page, tagged.
Two notes marked as living on this device only Device-only notesMarked in the margin when sync runs out of room.

Built around one keystroke

Pages, search and sync all exist to protect it.

Instant capture

One shortcut opens it with the cursor already in the line. Adding a note never asks which page it belongs to.

No ceiling

Local storage is the source of truth, so the notebook is unlimited. A note is never refused, ever.

🔎

Search everything

Results come from every page at once, each tagged with where it lives — because you don't remember where you put it.

🗂️

Pages when you want them

Up to fifty, opt-in. One is always open, so structure is a thing you reach for, never a form you fill in.

🔒

Yours alone

No account, no server, no telemetry. Notes sit on your machine; your browser's own sync carries them between devices.

Always exportable

One click writes every note, on every page, to a plain Markdown checklist that opens anywhere.

How it works

Two files: one draws, one owns every byte.

Local first

chrome.storage.local with unlimitedStorage holds every page and note — that's the source of truth, and it has no practical ceiling. chrome.storage.sync sits downstream as a replication channel, not a store. That inversion is the reason a note is never turned away.

One key per note

The browser merges sync data key by key, so two devices editing different notes both keep their edits. A single array under one key would make every save a whole-list overwrite, and the last device to sync would quietly erase the other's work.

Reconciled, not queued

On every change EasyNotes computes what sync should hold and pushes the difference. A failed write needs no retry bookkeeping — the next change simply computes the same difference again.

What fits in sync

Browsers allow an extension 102,400 bytes. Page structure always travels; notes then fill what's left, newest first across every page. Measured against the real quota:

Average noteReaches sync
40 characters479 notes
100 characters479 notes
280 characters280 notes
500 characters173 notes
2,000 characters (max)48 notes

Anything past that stays on the machine that wrote it, marked with a circle in the margin. Nothing is dropped, and deleting newer notes promotes older ones back up.

The footer never lies to you

Being signed into your browser and having extension sync switched on are different settings, and chrome.storage.sync quietly becomes local storage when the second one is off — the write succeeds, no error is raised, and nothing leaves the machine. A successful write proves nothing, so the status chip never claims more than it can show.

ChipWhat it actually means
savedStored. Whether it left this device is unknown.
synced · 2 devicesProven — a beacon arrived that this device didn't write.
N not syncedAll notes are safe here; N are past what sync can carry.
nearly fullOver 80% of the sync budget is used.
on this deviceBrowser sync could not be read at all.

Each install announces itself with a small beacon. Spotting one it didn't write is the only proof available that data really crosses machines — which can confirm sync works, but can never prove it's broken. Hence saved, not not syncing.

Install

One click on Chrome or Edge. Firefox and manual install below.

  1. Clone or download the repository.
  2. Open chrome://extensions or edge://extensions.
  3. Turn on Developer mode, top right.
  4. Click Load unpacked and choose the folder.
  5. Pin EasyNotes to your toolbar.

Then press E on a Mac, or Ctrl E on Windows and Linux, from anywhere in your browser.

git clone https://github.com/0xnikshi/easynotes.git

Five files, no dependencies, no build step. Edit one, hit reload on the extensions page, and that's the whole development loop.

node test/store.test.js
node test/popup.test.js

166 checks, no framework required.