Skip to main content

Notes Scratchpad

Simple persistent notepad with auto-save, word count, and local storage.

Reviewed by · Last reviewed

0 words0 characters

Notes are saved automatically to your browser's local storage. They persist between sessions but are not synced across devices.

How to Use the Notes Scratchpad

  1. Click into the text area and start typing. There is no Save button - auto-save kicks in roughly 500 ms after you stop typing, and a small "Saved" indicator confirms it.
  2. Watch the live word and character counters above the editor. They update every keystroke, including while you paste, so you can target a specific length as you write.
  3. Come back anytime. The note is persisted to your browser\'s localStorage, so closing the tab, rebooting your machine, and reopening the page all leave the text exactly where you left it.
  4. Paste freely. The scratchpad is plain text, so copying from a formatted document strips all the styling - useful when you want to wash Word or Slack formatting out before pasting somewhere else.
  5. Use Clear only when you are sure. A confirmation dialog protects against accidents, but once confirmed the note is gone with no undo.

What This Tool Does and How It Works

A scratchpad is a single always-there text buffer - the digital equivalent of the Post-it pad next to your keyboard. This implementation is a controlled Preact <textarea> whose value is mirrored into window.localStorage under a dedicated key. The write is debounced with a short timer so that every keystroke does not trigger a storage write on its own; instead the component waits until you pause typing and flushes once. On mount, the component reads the same key with localStorage.getItem and populates the textarea, which is why the note reappears instantly on a fresh page load.

Word counting uses a whitespace-collapsing regex (trim().split(/\\s+/)) so consecutive spaces, tabs, and newlines count as one boundary. Character counts are the raw string.length, which measures UTF-16 code units rather than grapheme clusters - an emoji composed of a surrogate pair counts as two. localStorage typically allows 5-10 MB per origin in modern browsers, which comfortably holds millions of characters of plain text; no cleanup or LRU logic is needed at that scale.

When You Would Use the Scratchpad

  • Jotting down a phone number, tracking number, or one-time code while a call is in progress - zero-latency and no app to open.
  • Drafting a Slack or email reply in plain text before the emotional urge to hit Send has cooled.
  • Stripping formatting out of copied text before pasting it into a formatting-sensitive destination (a CMS, a markdown file, an email template).
  • Keeping a running daily brain-dump that survives browser restarts, separate from whatever note-taking app you use for finished writing.
  • Live-taking meeting notes when you do not want to wait for Notion, Obsidian, or Apple Notes to load and sync.
  • Holding a long LLM prompt you are iterating on, where the history inside the textarea is less formal than a saved file but more durable than clipboard.

Common Pitfalls and Edge Cases

The most important warning is that localStorage is scoped to the exact origin - zeroutil.com - and to the exact browser profile. Switching browsers, switching devices, opening a private/incognito window, or clearing site data will all produce what looks like a blank scratchpad because those contexts have their own (empty) localStorage. This surprises users who assume notes sync. A related pitfall: browser "clear cookies and site data" actions remove localStorage too, and some privacy extensions evict it on tab close. Very long sessions can hit the 5 MB quota (roughly 2.5 million characters if everything is ASCII), at which point further writes silently fail - if you approach that, move the content out. Finally, the counters treat any Unicode whitespace as a word boundary, which means certain non-space separators (thin spaces, zero-width joiners, en-spaces) can produce counts that disagree with Word or Google Docs by a few tokens.

Scratchpads Versus Structured Notes

There is a useful distinction between a scratchpad and a notes app. A scratchpad is intentionally single-buffer, unstructured, and disposable - one textarea, no titles, no folders, no tags. A notes app (Notion, Obsidian, Apple Notes, OneNote) gives you multiple documents, linking, formatting, and sync. The scratchpad is friction-free capture for material that might be thrown away; the notes app is a durable library for material you come back to. Trying to merge them - Evernote\'s decade-long trajectory is the object lesson - usually produces something worse at both. This tool stays firmly on the scratchpad side: one text blob, auto-saved, no hierarchy. The <textarea> element is standardized in the HTML Living Standard and has existed since HTML 2.0 in 1995, which is why it renders identically across every modern browser.

Comparison to Alternatives

A real notes app syncs across devices, supports rich formatting, and has a proper search. If you want any of those, use Apple Notes, Notion, or Obsidian and accept the heavier footprint. A plain text file in a scratch directory on your filesystem is more durable than localStorage and survives browser-data wipes, but requires you to manage a file explicitly. A Slack DM to yourself (or the equivalent "Saved Messages" in Telegram or WhatsApp) syncs across devices but is subject to retention policies and someone else\'s server. Against these, the scratchpad\'s wins are immediacy (zero login, zero app launch), locality (nothing leaves your machine), and disposability (no accidentally durable record of a draft you wanted to throw away). It loses whenever cross-device sync or multiple documents matter.

Frequently Asked Questions

Where exactly are my notes saved?

Notes are written to your browser's localStorage under a key scoped to zeroutil.com. localStorage is an origin-partitioned key-value store defined in the WHATWG Web Storage spec; the browser persists it to disk within the profile folder. Another domain cannot read it, but OS-level file search tools can. If you want more privacy, a password manager scratchpad or an encrypted note is a better fit.

Why are my notes missing in a private window or on another device?

localStorage is isolated per browser profile and per browsing mode. A private or incognito window uses a fresh empty store that is discarded when the window closes. A different browser has its own store, as does the same browser on another machine. There is no cross-device sync because that would require a server-side account system, which we deliberately avoid. Cloud-synced note apps are the answer if you need that.

How much text can I store in the scratchpad?

localStorage quotas vary by browser, but the modern floor is 5 MB per origin, with Firefox and Chrome typically granting 10 MB. At 5 MB you can hold roughly 2.5 million ASCII characters. When the quota is exhausted, further writes throw QuotaExceededError and silently fail; for very long notes you should split content into multiple files saved elsewhere.

Does auto-save mean my notes survive a crash?

Mostly yes. The debounced write fires about half a second after your last keystroke, so a browser or OS crash during active typing can lose the last few characters. A tab close, reboot, or navigation does not lose anything because localStorage is flushed to disk synchronously. For critical writing, select-all and copy to clipboard every few minutes, or use a tool with server-side draft recovery.

Why is this plain text with no formatting?

The scratchpad is intentionally a flat textarea because most scratchpad use is capture-and-disposal, where formatting adds friction. Plain text also lets you paste out into any destination - Markdown, HTML, code editor, email - without source styling bleeding through. For bold, headings, or lists, a proper notes app with a WYSIWYG or Markdown editor is the right tool.

How are words counted?

The counter trims leading and trailing whitespace, then splits on one-or-more whitespace characters and counts the resulting array length. This matches most plain-text word counts. It disagrees with some formal definitions when URLs, email addresses, or hyphen-joined constructions should arguably count as multiple words, so expect minor differences against Microsoft Word or Google Docs for heavily punctuated text.

Is my note content sent to any server?

No. Every read and write happens through window.localStorage, which is a purely client-side API. The tool makes no fetch, no XHR, no WebSocket call during editing, and no analytics event that carries your content. The only network traffic is the initial static asset load and the site-wide analytics ping on page view, neither of which sees the textarea value.

Can I export or back up my note?

There is no dedicated export button, but because the content is plain text you can select all (Cmd/Ctrl+A), copy, and paste into any other destination. For scripted backups, open DevTools and run localStorage.getItem on the key. A proper notes app with native export is a better long-term home for content you actually care about.

How is this different from the Digital Whiteboard?

The scratchpad is linear plain text: one stream of characters, keyboard input only. The digital whiteboard is spatial: a 2D canvas where you draw and position ideas visually. Scratchpad suits writing; whiteboard suits diagrams or sketches where layout carries meaning. For mixed text-and-spatial work, a dedicated tool like Excalidraw or Miro is more powerful.

What happens if I open the page in two tabs?

Both tabs read the same localStorage on mount so they start in sync, but they do not listen to each other's updates by default. Editing in tab A and switching to tab B will show tab B's stale view; whichever tab writes last will "win" next reload. Browsers do fire a "storage" event across tabs, but this implementation does not currently wire it up.

More Productivity