As @Scott McPeak pointed out the defaults are not stored, however if you override any value the overrides are stored on a *nix system in:
~/.config/Code/User
Answer from Psionman on Stack OverflowAs @Scott McPeak pointed out the defaults are not stored, however if you override any value the overrides are stored on a *nix system in:
~/.config/Code/User
All defaults in a read-only format
If you just want to see what all the defaults are, use the Command Palette (Ctrl+Shift+P) and run "Preferences: Open Default Settings (JSON)". VSCode will generate a JSON description of all of the defaults.
Where the defaults come from
The default settings are hardcoded in the vscode sources.
Details
Let's look at some examples. When I open Settings, I see a long list, and this is at the top:

The first entry is "Files: Auto Save". That is defined by this fragment of Typescript code in files.contribution.ts:
'files.autoSave': {
'type': 'string',
'enum': [AutoSaveConfiguration.OFF, AutoSaveConfiguration.AFTER_DELAY, AutoSaveConfiguration.ON_FOCUS_CHANGE, AutoSaveConfiguration.ON_WINDOW_CHANGE],
'markdownEnumDescriptions': [
nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'files.autoSave.off' }, "A dirty file is never automatically saved."),
nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'files.autoSave.afterDelay' }, "A dirty file is automatically saved after the configured `#files.autoSaveDelay#`."),
nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'files.autoSave.onFocusChange' }, "A dirty file is automatically saved when the editor loses focus."),
nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'files.autoSave.onWindowChange' }, "A dirty file is automatically saved when the window loses focus.")
],
'default': platform.isWeb ? AutoSaveConfiguration.AFTER_DELAY : AutoSaveConfiguration.OFF,
'markdownDescription': nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'autoSave' }, "Controls auto save of dirty files. Read more about autosave here.", AutoSaveConfiguration.OFF, AutoSaveConfiguration.AFTER_DELAY, AutoSaveConfiguration.ON_FOCUS_CHANGE, AutoSaveConfiguration.ON_WINDOW_CHANGE, AutoSaveConfiguration.AFTER_DELAY)
},
Notice the default value, which incidentally depends on the isWeb variable. Since I'm running VSCode on Windows (where isWeb is evidently false), I see a default value of "off" for this attribute.
The next attribute is "Files: Auto Save Delay". As it happens, the very next fragment in the same file contains it:
'files.autoSaveDelay': {
'type': 'number',
'default': 1000,
'markdownDescription': nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'autoSaveDelay' }, "Controls the delay in ms after which a dirty file is saved automatically. Only applies when `#files.autoSave#` is set to `{0}`.", AutoSaveConfiguration.AFTER_DELAY)
},
Again, the default value of 1000 in the GUI comes from the default attribute here.
The next attribute is "Editor: Font Size". It comes from commonEditorConfig.ts:
'editor.fontSize': {
'type': 'number',
'default': EDITOR_FONT_DEFAULTS.fontSize,
'description': nls.localize('fontSize', "Controls the font size in pixels.")
},
Here, the default value is not a literal, so we have to track down the definition of EDITOR_FONT_DEFAULTS.fontSize. Here it is, in editorOptions.ts:
export const EDITOR_FONT_DEFAULTS = {
fontFamily: (
platform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isLinux ? DEFAULT_LINUX_FONT_FAMILY : DEFAULT_WINDOWS_FONT_FAMILY)
),
fontWeight: 'normal',
fontSize: (
platform.isMacintosh ? 12 : 14
),
lineHeight: 0,
letterSpacing: 0,
};
It is again interesting that the default depends on the platform. Since I'm not running on Mac, I see a default of 14.
And so on. Each of the default settings comes from Typescript source code or, in some cases, package.json files for extensions (either built-in or installed by the user).
Where is settings.json?
How to open Visual Studio Code's 'settings.json' file - Stack Overflow
visual studio code - Cannot Edit Default VSCode JSON Settings - Stack Overflow
VS Code settings.json File Corrupted. Can I Recover a Default settings.json? - General Web Dev - SitePoint Forums | Web Development & Design Community
Videos
Hi , I am new to VS Code, doing a python course. The course require to use an extension and change the settings by going and editing the json file. But when I open the settings.json file it is empty. If I click any option in the settings ui, that option is showing in the .json file but default settings are not shown. How do i fix this?
To open the User settings:
- Open the command palette (either with F1 or Ctrl+Shift+P)
- Type ">open settings" (You must include the '>' at the beginning)
- You are presented with a few options¹, choose Open User Settings (JSON)
This image was taken in the VS Code online editor

Which, from the manual and depending on platform, is one of:
- Windows
%APPDATA%\Code\User\settings.json² - macOS
$HOME/Library/Application\ Support/Code/User/settings.json - Linux
$HOME/.config/Code/User/settings.json
The Workspace settings will be in a {workspaceName}.code-workspace file where you saved it, and the Folder settings will be in a .vscode folder if and when it has been created.
Official page on User and Workspace Settings
As stated by sevencardz below, VS Code includes a button in the Settings UI gutter which can be used to switch between JSON and graphical view.

The workbench.settings.editor option selects which of the settings files is opened by default when not using the above method, such as with the shortcut ⌘+, or through the application menu.
Footnotes
The aforementioned settings, User and Workspace. Remote settings will appear when using WSL.
By a test this maps to
%APPDATA%\Roaming\Code\User\settings.json, I am not sure by what logic.
On the settings UI page, there's a special button in the top right corner gutter that toggles between the settings.json file and the settings UI.

Bonus Answer:
Add "workbench.settings.editor": "json" to your settings.json file. This will make it so that menu File → Preferences → Settings or ⌘ + , opens your settings.json file by default. Optionally, add a comment at the top to remind yourself where the toggle button is.
// Click the Open Settings (UI) button in the top
// right corner gutter to toggle the settings UI
{
// Other settings in settings.json
// ...
"workbench.settings.editor": "json"
}
The default settings in vscode is a non-editable document. It acts as a way for you to view the default settings for native settings as well as extension default settings.
These defaults are also used to identify when a setting has changed with a 'blue' line indicator, when using the settings editor:
Changes to settings are reloaded by VS Code as you change them. Modified settings are now indicated with a blue line similar to modified lines in the editor. The gear icon opens a context menu with options to reset the setting to its default value as well as copy setting as JSON.

Currently, vscode only offers 2 editable settings:
VS Code provides two different scopes for settings:
- User Settings - Settings that apply globally to any instance of VS Code you open.
- Workspace Settings - Settings stored inside your workspace and only apply when the workspace is opened.
Workspace settings override user settings. Workspace settings are specific to a project and can be shared across developers on a project.
Note: A VS Code "workspace" is usually just your project root folder. Workspace settings as well as debugging and task configurations are stored at the root in a .vscode folder. You can also have more than one root folder in a VS Code workspace through a feature called Multi-root workspaces.
You can configure these settings with the settings editor, as pictured above, or you can navigate to their JSON counterparts for manual entry (example pictured on the right below).

For workspace settings JSON, the JSON file is located in a folder of the root directory called .vscode, you can create it yourself if it is not there.
By default, VS Code shows the Settings editor, but you can still edit the underlying settings.json file by using the Open Settings (JSON) command from your command palette or by changing your default settings editor with the workbench.settings.editor setting.
Settings
You can define which view is shown using the following settings:
workbench.settings.openDefaultSettingsOpens the default settings any time you open regular settings (this only works with the
JSONsettings editor option)workbench.settings.editorDetermine which editor to use, you can elect
UIorJSONworkbench.settings.useSplitJSONThis will open a JSON settings editor, with the default settings to the left, but the default editor to the left will behave like a
UIeditor in that you can collapse regions based on category and there is a search input box and it will share the same tab as the json editor on the right, whereas theworkbench.settings.openDefaultSettingsoption mentioned above puts each setting view in its own respective tab (editor)
I had the same problem and the solution that worked is below. It is true that default settings cannot be modified, but the below steps explain how to edit the settings in JSON:
- Cmd+Shift+P and select Open Settings UI (Ctrl+Shift+P for Windows I think)
- Search for "Settings" and under "Workbench" click on Settings Editor. Change from "ui" to "json".
- Search for “use split JSON” and tick “Controls whether to use split JSON…”.
Credit to Ahmad Awais video posted here