How to create a Chrome profile programmatically?

Creating a user

The following example applies to Windows, but the basic procedure should be the same.

First, change to the UserData folder in your Chrome installation:

cd "%APPDATA%\..\Local\Google\Chrome\User Data"

This method will copy the current user as a template for the new user. If the new user should be blank, you need to delete (CTRL + SHIFT + DEL the current browser data).

Now create a new user:

mkdir NewUser && copy Default NewUser

Change your directory to the chrome installation:

cd "C:\Program Files (x86)\Google\Chrome\Application"

Factory-Reset all user parameters:

chrome.exe --user-data-dir="..\User Data\NewUser" -first-run

where --user-data-dir is the path (full or relative) to the previously created NewUser directory.

Running as NewUser

To run chrome again using this profile, simply run chrome without the -first-run flag.


From this documentation, I finally found a way to create a user/person, rather than a separate profile. The difference is especially important in Mac OS X since different profiles can be opened concurrently using the same Chrome process.

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --profile-directory="StagingEnv" --first-run

The only unfortunate fact is that this new person doesn't inherit the name from the profile directory. Instead, it is always called Person X where X is an increment number.

I need to go to the Local State file to change it.

grep -o '"StagingEnv":{[^}]*}' ~/Library/Application\ Support/Google/Chrome/Local\ State

"StagingEnv":{"active_time":1437709453.172762,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_6","background_apps":false,"is_ephemeral":false,"is_omitted_from_profile_list":false,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","name":"<b>Person 3</b>","user_name":""}

This file is overridden when Chrome quits, so I need to kill Chrome, change the file and run Chrome again.