Build a personal knowledge base with [[bidirectional links]], tags, backlinks, search, note metadata, and import/export. Implements Zettelkasten method
Developers building a personal knowledge base need a way to link ideas together, not just file them away. This Zettelkasten-style note tool lets you create interconnected notes with bi-directional links, tags, and a visual graph of connections, all stored locally in your browser.
Initializing in your browser…
Generate SEO meta tags, Open Graph, and Twitter Card tags for your website. Preview how your page appears in search results and social media.
Organize tasks with priorities (low/medium/high), due dates, tags, smart filtering, search, sorting, stats dashboard, import/export, and local storage persistence
Analyze any URL for phishing, suspicious patterns, and security risks. Detects login keywords, suspicious TLDs, encoded characters, brand impersonation, and more
You are building a network of linked atomic notes and want the connections to be navigable, not buried in a folder tree.
A note you write
Title: Spaced repetition Body: Works because retrieval strengthens memory. See [[Active recall]] and [[Forgetting curve]].
What the system builds
Note "Spaced repetition" links → Active recall, Forgetting curve Backlinks panel on "Active recall" now shows ← Spaced repetition Graph view connects the three notes
The Zettelkasten method favours many small, single-idea notes connected by explicit `[[wikilinks]]` over deep hierarchies. Typing a link automatically creates the reverse "backlink" on the target note, so knowledge accretes as a navigable graph, everything stored locally in your browser.
Developers building a personal knowledge base need a way to link ideas together, not just file them away. This Zettelkasten-style note tool lets you create interconnected notes with bi-directional links, tags, and a visual graph of connections, all stored locally in your browser.
Zettelkasten Notes is a browser-based linked-note workspace that uses wiki-style double-bracket syntax to connect ideas. When you save a note, the tool scans its body with the pattern /\[\[([^\]]+)\]\]/g, pulls out every [[Note Title]] reference, and resolves each one against your existing notes by exact, case-sensitive title match (excluding the note itself), storing the result as a list of internal note IDs on that note. In the rendered (non-editing) view, a reference that matches a real note appears as a clickable blue link that jumps you to that note, while a reference with no matching title is shown in red so you can spot broken or not-yet-created links. An "Add Link" picker lets you insert a reference without typing it: choosing a note appends ` [[That Note's Title]]` to the current content.
The graph is bidirectional without any manual bookkeeping. Each note carries a links array of the IDs it points to, and the tool derives backlinks on the fly by filtering for every note whose links array contains the currently active note's ID, displaying them in a separate "Backlinks" panel (green) alongside the outgoing "Links" panel (blue), each showing a live count. Because links are keyed by ID rather than title, deleting a note also walks every remaining note and strips that ID out of their links, so removing a note never leaves a dangling reference in the graph (though the literal [[Old Title]] text left in other notes' bodies will then render red as an unresolved link). Note that renaming a note does not retroactively rewrite [[old title]] text elsewhere, since links are recomputed from content only on save.
All data lives entirely in your browser under the localStorage key 'toolbox-zettelkasten', and the full note array is rewritten there on every change, so notes persist across reloads with no account or server. Tags are entered as a comma-separated string and normalized on save: each is trimmed and lowercased, and empty entries are dropped, so "Idea, , PHYSICS" becomes the tags idea and physics. The sidebar search matches your query case-insensitively against note titles, content, and tags simultaneously, and an additional tag filter narrows the list to a single tag. You can export the entire collection as a pretty-printed zettelkasten-notes.json file (JSON.stringify with 2-space indentation) and re-import notes from a JSON file: a parsed array is prepended to your current set rather than replacing it, while a file that fails to parse as JSON is rejected with an "Invalid file format" alert (valid JSON that is not an array is simply ignored with no change).
Create a note titled "Spaced Repetition", then in another note write "See [[Spaced Repetition]] for review timing." On save the bracketed text resolves to that note's ID and renders as a blue clickable link, while the "Spaced Repetition" note now shows the linking note under its Backlinks panel automatically.
Entering "Memory, , Learning Science" in the comma-separated Tags field saves the tags memory and learning science (trimmed, lowercased, empty entry dropped), which then appear as #memory and #learning science chips and become clickable filters in the sidebar.
Connect ideas from papers, articles, and books into a web of knowledge that reveals patterns.
Link new concepts to existing knowledge, reinforcing understanding through explicit connections.
Capture scattered ideas and watch themes emerge as you link related notes together.
A note-taking method based on small, atomic notes connected through links. The value comes from the connections between notes, not the notes themselves.
Notes can be exported as Markdown files, making them portable to other tools like Obsidian or Logseq.
The practical limit is your browser's local storage capacity, which is typically around 5-10 MB of text, enough for thousands of notes.
This runs as client-side JavaScript. Keys, tokens, payloads, and other inputs never leave your device.