Stickies app data missing after upgrade or migration

Problem

macOS Mojave and earlier store sticky notes in a single file, ~/Library/StickiesDatabase. Catalina and later use ~/Library/Containers/com.apple.Stickies/ (Finder displays it as ~/Library/Containers/Stickies/), with RTFD files in ./Data/Library/Stickies/ and note color and window positioning data stored in ./Data/Library/Preferences/com.apple.Stickies.plist.

For many macOS upgrade scenarios that straddle this divide (e.g., High Sierra to Sequoia), the database migration silently fails. Even in the best case (as when upgrading from Mojave to Catalina), colors revert to yellow and window positioning is lost.

Solution

If preserving sticky note colors isn't necessary, simply restore ~/Library/StickiesDatabase to a clean Catalina VM; Stickies will populate com.apple.Stickies from it on first launch.

  1. In a Mojave VM, restore a backup of ~/Library/StickiesDatabase.

  2. Export to Notes.app (File → Export All to Notes…) for posterity. Colors are preserved as folder names. The Notes database (~/Library/Group Containers/group.com.apple.notes) can be imported as-is into modern macOS versions.

  3. Upgrade Mojave to Catalina; com.apple.Stickies can now be imported into later versions including Tahoe. Colors must be manually corrected (or perhaps scripted to extract values from StickiesDatabase and insert into com.apple.Stickies.plist, an exercise left for the reader). Windows can be un-stacked via AppleScript; this example (tested in Catalina and Tahoe) uses a 5-column layout:

    tell application "Stickies" to activate
    
    tell application "System Events"
        tell process "Stickies"
            set winList to windows
            set winCount to count of winList
    
            set numColumns to 5
            set noteWidth to 300
            set noteHeight to 200
            set xGap to 20
            set yGap to 20
            set baseX to 50
            set baseY to 50
    
            repeat with i from 1 to winCount
                set colIndex to ((i - 1) mod numColumns)
                set rowIndex to ((i - 1) div numColumns)
                set theWin to item i of winList
                set position of theWin to {baseX + colIndex * (noteWidth + xGap), baseY + rowIndex * (noteHeight + yGap)}
                set size of theWin to {noteWidth, noteHeight}
            end repeat
        end tell
    end tell

Related: Stickies extraction scripts

❧ 2026-04-04