Killendar Download Microsoft Store KillerMCP
Technical

What the file is, where it lives, and what the encryption actually covers.

The file

Unencrypted .kcal files can be opened with SQLite tools. Encrypted files require SQLCipher and the password.

filewhat it is for
.kcalA Killendar. The live database, written in place.
.icsInterchange only. Import and export.

Killendars default to %APPDATA%\Killendar. Manage Killendars can switch the catalog to any writable local folder, or place it beside Killendar.exe for a self-contained portable copy. A machine-wide install still defaults to a separate profile folder for each Windows account.

What is inside it

  • events - one row per appointment.
  • categories - the color definitions. They live in the Killendar rather than in settings, so they travel with the file when you move or share it.
  • meta - schema version and the app version that created the file, for forensics on a file that turns up years later.
  • deleted, templates and reminder_state - Recently deleted for 30 days, saved templates, and which reminders were dismissed or snoozed. Daily backups go to a Backups folder beside the file.

Time

Timed appointments are stored in UTC and converted at the edges, so a calendar carried to another timezone still says the right thing.

All-day entries are the exception, and deliberately so: they are floating calendar dates, stored unconverted with no Z. Converting them to UTC would slide an all-day appointment to the previous day for everyone east of UTC.

what you enteredwhat is on disk
14:00 local, in PDT2026-08-03T21:00:00.0000000Z
All-day, Sep 72026-09-07T00:00:00.0000000 - no Z, unconverted

An appointment can also keep a time zone of its own, once Show time zones is ticked in the date settings. Its times are typed on that zone's clock and stored with the zone's name, so a 9:00 meeting in Tokyo stays at 9:00 there when either place changes its clocks.

Encryption

Encryption is opt-in. With no password the file is plain SQLite. Set one from the lock button in the title bar and the whole file is encrypted at rest with SQLCipher.

propertyvalue
CipherAES-256 in CBC mode
IntegrityPer-page HMAC-SHA512
Key derivationSQLCipher's own PBKDF2, not a hand-rolled one
Unit of lockingOne password per Killendar - the file

The same button changes the password, or removes it and writes the file back out as plain SQLite. An encrypted Killendar asks for its password on launch; a wrong one just asks again.

There is no password recovery

The app says so before you commit to one. If a password is lost the locked Killendar is renamed aside and kept on disk rather than destroyed, and a new empty one opens in its place - so a forgotten password costs you access, not the file.

What the encryption does not protect

Worth stating plainly rather than implying otherwise:

  • Nothing is protected while the app is open and unlocked.
  • It is no defense against a keylogger, a memory dump, or someone who has your password.
  • settings.json stays plaintext. It holds the theme, locale, window position and which Killendar is active.
  • An .ics export is plain text by definition. Exporting from an encrypted Killendar writes an unencrypted copy, and the app warns you at the moment of export rather than after.

iCalendar

Import and export are written against RFC 5545 directly by Killendar's own parser; only time zone names are looked up with the TimeZoneConverter library. Import skips appointments already in the calendar and reports how many were added and how many were skipped.

Categories travel through both, using the standard CATEGORIES property, so they survive a trip through another calendar app. A category you import but have never defined shows in neutral gray rather than being dropped or silently created - deleting a category is meant to stick, and an import should not quietly undo that.

Repeats go out as RRULE, including the first to fourth or last weekday of a month, with extra dates as RDATE and skipped ones as EXDATE. Time zones travel with their VTIMEZONE definitions, and a file's own definition is read when Windows does not know the name. A newer invite for a meeting already here (a higher SEQUENCE) updates it and a cancellation removes it, after the import asks.

Keyboard

Almost everything is a single key, no modifier. That is only safe because of one rule: a bare-letter shortcut never fires while you are typing. The moment focus is in a text field every single-key binding stands down, so a w in a title is a w and not a jump to week view. The modified combinations are checked first and work regardless, because they cannot collide with typing.

Hold Ctrl to preview that layer - hover a lit key for its action
 

VIEWS

M or 1Month view
W or 2Week view
D or 3Day view
A or 4Agenda view
RSwitch month view between calendar month and rolling weeks
Alt+Shift+GFilm Grain
Alt+Shift+← / →Move sidebar left / right

NAVIGATION

← / →Previous / next month, week or day - whichever view is open
, / .Same as the arrows, without leaving the home row
TJump to today
Ctrl+FSearch appointments
Ctrl+GGo to a date

APPOINTMENTS

N / Ctrl+NNew appointment on the day you are looking at
BOpen the appointment panel composing a new one, or close it
Ctrl+EnterSave the appointment being edited
Ctrl+DeleteDelete the appointment being edited, with confirmation
Alt+AToggle all day while editing
Alt+ROpen repeat options while editing
Ctrl+Shift+MShrink or expand the focused appointment in month view
Ctrl+ZUndo the last change to an appointment
Ctrl+YRedo

FILE

Ctrl+IImport an .ics file
Ctrl+EExport to .ics
F5Reload the open .kcal file from disk
Ctrl+LLock the Killendar

HELP

F1The shortcuts overlay, with this same map and list in the app
F12About card - version, signature, exe hash, update check
EscClose the shortcut overlay, About card or appointment panel. Works even while typing.

Mouse: Ctrl+wheel over Month view changes the visible range from one to six weeks, giving busy days more vertical room. Ctrl+wheel over Week or Day changes time-grid density.

Running it

requirementdetail
PlatformWindows 10 / 11, x64
Runtime.NET Framework 4.8, already present on a current Windows
InstallPortable, per-user, or all-users. A silent path exists for winget, Chocolatey and RMM deployment.
UninstallLeaves your appointments in place and removes the file association it added.

Only one instance runs at a time. A second launch hands its file to the window already open and exits, rather than leaving two copies of the app writing to one database - which is the quickest way to corrupt SQLite.

Double-clicking a .kcal copies it into your data folder and opens the copy, leaving the original where it is. A Killendar is written to constantly, and SQLite over a network share is a well known way to lose a database.

Signing

Releases are Authenticode signed. The About card shows the publisher, the certificate thumbprint and the SHA-256 of the running exe, and it validates the signature with WinVerifyTrust rather than merely reading the embedded certificate - so a tampered build cannot display a signer it does not own. The chain check is cache-only, so opening About never stalls waiting on the network.

Glossary

termwhat it means here
KillendarBoth the app and one calendar file. "Open another Killendar" means switch to a different .kcal.
.kcalKillendar's file. A SQLite database holding your appointments and your category definitions, encrypted or not.
.icsiCalendar, the interchange format every other calendar reads. Import and export only - Killendar never runs from one.
CategoryA named color you define. An appointment can carry several; the first one paints it. Definitions live in the file, so they travel with it.
Orphan categoryA category on an appointment that this Killendar has no definition for, usually from an import. It shows in neutral gray rather than disappearing.
All-dayAn appointment with no time, held as a floating date. It never shifts with a timezone.
Floating dateA date with no timezone attached. September 7th is September 7th wherever you open it.
SQLCipherThe extension to SQLite that encrypts the whole database file at rest, page by page.
At restEncrypted on disk. It says nothing about the app while it is open and unlocked, which is why that limit is spelled out above.
PortableRunning the exe from wherever it sits, with no install. The footer says PORTABLE and offers to install it.
Per-user installInto your own profile. No administrator needed, and only your account gets it.
All-users installInto Program Files. Needs an administrator, and every account on the machine gets the app - though each still gets its own separate Killendar.
AuthenticodeMicrosoft's code signing. It proves the exe came from the signer and has not been altered since.
AccentThe highlight color of a theme. Dark, Light, Black and 98SE each offer eight, so the thirteen themes come to 41 looks in all; the other nine carry their own.