Launcher profiles.json

launcher_profiles.json (launcher_profiles_microsoft_store.json for the Minecraft Launcher for Windows) is a JSON file located in .minecraft, which contains all the Minecraft launcher settings, profiles, selected user/profile as well as the cached user information (email, access token, etc.). This file allows flexible updating from older launcher versions to newer builds and vice versa, without having to worry about things like profiles and login session getting lost.
==General file structure==
launcher_profiles.json uses JSON structures to save and retrieve data. The main JSON keys are explained in the figure below.
Key 	Type 	Description
profiles 	Map 	All the launcher profiles and their configurations.
clientToken 	String 	The currently logged in client token.
authenticationDatabase	Map 	All the logged in accounts. Every account in this key contains a UUID-hashed map (which is used to save the selected user) which in turn includes the access token, e-mail, and a profile (which contains the account display name)
launcherVersion 	Map 	Contains the current launcher build name, format and profiles format.
settings 	Map 	Contains all the launcher settings
analyticsToken 	String 	The latest token for tracking analysts. Those are used locally by the launcher for managing and tracking sessions
analyticsFailcount 	Integer	The fail count for analytics
selectedUser 	Map 	Contains the UUID-hashed account and the UUID of the currently selected user
Every Map structure will be explained in its own section below.
==Profiles structure==
Profiles are saved in a map in the profiles section. A profile structure is explained in the table below:
Key 	Type 	Description
name 	String 	The profile name. Can include characters, numbers, punctuation, and whitespace
type 	String 	The profile type. Types are custom (manually created by the user), latest-release (uses the latest stable release), and latest-snapshot (uses the latest build of Minecraft).
created 	String 	An ISO 8601 formatted date which represents the time the profile was created.
lastUsed 	String 	An ISO 8601 formatted date which represents the last time the profile was used.
icon 	String 	An Base64-encoded image which represents the icon of the profile in the profiles menu.
lastVersionId 	String 	The version ID that the profile targets. Version IDs are determined in the version.json in every directory in ~/versions
gameDir 	String 	The directory that this profile should use to save its content.
javaDir 	String 	The Java directory that the game will run on. This is by default the system's Java directory.
javaArgs 	String 	The start-up arguments for the profile. Those can have tangible experience in the game performance.
logConfig 	String 	The path to the logging configuration for the profile. This can be a XML file if the below setting is true
logConfigIsXML	Boolean	Whether the logging configuration is a XML file or not.
resolution 	Map 	The start-up resolution of the game window
== Resolution structure ==
Resolution info is saved in profile resolution map
Key 	Type 	Description
height	Integer	Height of the game window
width 	Integer	Width of the game window
==Authentication database structure==
Authentication database is saved in the authenticationDatabase section. Structure is explained below:
The authentication database consists of UUID-hashed keys for all the logged in users. Every logged in user has its own key which is then used in saving things like the currently selected user, etc.
Every authenticated key consists of a couple of values, which are explained in the figure below.
Key 	Type 	Description
accessToken	String	The token which saves the log-in sessions.
username 	String	The e-mail of the account.
profiles 	Map 	The profile of the account. This map will contain the UUID of the account, and contain the display name of it.
==Launcher version structure==
The launcher version is saved in its own section in the JSON file (launcherVersion). It has a couple of values which contain information about the currently used build of the launcher. Every time a specific version of a launcher is ran, those values are updated to fit the latest-used launcher. This section allows better compatibility between launcher versions as well as update checking.
Launcher version keys are explained below:
Key 	Type 	Description
name 	String 	The current name of the launcher build
format 	Integer	Format version of file
profilesFormat	Integer	Format version of profiles section
==Settings structure==
This is one of the most important sections in the file. It contains all the settings controlled from the launcher, and is saved in the settings section. Every option is explained in the table below.
Key 	Type 	Description
enableSnapshots 	Boolean	Whether or not include version IDs of game snapshots when browsing profiles
enableAdvanced 	Boolean	Whether or not enable changing advanced Java settings when adding new launch arguments
keepLauncherOpen	Boolean	Whether or not keep the launcher open while the game is running
showGameLog 	Boolean	Whether or not create a separate window which contains all the game logs
locale 	String 	The selected language for the launcher. Default value is en-us.
showMenu 	Boolean	Whether or not show the sliding menu under the Minecraft logo (which contains News, Skins, Settings and Launch options).
enableHistorical	Boolean	Whether or not enable the usage of historical versions
profileSorting 	String 	The way profiles are sorted in the profiles menu. There are 2 sorting types: byName and byLastPlayed. byName sorts them on the alphabetical order, and byLastPlayed sorts them based on the latest profiles you used.
crashAssistance 	Boolean	Whether or not contact Mojang when a crash occurs
enableAnalytics 	Boolean	Whether or not enable analyzing the user session or not. This is usually not maintainable/cannot be controlled from the launcher
==Selected user structure==
The selected user section stores information about the currently selected profile and the selected account. As mentioned above, accounts are stored as UUID-hashed keys. Then they are used for saving here
The keys are explained in the figure below.
Key 	Type 	Description
account	String (UUID)	The UUID-hashed key of the currently selected account
profile	String (UUID)	The UUID of the currently selected player
zh:Launcher profiles.json