User activity
Sticky Notes (plum.sqlite and StickyNotes.snt)
Sticky Notes cheat sheet: plum.sqlite Note table and .NET tick timestamps on Windows 10/11, legacy StickyNotes.snt, WAL recovery, collection and parsing.
- Location
- C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
- Proves
- What a user wrote on desktop notes and when each note was created or changed
- Timestamps
- CreatedAt, UpdatedAt and DeletedAt as .NET ticks, UTC (not FILETIME); legacy .snt storage times as FILETIME, UTC
- Retention
- No rollover: notes persist until deleted; remnants in the WAL, free pages and cloud sync; resetting the app deletes LocalState
- Access
- User profile folder, readable by the user or an administrator; copy plum.sqlite with its -wal and -shm, or close the app first
- Evidence of
- User activity
- Type
- Database
- Windows
- Vista / 78 / 8.11011
- KAPE target
- MicrosoftStickyNotes
- Velociraptor
- Windows.Triage.Targets:MicrosoftStickyNotes
Tools
Compare all toolsWhat it is
Sticky Notes is the Windows desktop note app. Users paste passwords, access codes, phone numbers, to-do lists and account details into it, which makes it a small but high-value artifact in insider, fraud and intrusion cases.
Two storage generations exist. Windows 7 up to Windows 10 before build 1607 kept all notes in StickyNotes.snt, an OLE compound file. From Windows 10 1607 (Anniversary Update) the Store app Microsoft.MicrosoftStickyNotes stores notes in plum.sqlite, a SQLite database that can also sync with the user's Microsoft account.
Location
| Windows version | Path | Format |
|---|---|---|
| 7, 8/8.1, 10 before 1607 | %APPDATA%\Microsoft\Sticky Notes\StickyNotes.snt | OLE compound file (one storage per note) |
| 10 1607+ / 11 | %LOCALAPPDATA%\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite | SQLite, with plum.sqlite-wal and plum.sqlite-shm |
Recent edits often sit in plum.sqlite-wal until a checkpoint, so always collect the three files together (SQLite WAL).
What it proves
- Content: the exact text the user typed into each note, including text later closed or hidden on screen.
- Timing: when each note was created and last updated (and marked deleted, if applicable).
- Use of the account: synced notes (
LastServerVersionpopulated) indicate a Microsoft account was signed in to the app. - It does not prove when a note was read, and synced notes may have been written on another device:
CreatedAtis local to the database copy, andLastServerVersionreflects the server, not this PC.
Key fields
Field (Note table) | Meaning |
|---|---|
Text | Note content |
Id / ParentId | Note identifier and parent reference |
CreatedAt, UpdatedAt, DeletedAt | Creation, last update and deletion times |
IsOpen | Whether the note is currently open on the desktop |
IsAlwaysOnTop | Pinned above other windows |
WindowPosition | Position and size of the note window |
Theme | Note colour |
LastServerVersion | Cached copy of the last cloud version (sync enabled) |
Other tables in plum.sqlite include User, Media, Stroke (ink) and Insight.
For StickyNotes.snt, each note is a storage whose streams hold the note as RTF (stream 0) and as Unicode text (stream 3).
Timestamps
| Timestamp | Set when | Format | Pitfalls |
|---|---|---|---|
CreatedAt | Note created | .NET ticks (100 ns intervals since 0001-01-01), UTC | Not FILETIME: subtract 62,135,596,800 seconds after dividing by 10,000,000 to get Unix time |
UpdatedAt | Last edit | .NET ticks, UTC | Only the latest edit is kept |
DeletedAt | Note marked deleted | .NET ticks, UTC | Often empty; deleted rows may simply vanish |
LastServerVersion times | Cloud save | Server time | Reflects the Microsoft account copy, not this PC |
.snt storage times | Note storage created / modified | FILETIME, UTC | Shown by OLE viewers as created and modified times per note |
plum.sqlite / -wal $SI times | Last database write | NTFS, UTC | The WAL is modified before the main file |
Retention and clearing
- There is no size-based rollover: notes persist until the user deletes them.
- Deleting a note removes its row or storage; remnants can survive in
plum.sqlite-wal, SQLite free pages and unallocated space. In.sntfiles, deleted notes lose their storages but theMetafilestream may still reference them. - With cloud sync enabled, deleted notes may still exist in the user's Microsoft account and on other devices.
- Resetting or uninstalling the app deletes the
LocalStatefolder; look in volume shadow copies for older versions.
Collection
- KAPE target:
MicrosoftStickyNotes(collectsplum.sqlite*from the app package). Its legacy path is%APPDATA%\Microsoft\StickyNotes\without a space, so it can missStickyNotes.sntinSticky Notes\: copy that file manually on older systems. - Velociraptor (
Windows.Triage.Targets):MicrosoftStickyNotes(same globs). - Built-in: close the app so the WAL is checkpointed, or copy all three files together.
robocopy C:\Users\alice\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState E:\case\StickyNotes plum.sqlite* /COPY:DAT
robocopy "C:\Users\alice\AppData\Roaming\Microsoft\Sticky Notes" E:\case\StickyNotes StickyNotes.snt /COPY:DAT
Parsing tools
- SQLECmd (Eric Zimmerman): the
MicrosoftStickyNotesmap converts ticks and exports theNotetable to CSV. - StickyParser (open source): parses both
.sntandplum.sqliteand attempts recovery of deleted content from SQLite. - DB Browser for SQLite: open a working copy with the
-walbeside it and queryNotedirectly. - MiTeC Structured Storage Viewer (free): browse
.sntstorages and streams.
Investigation tips
- Grep note text for credentials, URLs, IP addresses, crypto wallet addresses and ransom contacts.
- Compare the WAL content with the main database: a note present only in the WAL can be a very recent edit or a deleted note.
- Convert ticks carefully: a naive FILETIME conversion lands the dates centuries off.
- Line up
CreatedAt/UpdatedAtwith the Windows Timeline, clipboard history and logon sessions to attribute a note to an interactive session. - If cloud sync is on, ask for the Microsoft account data; the local copy may not include notes created elsewhere.
Related artifacts
- Windows Timeline (ActivitiesCache.db)Windows Timeline cheat sheet: ActivitiesCache.db and WAL, Activity tables, ActivityType values, focus duration, clipboard, 30-day expiry and Windows 11 status.
- Clipboard historyClipboard history cheat sheet: what Windows 10/11 keeps in memory, pinned items on disk, cloud clipboard text in ActivitiesCache.db and the registry settings.
- Notification database (wpndatabase.db)Windows notification database cheat sheet: wpndatabase.db tables, toast Payload XML, FILETIME ArrivalTime and ExpiryTime, WAL recovery and legacy appdb.dat.
- Volume Shadow Copies (VSS)Volume Shadow Copies cheat sheet: store files in System Volume Information, copy-on-write blocks, deletion by ransomware, mounting and parsing.
- Registry hivesRegistry hives cheat sheet: SYSTEM, SOFTWARE, SAM, SECURITY, NTUSER.DAT, UsrClass.dat, transaction logs, RegBack, LastWrite times and collection.
- Notepad TabState (Windows 11)Notepad TabState cheat sheet: Windows 11 Notepad .bin tab files, unsaved text never written to disk, saved file paths, hashes, WindowState and parsing.
Glossary terms
- SQLite write-ahead log (-wal)The -wal sidecar file where SQLite writes recent changes before merging them into the main database; often holds the newest evidence.
- UTC vs local time in Windows artifactsWhy some Windows artifacts record UTC and others local time, and how the TimeZoneInformation registry key helps normalize a forensic timeline.
- FILETIMEThe 64-bit Windows timestamp format counting 100-nanosecond intervals since 1 January 1601 UTC, used by NTFS, the registry and many artifacts.
- File carvingRecovering files from raw disk data using content signatures such as headers and footers, without relying on file system metadata.