Profile Sync — Export & Import for VS Code
Back up and move your entire VS Code setup between machines in one click.
Profile Sync exports your extensions, keyboard shortcuts, user settings,
snippets and global tasks into a single portable .vscprofile.json file,
and restores them on any other installation of VS Code, VS Code Insiders, Cursor
or VSCodium.
Publisher: ballwictb · License: MIT
Features
- One-click export of your full profile into a single JSON file.
- Granular import: pick exactly which sections you want to restore.
- Auto-installs missing extensions using the bundled VS Code CLI.
- Safe imports: creates a timestamped backup of your current configuration
before any change, so you can always roll back.
- Deep settings merge: incoming settings are merged on top of yours instead
of blindly overwriting.
- Filters machine-specific keys (e.g.
window.zoomLevel, terminal env
variables) so you don't pollute a new machine.
- JSONC aware: correctly parses
settings.json and keybindings.json
even with comments and trailing commas.
- Works with VS Code, VS Code Insiders, VSCodium and Cursor.
Commands
All commands are available from the Command Palette (Ctrl+Shift+P /
Cmd+Shift+P) under the Profile Sync category:
| Command |
Description |
Profile Sync: Export Profile… |
Export a full profile to a .vscprofile.json file. |
Profile Sync: Import Profile… |
Import a profile file, choosing which sections to apply. |
Profile Sync: Export Extensions Only… |
Export just the list of installed extensions. |
Profile Sync: Import Extensions Only… |
Install extensions from a profile file. |
Profile Sync: Export Keybindings Only… |
Export only your keyboard shortcuts. |
Profile Sync: Import Keybindings Only… |
Replace keybindings from a profile file. |
Profile Sync: Show Current Profile Summary |
Preview what a full export would contain. |
Configuration
| Setting |
Default |
Description |
profileSync.includeExtensions |
true |
Include installed extensions in exports. |
profileSync.includeKeybindings |
true |
Include keybindings in exports. |
profileSync.includeSettings |
true |
Include user settings in exports. |
profileSync.includeSnippets |
true |
Include user snippets in exports. |
profileSync.includeTasks |
false |
Include global tasks.json in exports. |
profileSync.autoInstallExtensions |
true |
Auto-install missing extensions on import. |
profileSync.backupBeforeImport |
true |
Backup current configuration before importing. |
profileSync.excludedSettingsKeys |
[...] |
Setting keys (or dotted prefixes) to skip on export. |
Exports are plain JSON files with a stable schema:
```jsonc
{
"schemaVersion": 1,
"generator": "vscode-profile-sync",
"generatorVersion": "1.0.0",
"exportedAt": "2026-04-19T12:34:56.000Z",
"platform": "darwin",
"label": "my-laptop — 2026-04-19",
"profile": {
"extensions": [{ "id": "dbaeumer.vscode-eslint", "version": "3.0.10" }],
"keybindings": [{ "key": "ctrl+k ctrl+t", "command": "workbench.action.selectTheme" }],
"settings": { "editor.fontSize": 14 },
"snippets": { "javascript.json": "{ ... }" },
"tasks": { "version": "2.0.0", "tasks": [] }
}
}
```
Files produced by Profile Sync use the .vscprofile.json extension so they
stay recognisable, but plain .json files are also accepted.
How it works
Profile Sync reads and writes directly to the standard VS Code User
configuration directory:
- Windows —
%APPDATA%\Code\User
- macOS —
~/Library/Application Support/Code/User
- Linux —
~/.config/Code/User
(Insiders, VSCodium and Cursor folders are detected automatically.)
Extensions are installed using the VS Code CLI (code --install-extension)
since the extension host API does not expose a public installer.
Backups
When profileSync.backupBeforeImport is enabled (default), a snapshot of your
current settings.json, keybindings.json, tasks.json, snippets/ folder
and the list of installed extensions is copied to:
```
/.profile-sync-backups//
```
You can delete old backups at any time.
Privacy
Profile Sync operates entirely locally. No data ever leaves your machine — you
are in full control of where exported files are saved and shared.
Development
```bash
pnpm install
pnpm run watch
Press F5 in VS Code to launch the Extension Development Host
```
License
MIT © ballwictb