How to create a user programmatically in Drupal 8 and 9

From time to time you may find that you need to create users that fill in a particular form on your website or create users in bulk from a CSV list. This tutorial will show you how easy it is to create a user. This code can be used almost anywhere, but ideally, place it somewhere sensible! Recently I had to create users after they had filled in a form. So I had to place this code in a custom "Webform Handler" (I will write a tutorial on this soon). Perhaps you can write it in a hook_update_N hook.

Let's start by initializing our User entity.

$user = User::create();

Our $user variable is now a user object that we can use to access methods that will help us easily create a new user in Drupal.

Next, we want to set the status of our new user account. It can either be Blocked or Active.

$user->set('status', 1);
  • 0 means blocked.
  • 1 means active.

Next, we set the email of the user.


We can set the username of this account now 


We can optionally add an additional role to the user account.


If you have new fields on the user entity, you can also populate those fields. For example, I have "first name" on my user entity. So I get the machine name of this field and populate it like so:

$user->set('field_first_name', 'Benjamin');

Lastly, we want to save our new user


You will now see your new user on the People overview page (/admin/people)