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.
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.
Search
Search is a SQLite FTS5 full-text index over the title and the plain-text shadow copy, maintained by external-content triggers so it stays exactly in sync with the notes table without duplicating the rich blobs.
As you type in the search box, each word is treated as a prefix: typing pass wor finds a note containing "password working notes". The sidebar filters live with every keystroke. Sorting is a separate axis: creation time or title, either direction, one click.
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./uninstallreverses it - and your notes are always kept.- Open source - GPLv3. Every release attaches the exact source as
KillerNotes-x.y.z-src.zipnext to the exe.
Specs
| Spec | Value |
|---|---|
| Platform | Windows 10/11, x64 |
| Stack | C# / WPF on .NET Framework 4.8 (no runtime install on Win 10/11) |
| Storage | SQLite via Microsoft.Data.Sqlite; one database file per notepad in %APPDATA%\KillerNotes |
| Search | SQLite FTS5, external-content index, prefix matching as you type |
| Encryption | SQLCipher (AES-256), whole-database, opt-in per database |
| Rich content | WPF FlowDocument stored as XamlPackage blobs (images + tables round-trip) |
| Markdown | Markdig, 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 use | None, except the About panel's version check (GitHub) |
| Distribution | Single signed exe (~4.3 MB); portable, per-user install, or /silent machine-wide |
| License | GPLv3; source zip attached to every release |