Backup & Restore
SnipperApp 3 backs up your library automatically every six hours with smart retention — restore any backup or import from SnipperApp 2 and SnippetsLab.
SnipperApp 3 includes a comprehensive backup system that protects your snippet library against data loss. Backups happen automatically, and restoring is a one-click operation.
Automatic Backups
SnipperApp 3 creates automatic backups of your entire snippet library on a regular schedule:
- Frequency. A backup is created every 6 hours while the app is running.
- Trigger. Backups are also created before potentially destructive operations like workspace deletion or large imports.
- Silent operation. Automatic backups run in the background without interrupting your workflow.
Tiered Retention
To balance storage usage with backup availability, SnipperApp uses a tiered retention policy:
| Period | Retention |
|---|---|
| Last 24 hours | All backups are kept (up to 4 backups). |
| Last 7 days | One backup per day is kept. |
| Last 30 days | One backup per week is kept. |
| Older than 30 days | Backups are automatically deleted. |
This means you always have fine-grained recovery options for recent changes and longer-term snapshots for older states.
Manual Backup
You can create a backup at any time:
- Open Settings (Cmd+,).
- Navigate to the Backup section.
- Click Create Backup Now.
A new backup is created immediately and added to the backup list. Manual backups follow the same retention policy as automatic backups.
When to Create a Manual Backup
- Before making large-scale changes to your snippet organization.
- Before deleting a workspace.
- Before importing snippets from another source.
- Before updating SnipperApp to a new version (although the app creates a pre-update backup automatically).
Restoring from a Backup
To restore your snippet library from a backup:
- Open Settings (Cmd+,).
- Navigate to the Backup section.
- Browse the list of available backups, sorted by date.
- Select the backup you want to restore.
- Click Restore.
- Confirm the restore operation.
Important: Restoring from a backup replaces the current contents of the active workspace with the backup data. A safety backup of the current state is automatically created before the restore, so you can undo the restore if needed.
What Gets Restored
A restore includes:
- All snippets (content, titles, languages, metadata)
- Folder hierarchy
- Tags and tag assignments
- Favorites
- Attachments (only if the backup was created with Include attachments enabled)
What Is Not Restored
- Application settings (themes, font preferences, etc.)
- iCloud sync state (sync resumes normally after restore)
- GitHub Gist link associations (re-established on next sync)
Custom Backup Location
By default, backups are stored in the app's Application Support directory. You can change this to a custom location:
- Open Settings > Backup.
- Click Change Backup Location.
- Select a folder (e.g., an external drive, a cloud-synced folder, or a NAS).
- Future backups will be saved to the new location.
Storing backups on an external or cloud-synced drive provides additional protection against disk failure.
Importing from SnipperApp 2
If you are upgrading from SnipperApp 2, you can import your existing library:
- Open Settings > Backup.
- Click Import from V2.
- Select your
.snipperapp2backup file (exported from SnipperApp 2). - SnipperApp 3 imports all snippets, folders, and tags into the current workspace.
What Gets Imported
- All snippets with their content and metadata.
- Folder structure (mapped to SnipperApp 3 folders).
- Tags (mapped to SnipperApp 3 tags).
Import Notes
- The import is additive. It does not replace existing snippets in the workspace.
- Duplicate detection is not performed, so importing the same V2 file twice will create duplicate snippets.
- After importing, review the imported snippets and reorganize as needed to fit your SnipperApp 3 workflow.
Importing from SnippetsLab
If you are migrating from SnippetsLab, you can import your entire library into SnipperApp 3:
- In SnippetsLab, export your library as a backup (
.snippetslab-backup) or JSON export (.json). - In SnipperApp 3, open Settings > Backup.
- Click Import SnippetsLab….
- Select the exported file.
- Confirm the import when prompted.
Supported Formats
.snippetslab-backup. SnippetsLab's native backup format (includes binary metadata and attachments)..json. SnippetsLab's JSON export format (directory package containing a JSON file and an Attachments folder).
What Gets Imported
- All snippets with their content, language, and timestamps.
- Folder structure (mapped to SnipperApp 3 folders).
- Tags (matched with existing tags by name, or created if new).
- File attachments (images and documents attached to snippets).
- Multi-fragment snippets are imported as parent-child snippet groups.
Import Notes
- The import is additive. It does not replace existing snippets in the workspace.
- Tags are deduplicated by name: if a tag with the same name already exists, the imported snippets are linked to the existing tag.
- Language names are automatically mapped from SnippetsLab's Pygments lexer format to SnipperApp 3's language identifiers.
- All imported snippets are placed in the default workspace.
Importing Files and Folders
You can bring an existing collection of plain files into SnipperApp 3 without recreating anything by hand. Source files, Markdown files, and text files all work.
- Choose File > Import Files or Folder…, or open Settings > Backup and click Import Files or Folder….
- Select one or more files, or a whole folder.
- Confirm the import when prompted (Settings only).
You can also drag files or a folder from Finder onto the sidebar or the snippet list. Drop them on a folder to import into that folder, or on All Snippets to import at the top level. Dropping files on an open snippet still attaches them to that snippet.
How Files Are Mapped
- Each file becomes a snippet. The filename is the title and the extension sets the language:
debounce.tsbecomes a TypeScript snippet called "debounce". - Only the last extension counts.
debounce.rb.mdis a Markdown snippet called "debounce.rb"; rename such files to.rbbefore importing if you want Ruby highlighting. - Each folder becomes a folder, including nested folders. Folders that contain no importable files are skipped.
- Well-known names are recognised even without an extension:
Dockerfile,Makefile,Gemfile,.zshrc,.gitignore. - Plain Markdown files stay Markdown. A
README.mdis imported as a Markdown snippet with the preview available.
Import Notes
- The import is additive. It does not replace existing snippets.
- Re-importing the same folder reuses folders with the same name and, when Skip duplicate snippets is on (the default), does not create a second copy of a snippet whose title and content already exist.
- Binary files, empty files, and files larger than 900 KB are skipped, and the summary tells you how many. Hidden files and folders (such as
.git) andnode_modulesare passed over silently and are not counted. - Unknown extensions are imported as Plain Text.
- Files imported from the menu land in the currently selected folder, or at the top level of the current workspace.
Backup File Format
Backup files are self-contained archives of your snippet data. Attachments, including images placed inline in Notes, are included only in a manual backup created with Include attachments enabled; automatic backups do not include attachments. Backup files can be:
- Moved between Macs for migration purposes.
- Stored long-term as archives.
- Shared as a way to transfer a snippet library to another user.
Tips
- Do not rely solely on backups for cross-device sync. Use iCloud Sync for that purpose. Backups are a safety net for data recovery.
- Check your backups periodically by browsing the backup list in Settings to ensure they are being created.
- Store backups externally for disaster recovery. The custom backup location feature makes this easy.
- The automatic backup system runs only while SnipperApp is open. If you use the app infrequently, consider creating manual backups.
Related
- iCloud Sync. Real-time sync across devices.
- GitHub Gist Integration. Another way to keep snippets backed up externally.
- Workspaces. Backups are workspace-scoped.