Klarinotte / Docs / Features

Features

Everything Klarinotte can do — and how to use it.

Editor & Markdown

Klarinotte uses a CodeMirror 6 editor with full markdown support: headings, bold, italic, strikethrough, lists (ordered, unordered, task lists), code blocks with syntax highlighting, tables, math equations (KaTeX), diagrams (Mermaid), and more.

Formatting Toolbar

A formatting toolbar above the editor provides quick access to common formatting actions — bold, italic, headings, lists, links, code, and math.

On mobile devices, an additional markdown character toolbar appears, giving quick access to characters frequently needed when typing markdown: [ ] # ` - *. This saves you from hunting through the mobile keyboard for these symbols.

Edit & Preview Mode

Switch between Edit mode (the markdown editor) and Preview mode (rendered markdown) with Ctrl+E (⌘+E on Mac), or click the toggle button in the note header. The scroll position syncs between modes, so you don't lose your place.

Diagrams (Mermaid)

Write a diagram as text in a code block marked mermaid, and it is drawn as a diagram:

```mermaid
graph TD
  A[Idea] --> B{Worth doing?}
  B -->|yes| C[Plan it]
  B -->|no| D[Park it]
```

Klarinotte uses Mermaid, so flowcharts, sequence diagrams, Gantt charts, class and state diagrams, pie charts, mind maps and the other Mermaid diagram types all work. A few things to know:

Offline: in the web app, the diagram engine is large, so it isn't part of the initial download: it downloads the first time you view a diagram while online, and after that diagrams work offline too. The desktop app includes it, so diagrams work offline from the start.

Jumping to the editor

To return focus to the editor from anywhere in the app — the sidebar, the search field, a modal trigger — press Ctrl+Enter (⌘+Enter on Mac). The cursor lands where it was last positioned, ready to type. Tab from the sidebar or from the note title still works for the common cases.

Browsing with the keyboard

Click a note in the sidebar and the arrow keys walk the list. In the Notes tab, ↑ ↓ stop on every folder, note and attachment; in the Search tab, on every result. A note opens as you land on it, and so does an image or PDF. A folder, or a file the viewer can't show (a ZIP, say), is only highlighted — the open note stays, and nothing is opened or downloaded. → opens a folder or steps into it, ← closes it or steps out to the folder you're in, and Enter opens or closes the highlighted folder or opens the highlighted file. Edit or preview mode stays as you left it.

Pasting from the Web

When you copy formatted content from a website — headings, bold text, links, lists, tables — and paste it into Klarinotte, the HTML formatting is automatically converted to Markdown. Pasted content becomes clean, portable Markdown rather than raw HTML or a blob of plain text stripped of all structure.

For example, copying a bulleted list from a webpage and pasting it will produce a proper Markdown list; a bold heading on a page becomes ## Heading; a hyperlink becomes [link text](url).

Overriding the conversion

Sometimes you want plain text without any formatting, or you want the raw HTML itself. There are two ways to bypass the automatic conversion:

Pasting and Dropping Images

You can add an image to a note by pasting it from the clipboard (a screenshot, a copied browser image) or by dragging a file in from your file manager. Klarinotte saves the image as an attachment and inserts a Markdown image link at the cursor.

Before saving, a small dialog asks you to confirm or change the filename. The filename it suggests depends on where the image came from:

Choosing the default filename format

Open Settings → Files and links → Default filename for pasted images and pick one of:

Skipping the filename dialog

If you don't want to be asked every time, turn off Settings → Files and links → Prompt for image filename on paste. Pasted and dropped images will then be saved silently using the format you selected above.

Connect your notes with double-bracket wiki-style links. The full syntax:

[[Meeting Notes]]                  Link by title
[[Projects/Redesign]]              Link by folder path + title
[[Meeting Notes#Action Items]]     Jump to a specific heading
[[#Action Items]]                  Same-note heading link
[[Meeting Notes|notes]]            Custom display text
[[id:a1b2c3d4-e5f6-…]]             Link by note ID — survives renames

The heading anchor and display label are optional and can be combined: [[Meeting Notes#Action Items|action items]], [[id:a1b2…#Action Items]], and so on.

Following Links

From preview mode, click any wiki-link to open the target. If the link includes a heading anchor, the editor scrolls to that heading on arrival.

From edit mode, hold ⌘ (macOS) or Ctrl (Windows/Linux) and click the link to navigate. While the modifier is held, the link under the pointer gets an underline and the cursor turns to a pointer — your signal that it's about to be followed. Without the modifier, clicks position the text cursor as usual. If you pause briefly over a wiki-link without pressing the modifier, a small ⌘+Click to open hint appears as a reminder.

On a phone or tablet, where there is no ⌘ or Ctrl, tap the link: the cursor goes into it as usual, so you can still edit it, and an Open … button appears just below it. Tap the button to follow the link. This works for wiki-links, links to other notes and web links (which open in your browser), with a finger or a stylus such as Apple Pencil. The button goes away when you start typing or tap somewhere else.

When the target doesn't exist yet, cmd/ctrl-clicking a title-based link creates it on the spot — including any missing folders in the path. If the link includes a heading, the new note is seeded with that heading so the cursor lands inside it. ID-based links ([[id:…]]) and same-note heading links ([[#Heading]]) never auto-create — they show a warning toast if the target is missing.

Visual Cues

Wiki-links to existing notes appear in blue; broken links — targets that don't exist yet — appear in red. The colour updates as soon as the target is created or deleted, so a link's appearance always reflects whether it currently resolves.

Linking to attachments

Wiki-links aren't only for notes — you can point one at an attachment too. [[diagram.png]] is a normal link: following it opens the file in the attachment viewer. Prefix it with ! — ![[diagram.png]] — to embed the image (or PDF) inline in the note instead. Attachment links resolve like note links, so they show in blue rather than red, and following one never creates a stray note.

Fuzzy Auto-Suggest

When you type [[, an autocomplete menu appears. It uses fuzzy matching — you don't need to type the exact title. For example, typing [[meet no will match "Meeting Notes", and [[prj rdsn will find "Projects/Redesign".

Matching attachments appear in the same menu, listed below notes; choosing one inserts its assets/… path for you, so you don't have to remember or retype file names.

Typing # after a title (e.g. [[Meeting Notes#) switches the suggestions to that note's headings, so you can pick the right anchor without leaving the editor.

Backlinks

The right sidebar shows backlinks — all notes that link to the currently open note. This lets you discover connections and navigate your knowledge graph.

Automatic Link Updates

When you rename or move a note, all wiki-links pointing to it are automatically updated across your entire vault. Moving several notes or folders at once works the same way — see Selecting and Organising Several Items.

Note ID

Every note has a unique note ID assigned when it's created. The ID is stable — it never changes when you rename, move, or edit the note. This is what makes it possible to link to a note in a way that survives renames (see Projects & Backlinks and the [[id:…]] wiki-link form).

Where to find a note's ID

Open the note and look at the browser's address bar. The URL has the form:

https://app.klarinotte.com/note/<note-id>

Everything after /note/ is that note's ID. For example, in https://app.klarinotte.com/note/a1b2c3d4-e5f6-4789-abcd-ef1234567890 the ID is a1b2c3d4-e5f6-4789-abcd-ef1234567890. Copy that segment whenever you need to reference the note by ID — for instance inside a [[id:…]] wiki-link or a task's projects: field.

Sharing a link to a note

The full URL in the address bar is also a direct link to the note. Bookmark it in your browser, paste it into another note, or send it to yourself across devices — opening the link reopens that exact note, as long as the vault containing it is the one currently open.

Tags

Add tags anywhere in your notes using hashtag syntax:

#project #idea #work/meeting #research/physics/quantum

Hierarchical Tags

Tags support hierarchies using forward slashes. #work/meeting creates a nested tag — you can filter by the parent #work to see all work-related notes, or drill down to #work/meeting specifically. The tags panel lets you switch between flat and hierarchy views.

Tasks

Klarinotte includes lightweight task management that lives inside your notes. There is no separate task database — every task is just a note with some YAML frontmatter at the top. Open the Tasks panel from the left sidebar (the checkbox icon) to see all tasks across the current vault.

What Makes a Note a Task

A note is treated as a task when its frontmatter contains a non-empty status: field. That single key is the trigger:

---
status: todo
---
Investigate the auth race condition reported by a user.

This note now appears in the Tasks panel under todo. If status: is missing or empty, the note is treated as a normal note — even if it has other frontmatter fields like tags or title.

Status Values

The Tasks panel groups tasks by their status. The recommended values are:

Any string is allowed. If you write status: blocked or status: waiting-on-client, that becomes its own group in the panel. Klarinotte does not enforce a fixed list — pick whatever vocabulary fits your workflow. The trade-off is that custom statuses don't fall under the canonical todo / doing / done columns.

Toggling the checkbox in the panel sets the status to done when checked and back to todo when unchecked — even if the task previously had a custom status like doing or blocked. To keep a non-canonical status, edit the frontmatter directly in the note rather than toggling.

Other Task Properties

Beyond status, a task supports these optional fields:

---
status: doing
due: 2026-05-20
priority: normal
contexts: [writing, deep-work]
projects: ["[[Q2 Editorial Calendar]]"]
timeEstimate: 120
---
Draft section 3 — token bucket vs leaky bucket.
FieldTypeNotes
statusstringRequired. Anything non-empty marks the note as a task.
duedate / datetimeOptional. ISO 8601 recommended. Invalid dates are ignored.
prioritystringOptional. One of urgent, high, normal, low. Other values are ignored.
contextsstring arrayOptional. Free-form labels (e.g., home, office). Shown as clickable chips.
projectswiki-link arrayOptional. See Projects & Backlinks below.
timeEstimateinteger (minutes)Optional. 60 means one hour. Non-positive or non-numeric values are ignored.

Date and Time Format

due accepts any string the browser's Date parser understands. Recommended forms:

An unparseable value (tomorrow, next week) is silently ignored — the task still shows up, just without a due date. timeEstimate is a positive integer in minutes.

Sort Order

Inside each status group, tasks are sorted by:

  1. Due date ascending — earliest first; tasks with no due date go to the end.
  2. Priority descending — urgent → high → normal → low; tasks with no priority go to the end.
  3. Last updated descending — most recently changed first.

Filtering

Click any context or project chip on a task row to filter the list. The chip becomes an active-filter pill below the panel header.

Projects & Backlinks

The projects: field uses the same wiki-link syntax as the rest of Klarinotte. Each entry can be:

Because these are real wiki-links, every project link counts as a regular backlink. Open the project note (e.g. Q2 Editorial Calendar) and its Backlinks panel will list every task that references it — no separate task lookup needed. This is the recommended way to see all tasks belonging to a project.

The little arrow icon on a project chip jumps directly to the linked note; clicking the chip body filters the task list instead.

Quote wiki-links in YAML. Always wrap each entry in quotes — projects: ["[[Q2 Editorial Calendar]]"]. Without the quotes, YAML interprets the double square brackets as a nested array and the projects field becomes empty.

Sync

Because a task is just a note, it syncs through the same end-to-end encrypted pipeline as every other note. Status changes you make in the Tasks panel are reflected on your other devices on the next sync, and the panel auto-refreshes when remote changes arrive — no manual reload required.

Editing Tasks

You can edit a task either from the Tasks panel (status toggle) or by opening the note and editing the frontmatter directly. Both paths stay in sync — typing a new status: in the editor immediately updates the panel; toggling the panel checkbox immediately updates the open editor.

Checklists

The panel has a Tasks / Checklists toggle at the top. The Checklists view is a different thing from the frontmatter tasks above: it gathers every Markdown checkbox line — - [ ] and - [x] — from across the whole vault and lists them grouped by the note they live in. Use it to find the loose to-dos you scattered inside meeting notes, daily notes, and project pages, without turning each one into a full task note.

The panel remembers which sub-view (Tasks or Checklists) you last used, so switching to another sidebar tab and back keeps you where you were.

Frontmatter

YAML frontmatter is an optional metadata block at the very top of a note, delimited by ---. It's how Klarinotte stores structured properties (tags, task fields, import hints) without leaving the plain-text world — the file remains a portable Markdown document that any other editor can read.

---
title: Q2 Editorial Calendar
tags: [writing, planning]
created: 2026-04-01
status: doing
---

Body of the note starts here.

Keys Klarinotte Recognizes

KeyUsed byNotes
titleVault importOverrides the file-derived title when importing.
tagsTag panelString or array; appears in the tag tree.
created, updatedVault importISO timestamps preserved during import.
folderVault importTarget folder during import.
statusTasksMarks the note as a task. Required for it to appear in the Tasks panel.
dueTasksTask due date (ISO 8601).
priorityTaskslow / normal / high / urgent.
contextsTasksArray of free-form context labels.
projectsTasksArray of wiki-links to project notes.
timeEstimateTasksEstimate in minutes.

Custom Keys Don't Interfere

Unknown keys are preserved when Klarinotte rewrites the frontmatter (for example when toggling a task status). You can freely add your own fields — customer:, confidence:, mood:, anything — and they will round-trip through any save without being touched.

Likewise, having only non-task keys (tags, title, etc.) does not turn a note into a task: the task system specifically looks for a non-empty status: and ignores everything else.

Editing Frontmatter

Edit the block directly in the editor. As you type, dependent panels (tags, tasks, backlinks) update in real time. Quote any value containing colons, leading dashes, or YAML special characters:

title: "Editing: Phase 1"
note: "- starts with a dash"

Visual treatment

The whole frontmatter block (from the opening --- through the closing ---) is rendered slightly faded so the body content reads as primary. Inside that block, keys that Klarinotte actually reads (the ones in the table above) are shown in your accent color; custom keys and typos stay in the regular text color.

This is passive feedback — there are no warnings or popups. If you typed staus: by mistake, it won't pick up the accent color, and the surrounding correctly-spelled keys will. A custom key like customer: stays plain because it's not a typo, and you'll know to expect that.

Tip: Frontmatter is the single source of truth. There is no hidden database — what you see between the --- markers is exactly what gets stored, synced, and exported.

Quick Switcher

Press Ctrl+P (⌘+P on Mac) to open the Quick Switcher — a modal search that lets you jump to any note instantly.

It uses fuzzy search, so you can type fragments of a note title and it will find the match. Recently opened notes appear at the top when the search field is empty. Use arrow keys to navigate results and Enter to open.

The switcher searches attachments as well as notes: notes and attachments are ranked together in one list by how well their name matches, and matching attachments are marked with a paperclip. Selecting an attachment opens it in the attachment viewer.

On mobile, where there's no keyboard shortcut to press, tap the search icon in the header to open the switcher.

Prefix the query with ? (for example ?meeting notes) to switch the switcher into omni mode. Instead of matching only on names, it ranks results across the full note content and tags as well, and shows a short snippet around the matched word under each title — useful when you remember a phrase from inside a note but not the title. The leading ? is consumed as the mode switch and is not part of the query. Type just ? on its own to see the prompt before typing your search terms.

The search page provides full-text search across all note titles, content, and tags. The index is built entirely in your browser — your notes never leave your device for search. It supports:

Beyond keyword matching, Klarinotte offers semantic search — find notes by meaning and concept, not just exact words. This is powered by a multilingual AI model that runs entirely on your device.

How It Works

  1. Download the model — On first use, a ~25 MB embedding model is downloaded to your browser. This happens once and is cached for future use.
  2. Index your notes — Notes need to be indexed before they can be searched semantically. Open the Semantic Search section in Settings to index your notes. Notes that are too short (below a configurable minimum character length) are excluded from indexing.
  3. Search by concept — Activate the semantic search toggle (✨) on the search page and type a natural language query. Results are ranked by conceptual similarity.

Semantic Search Menu

In Settings → Semantic Search, you can:

Multilingual: The embedding model supports many languages (English, German, French, Arabic, Chinese, and more), as well as programming languages. You can search across languages — a query in English can find relevant notes written in other languages.

Note: Semantic search is available on desktop browsers only. On mobile devices, the model would be too large to load reliably.

Image Search via OCR

When you drop a photo or screenshot into a note, the content inside that image is invisible to search — until OCR runs on it. Klarinotte's OCR feature is powered by Tesseract.js and runs entirely on your device. No images are ever sent to a server.

The Goal: Findability, Not Transcription

Klarinotte's OCR is not trying to produce a perfect transcript of every image. The goal is simpler and more practical: extract enough meaningful keywords so that a typed search query can surface the right note, even when the relevant information lives inside an image rather than in the written text.

Think of it as giving your images a voice in search. If you paste a screenshot of a recipe, a whiteboard photo, or a scanned business card, OCR pulls out the words it can read — and those words become searchable anchors for the note.

How OCR Results Are Stored

The recognized keywords are stored as an HTML comment placed directly after the image in your note's markdown:

![whiteboard](assets/whiteboard.jpg)
<!-- OCR-DATA confidence=82 language=eng date=2025-11-15T10:30:00Z
sprint backlog velocity retrospective
user story acceptance criteria
-->

This is a deliberate design choice with two benefits:

The result is that visual appeal is preserved while your images become part of the searchable fabric of your vault.

Running OCR

To run OCR on a note's images, open the toolbar overflow menu ⋮ and choose the OCR command. Klarinotte will process every image in the note and insert keyword comments for any images that don't already have one.

Text Filtering

OCR output can be noisy — low-confidence guesses, image artifacts, and stray symbols. Klarinotte includes configurable filters to keep only the useful words. In Settings → OCR, you can enable or disable each filter:

Languages

OCR supports multiple languages. Language data files are downloaded automatically on first use for each language you enable, then cached locally. When multiple languages are active, Tesseract processes images with all of them simultaneously, which is useful for notes that mix scripts (e.g., English and Arabic).

To add or remove OCR languages, go to Settings → OCR → Languages. Each language has a toggle — enable the ones you need and disable the ones you don't. You can have several languages active at the same time. Removing a language does not delete already-extracted OCR data from your notes; it only affects future OCR runs.

First run: The OCR engine and language data are downloaded automatically the first time you use OCR. Each language file is only downloaded once and then cached — no internet connection is required for subsequent runs.

Graph View

The graph view visualizes your notes as an interactive node-link diagram. Each note is a node, and wiki-links between notes are edges. You can pan, zoom, and click on nodes to navigate to notes. Filtering by tags, folders, or connections is supported.

Note History

Klarinotte keeps earlier versions of your notes as you work. To see them, open the More actions menu in the editor toolbar and choose View history. The list shows each version with its time and where it came from. Select one to read it, either rendered (Preview) or as plain markdown (Raw), and click Restore This Version to bring it back. Before restoring, your current text is saved as a snapshot, so a restore can itself be undone. A restore replaces the text on all your devices.

All devices and This device

When a notebook syncs, the history panel has two views:

Synced versions are end-to-end encrypted, the same as your notes: the server stores them but can't read them.

History on this device

A snapshot is written 2 minutes after you stop typing, at least every 10 minutes while you keep typing, and as soon as you leave the note or hide the app. This device keeps:

Snapshots labelled Before a sync merge are taken just before sync merges in another device's changes. They are kept for 30 days.

Synced history

How long synced versions are kept depends on your plan: 30 days on Free and 1 year on Pro. Everything from the last 48 hours is kept. Older versions are thinned the same way as on your device: one per hour for a week, then one per day for a month, one per week for 12 weeks, and one per month after that.

Synced history doesn't count toward your storage. It has its own allowance, the same size as your plan's storage. If your history outgrows it, the oldest versions are removed first.

History in shared notebooks

In a shared notebook, members who can edit see the notebook's history, including text that was deleted before they joined. Members who can only view don't see the synced history, only what their own device kept. How long the history is kept depends on the notebook owner's plan. Versions saved before the owner removed a member (which changes the notebook's key) stay readable.

If you're the owner and the notebook's past contains text you don't want new members to see, click Clear history before sharing in the share dialog. Earlier synced versions, and recently deleted notes, disappear from the history at once, for you as well as for members, and are deleted from the server within a few days. Every note keeps its current text, and the history kept on each device isn't affected.

Recovering notes deleted from Trash

In a synced notebook, a note you delete from Trash can still be recovered for 30 days. Open Trash and expand Recently deleted. Restoring a note brings it back with its last title, text, tags and version history, on all your devices. To get rid of a note for good, use Delete permanently, including history: it leaves the list at once and is deleted from the server within a few days.

Moving a note to Trash keeps its history. Deleting it from Trash (including emptying Trash and the automatic Trash cleanup) also deletes the history on this device.

Templates

A template is a regular note in your Templates/ folder whose frontmatter and body act as a recipe for new notes. Press Ctrl+D (⌘+D on Mac) to create a note from your default template, or click the chevron next to the + button to pick any template explicitly.

Getting started

Open Settings → Templates and click Create starter templates. This adds four example templates to your Templates/ folder — Daily, Weekly, Meeting, and Tasks — and binds ⌘+D to the Daily one. The action is safe to click again: existing templates are never overwritten, only missing ones are created.

The templates folder shows up in your file explorer with a distinctive stamp icon, sorted to the end of the folder list. To author your own template, just create a new note inside that folder.

The Tasks starter pre-wires every field the in-app tasks feature reads (status, due, priority, contexts, projects, timeEstimate) but ships with status: intentionally empty. That keeps the template note itself out of the Tasks panel — once you create a note from it, set status: todo (or doing / done) to start tracking it.

Template frontmatter

The directives live under a single klarinotte_template: block in the template's frontmatter. The whole block is stripped from the resulting note — only your own frontmatter is carried over.

---
klarinotte_template:
  folder: Daily/{{YYYY}}/{{MM}}
  title: "{{YYYY}}-{{MM}}-{{DD}}"
  on_existing: open
  description: "A daily journal entry, filed by year and month."
tags: [daily]
---

# {{YYYY}}-{{MM}}-{{DD}}

## Notes
{{cursor}}

## TODOs

The optional description directive is a free-form, human-readable blurb — useful as a self-documenting note for what the template is for.

Variable tokens

Tokens are wrapped in double curly braces and resolved once, on the device that creates the note, against the local clock. The created note contains concrete strings — there are no variables to re-evaluate later.

TokenMeaningExample (Sat 2026-05-09 14:07:33)
{{YYYY}} / {{YY}}4- / 2-digit year2026 / 26
{{Q}}Quarter (1–4)2
{{MM}} / {{M}}2- / 1-digit month05 / 5
{{MMM}} / {{MMMM}}Short / full month nameMay / May
{{DD}} / {{D}}2- / 1-digit day-of-month09 / 9
{{DDD}}Day of year129
{{ddd}} / {{dddd}}Short / full weekdaySat / Saturday
{{HH}} {{mm}} {{ss}}Hours / minutes / seconds (24h)14 07 33
{{WW}} / {{W}}ISO 8601 week number (zero-padded / not)19 / 19
{{GGGG}}ISO 8601 week-year (see callout below)2026
{{title}} / {{title:Default}}Prompted from the user; optional default(whatever you type)
{{cursor}}Where the editor caret lands when the note opens—
{{counter}} / {{counter:- (#)}}Auto-incrementing collision counter (suffix strategy) / - (2)
{{vault}}Active notebook name(your notebook)
{{date:FORMAT}}Custom format using date-fns tokens{{date:yyyy-MM-dd HH.mm}} → 2026-05-09 14.07

ISO week-year gotcha: ISO 8601 defines week 1 as the week containing the first Thursday of the year, so 2024-12-30 belongs to ISO week 1 of 2025 — not week 52/53 of 2024. Always pair {{WW}} with {{GGGG}} (the ISO week-year), not {{YYYY}} (the calendar year), or your "Week 1" notes will jump calendar years near New Year.

Collision strategies

The on_existing directive controls what happens when a note with the resolved title already exists in the resolved folder.

StrategyBehaviorUse case
openOpen the existing note, no new note createdDaily / weekly / journal templates
suffixAppend (2), (3), … to the titleReports, meeting notes
promptAsk whether to open or create newMixed / unsure
errorRefuse and show an error toastStrict / one-per-day templates

If the directive is omitted, the default is suffix.

Folder routing

The folder directive can contain variables and slashes — Klarinotte walks the path and creates any missing folders. Daily/{{YYYY}}/{{MM}} on Sat 2026-05-09 routes the note into Daily/2026/05/; the Daily, 2026, and 05 folders are auto-created if they don't exist.

The default template

The Default template setting (Settings → Templates) is the one ⌘+D invokes, and it gets a default badge in the new-note chevron menu. The plain + button always creates a plain note — it does not use the default template — so users who never touch templates see exactly the original new-note behavior.

The Default template is per-notebook: each notebook stores its own value. Setting it in one notebook does not affect another. The Templates folder path is global (one value across notebooks); the default template binding is local because it stores a note id, which is meaningful only inside the notebook that owns the note.

Themes & Appearance

Dark & Light Mode

Toggle between dark and light themes with Ctrl+Shift+L (⌘+Shift+L on Mac).

Accent Color

Customize the accent color used throughout the interface — buttons, links, highlights, and active states. Choose from the available accent colors in Settings → Appearance.

Zen Mode

Toggle zen mode with Ctrl+Alt+Z (⌘+Option+Z on Mac) to hide the sidebar and all UI chrome, leaving only your note content for distraction-free writing.

Bidirectional Text

Klarinotte automatically detects the script direction of each line in the editor. Lines beginning with right-to-left characters (Arabic, Hebrew, Persian, Urdu, etc.) are automatically aligned to the right, while left-to-right lines remain left-aligned. This happens per-line — you can mix LTR and RTL content freely within the same note.

Empty lines inherit the direction of the previous line, so pressing Enter in the middle of RTL text continues in the correct direction.

Toolbars

Formatting Toolbar

The toolbar above the editor provides one-click formatting: bold, italic, headings, lists, links, code blocks, and math equations.

Mobile Markdown Toolbar

On mobile devices, an additional toolbar provides quick-insert buttons for commonly used markdown characters: [ ] # ` - *. These characters are often buried in secondary keyboard layers — this toolbar puts them one tap away.

Platforms & Mobile

Browser Support

Klarinotte runs in all modern browsers: Chrome, Firefox, Safari, and Edge.

Install as a Web App

On supported browsers, you can install Klarinotte as a PWA (Progressive Web App) for a native-like experience — fullscreen window, faster launch, and home screen icon.

Mobile Optimization

On mobile devices, Klarinotte adapts to smaller screens: the sidebar auto-closes when you select a note, the interface is optimized for touch interaction, and the mobile markdown toolbar provides quick access to commonly needed characters.

The file explorer sidebar supports keyboard navigation:

Selecting and Organising Several Items

Select more than one note, folder or attachment in the sidebar to move, export, or trash them together.

Selecting on desktop

Ctrl-click (⌘-click on Mac) adds or removes an item from the selection without opening it. Shift-click selects every row between the item you last Ctrl/⌘-clicked (or the open note) and this one. Shift+↑ / Shift+↓ extends the selection from the keyboard, Ctrl+A (⌘+A on Mac) selects everything currently visible, and Escape clears the selection. A plain click on a note still opens it and clears the selection; opening or closing a folder is navigation, so it leaves the selection untouched. A strip above the list shows how many items are selected.

The assets folder and the Templates folder themselves can't be selected — notes inside the Templates folder can be.

Selecting on phones and tablets

Long-press a note or folder and choose Select to enter selection mode. From there, tap notes, folders and attachments to add or remove them from the selection. A bar at the bottom of the sidebar offers Move, Export, Trash, and Cancel.

Acting on a selection

On desktop, right-click a selected item (or click the ⋯ button that appears when you hover it) for Move N items to…, Export N items…, or Move N items to Trash. You can also drag the whole selection onto a folder to move it there.

Moving several items

Every selected item lands directly inside the target folder, side by side, no matter which level of the tree it came from. Folders keep their contents, and a note or folder inside a selected folder travels along with it. If a name is already taken in the target folder, the moved note becomes "Title (2)" (folders become "Name (1)"). Links to the moved notes are updated across your vault, as long as Settings → Automatically update internal links is on (see Wiki-Links).

Notes currently busy with text recognition (OCR) are skipped and reported rather than moved. Attachments can't be moved this way — they live in the assets folder — so Move is unavailable while the selection contains one.

Undo and redo

After a move — of one item or many — the confirmation message at the bottom offers an Undo button. On desktop, Ctrl+Z (⌘+Z on Mac) does the same while the sidebar has focus, and so does Edit → Undo in the desktop app. Undo puts the items, and the links the move changed, back exactly where they were; anything you renamed or moved again since is left alone and reported rather than guessed at. After an undo, a Redo is offered the same way — Ctrl+Shift+Z or Ctrl+Y (⌘+Shift+Z on Mac). There's one step of undo and one of redo — a new move or trash replaces whichever is pending. In a text field, these same keys undo and redo your typing as usual. On touch devices, the message stays on screen until you dismiss it. Moving items to Trash — one item or many — can be undone and redone the same way.

Trashing a selection

Trashing a selection asks for a single confirmation covering the whole selection, with counts of what's included; in a notebook shared with others, it also warns that the items are trashed for every member. Trashed items go to Trash and can be restored later — or are deleted permanently right away, depending on your Settings → Deleted notes, folders, and attachments choice. Deleting a single item works the same way. When items go to Trash, the message at the bottom offers Undo, which brings them straight back (there's no Undo for a permanent delete).

Restoring never replaces anything or creates a duplicate name. If a note with the same title is already in the same folder, the restored note comes back as “Title (2)”; a folder next to one with the same name comes back as “Name (1)”. Only the name changes — the note's text and links stay as they were. An attachment whose name is taken asks you for a new one, suggesting “name-2.ext”.

Exporting a selection

Exporting a selection produces a single zip file (Markdown or HTML). Each selected note or folder sits at the top level of the zip, folders bring their contents along, and both the attachments referenced inside the exported notes and any attachments you selected directly are included.

Offline & Updates

Klarinotte is a fully offline-capable application. Once loaded, it works without an internet connection. All your data is stored locally in your browser.

The app automatically checks for updates in the background. You can also manually check for updates in Settings. To force an immediate update, press Ctrl+Shift+R (⌘+Shift+R on Mac) to hard-reload and pull the latest version.

Bookmarks & Attachments

Bookmarks let you pin frequently accessed notes — or specific sections within notes — for quick access from the Bookmarks tab in the left sidebar.

Bookmarking a whole note

Right-click a note in the file list and choose Add Bookmark. The note appears in the Bookmarks tab.

Bookmarking a heading (section)

Every markdown heading in the editor (#, ##, ###, …) shows a small bookmark icon at the end of the line. Click the icon to bookmark that heading; click it again to remove the bookmark. The icon turns orange and fills in when the heading is bookmarked.

You can also bookmark a heading from the Outline panel in the right sidebar — hover any heading in the outline and click its bookmark button.

Heading bookmarks appear in the Bookmarks tab grouped under their parent note, labelled as Note title > Heading text. Clicking a heading bookmark opens the note and jumps straight to that section.

Hiding the heading bookmark icons

If you find the in-editor bookmark icons distracting, you can turn them off in Settings → Editor → Show bookmark icon next to headings. Bookmarking from the right sidebar Outline panel and the right-click menu still works regardless of this setting.

Syncing bookmarks

When you sign in to sync, your bookmarks (both whole-note and heading bookmarks) sync end-to-end encrypted across your devices alongside your notes. Adding, removing, or renaming a bookmark on one device propagates to the others on the next sync. Permanently deleting a note also removes its bookmarks on every device.

Attachments

Attachments (images and other files) are added to a note by pasting, drag-and-drop, or the attach button — see Pasting and Dropping Images for how names are chosen. They live in a fixed assets folder, are stored alongside your notes, and sync end-to-end encrypted once you sign in.

Opening an attachment. Click an attachment in the file explorer, or follow a [[file]] link to it, to open it in the built-in attachment viewer: images display inline, PDFs open in an embedded viewer, and any other file type offers a download. The viewer is part of normal navigation — the Back and Forward buttons (and their shortcuts) return you to the note you came from.

Saving a copy. Right-click an attachment and choose Save a copy to write the original file out to your computer, unchanged.

Renaming an attachment updates the links to it across your vault, the same way renaming a note does.

Removing unused attachments. Open the File Manager (the drive icon at the bottom of the sidebar) and choose Clean Up Orphans to list the attachments no note links to. Untick any you want to keep; the rest go to Trash, or are deleted permanently if that is your choice under Settings → Deleted notes, folders, and attachments. A permanent delete always asks you to confirm first.