KillerNotes Download
Technical

How the notepad actually works: storage, search, encryption, and the sharing formats.

Architecture

KillerNotes is a native Windows app written in C# and WPF on .NET Framework 4.8 (x64). There is no web view wrapping a JavaScript app and no runtime to install on Windows 10/11 - it is the same stack as the rest of the KillerTools family, sharing the KillerUI chrome: custom title bar, six live-switchable themes with accent colors, film grain, and the family status bar.

The editor is a WPF RichTextBox working on a real FlowDocument, which is what makes inline images and true tables first-class citizens rather than attachments. Everything else - search, storage, encryption, sharing - lives underneath it in a SQLite database.

Storage

Notes live in a single SQLite database per notepad, stored under %APPDATA%\KillerNotes. Each note row keeps three representations of the same content:

  • Title and metadata - creation and modification timestamps, used for the sidebar and sorting.
  • A XamlPackage blob - the full rich content. XamlPackage is WPF's container format for FlowDocuments: formatting, embedded images, and tables all round-trip through the database byte-perfect. Pasted screenshots are re-encoded to PNG on the way in so they serialize reliably.
  • A plain-text shadow copy - extracted on every save and fed to the search index, so search never has to parse rich content.
Editor WPF RichTextBox FlowDocument images + tables inline autosave 2s pause note switch alt-tab / close One note, three forms title + timestamps XamlPackage blob (rich) plain-text shadow copy SQLCipher AES-256 (optional) notes.db (SQLite) notes table ⇅ external-content triggers FTS5 full-text index %APPDATA%\KillerNotes .knote one torn-off note .kndb whole notepad .txt .rtf .html plain exports
The life of a note: the editor commits every change into one SQLite file, the search index stays in sync by trigger, encryption wraps the whole file, and shares tear off from there.Click the diagram to enlarge.

Autosave

There is no Save button to forget. A save commits 2 seconds after you stop typing, plus immediately on note switch, on alt-tab away, and on close. Ctrl+S exists for peace of mind, but it is just "commit now" - the same write the timer would have made.

Encryption

Password protection is whole-database encryption with SQLCipher (AES-256), not an application-level gate. When a password is set, every byte of the file is encrypted at rest - notes, images, the search index, the metadata, all of it. A KillerNotes database with a password is unreadable in any SQLite tool without the key.

Setting, changing, or removing the password rebuilds the database through SQLCipher's export path into a fresh file, then atomically swaps it in. There is no plaintext temp copy of an encrypted database left behind.

The honest fine print

  • A database with no password set is a normal SQLite file - encryption is opt-in per database, one click on the title-bar lock.
  • There is no recovery back door. If you forget the password, the unlock screen offers a fresh start and archives the locked file (kept on disk, unlockable later if the password comes back to you) - but the encrypted data itself is unrecoverable by design.
  • Drag-out shares are unencrypted by design (there is no sane way to prompt for a password mid-drag). Use "Share note..." for a protected copy.

Sharing formats

Sharing follows the notepad metaphor: tear off a sheet, or hand over the whole pad.

  • .knote - a single shared note. Under the hood it is literally a one-note KillerNotes database, optionally SQLCipher-encrypted with its own share password. The recipient double-clicks it and the note imports into their current notepad (prompting for the password if one was set).
  • .kndb - a whole database. Its encryption travels with it: if the notepad had a password, the recipient needs it. Double-clicking adds it to the data folder and switches to it; the previous notepad stays available in Manage databases.

Both extensions register per-user (HKCU only - no admin rights) with their own icons. Dragging a note out of the sidebar uses the standard shell file-drop mechanism, so Teams, Outlook, and Explorer all accept it like a real file, because it is one.

The deliberately avoided extension: .kdb belongs to KeePass, and a tech's file manager should never confuse the two.

Import & export

In

Ctrl+O or drop files anywhere sensible: .txt / .log / .md import as text notes, .rtf loads natively with formatting intact, images land inline, and .html imports as source - which the preview pane then renders, same as the markdown story: source in the editor, preview to view. Each file becomes its own note titled by its filename.

Out

Any note exports as plain text, as .rtf (WordPad/Word-compatible, images included), or as a standalone theme-styled HTML page built by a purpose-built FlowDocument-to-HTML converter: paragraphs, lists, tables, character formatting, colors, and images embedded as base64 data URIs - one self-contained file.

Preview

Notes that look like markdown or HTML get a preview toggle. Markdown renders through Markdig with raw HTML disabled; HTML notes are defused before display - scripts, event handlers, frames, and javascript: URLs are stripped. The preview is a viewer, never a place where pasted content gets to run.

Privacy

Everything runs on your machine. Notes never leave your disk unless you export or share them yourself. There is no account, no cloud sync, no telemetry, and no ads. The only network request the app ever makes is a version check against GitHub when you open the About panel.

Distribution

KillerNotes ships as a single signed exe - about 4.3 MB with every dependency embedded, including the SQLCipher engine. There is no installer to run and no folder of DLLs: download, double-click, take notes. The exe is Authenticode-signed and timestamped, so Windows shows a verified publisher instead of an unknown-publisher warning, and the About panel shows the certificate thumbprint plus the exe's SHA-256 to check against the release page.

  • Portable first - run it from anywhere, including a USB stick. Notes always live in %APPDATA%\KillerNotes, so where the exe sits does not matter.
  • Optional install - a PORTABLE badge in the status bar offers a one-click per-user install: Start Menu shortcut, optional desktop shortcut, and an Add/Remove Programs entry. No admin rights needed.
  • KillerNotes.exe /silent - unattended machine-wide install to Program Files, made for RMM, winget, and Chocolatey deployment. /uninstall reverses it - and your notes are always kept.
  • Open source - GPLv3. Every release attaches the exact source as KillerNotes-x.y.z-src.zip next to the exe.

Specs

SpecValue
PlatformWindows 10/11, x64
StackC# / WPF on .NET Framework 4.8 (no runtime install on Win 10/11)
StorageSQLite via Microsoft.Data.Sqlite; one database file per notepad in %APPDATA%\KillerNotes
SearchSQLite FTS5, external-content index, prefix matching as you type
EncryptionSQLCipher (AES-256), whole-database, opt-in per database
Rich contentWPF FlowDocument stored as XamlPackage blobs (images + tables round-trip)
MarkdownMarkdig, advanced extensions, raw HTML disabled
Share formats.knote (single note), .kndb (whole database), HKCU file associations
Import.txt, .log, .md, .html, .rtf, png/jpg/gif/bmp images
Export.txt, .rtf, self-contained .html; notes also share as .knote
Network useNone, except the About panel's version check (GitHub)
DistributionSingle signed exe (~4.3 MB); portable, per-user install, or /silent machine-wide
LicenseGPLv3; source zip attached to every release