Scratch notebook
A fully local scratch notebook: multiple tabs with rename, delete and reorder, full-text search over titles and content, auto-save to browser localStorage, and merged export to .md or .txt. Nothing is uploaded.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Tabs: 0 · Characters: 0
Data stays in this browser only and is never uploaded; switching browsers or clearing site data loses it, so export .md / .txt for anything you want to keep.
Tabs
No tabs yet — click "New tab" or "Example" to start writing.
What this tool does
- Jot something down without signing up: open a tab, give it a title and start typing. Content is stored in this browser's localStorage, so it survives refreshes and restarts.
- Keep several notes in one notebook: create, rename, delete and reorder tabs so meeting notes, a shopping list and code snippets each get their own tab.
- Find what you wrote earlier: the search box matches titles and content case-insensitively and returns the matching tabs with hit counts and a context snippet.
- Export when you need an archive or a new device: merge every tab into one .md or .txt file (one section per tab, with its update time) and open it in any editor.
Example
Input
Create a tab titled "会议记录" with the content 周一 10:00 产品评审
Output
# 临时笔记本导出 ## 会议记录 > 更新:2026-01-01T09:00:00.000Z 周一 10:00 产品评审
This is the real .md export output (the update time is passed in by the caller — here 2026-01-01T09:00:00.000Z). The .txt export uses ===== 标题(更新:…)===== sections instead.
Frequently asked questions
Where are the notes stored, and are they uploaded?
Only in your own browser's localStorage. The page makes no network requests and has no account or cloud sync, so switching browsers or devices, clearing site data or using a private window means the notes are gone. For anything long-lived, use Export .md / Export .txt and keep the file.
Is there a size or tab limit?
The logic itself has no limit, but localStorage has a per-site quota (typically around 5MB, browser dependent). For very long notes or many tabs, export a backup regularly; if the browser rejects a write the page tells you, and the exported file remains the reliable copy.
What is the difference between the .md and .txt exports?
The content is identical; only the section markup differs. The .md file starts with "# 临时笔记本导出", uses "## Title" per tab and puts the update time in a quote line; the .txt file uses "===== Title(更新:time)=====" sections. Both follow the current tab order.
How does the search match text?
It does a case-insensitive substring match over each tab's title and content and returns the tab, the number of hits and a snippet around the first match (truncated edges marked with …). There is no tokenisation, regex or fuzzy matching, so a phrase works while a spaced multi-word query does not.
What happens if the stored data is corrupted?
Loading validates the payload first: unparsable JSON, a wrong shape or a version other than 1 each produce their own message and load an empty notebook, while individually broken or duplicate-id tabs are dropped and the rest are kept (a partial-payload state). Every write returns a new payload, so one failure never destroys the whole notebook.
Why is the update time fixed instead of refreshing live?
Because the data model is pure logic: it never reads the system clock. The page passes the current time in as a parameter whenever you edit a title or content, which keeps results reproducible in any environment and easy to test.
Keywords:在线笔记本临时笔记本在线记事本多标签笔记全文搜索导出md导出txtlocalStorage不联网记事本scratch notebookonline notepadnote takinglocal storage notestxt_books