WPMake

← Back to BlogHow to Let Users Upload Their Own Profile Picture in WordPress (No Code)TUTORIAL

How to Let Users Upload Their Own Profile Picture in WordPress (No Code)

⏱ 4 min read  ·  👤 iamprazol  ·  Sep 3, 2026

WordPress has no front-end way for a user to set a profile picture. There is no upload field on the profile screen out of the box, and nothing at all on the front end — so on most sites the question “how do I change my photo?” has no good answer.

Here is how to give your users one, without writing any code or editing a template.

What you are building

A widget on a normal page of your site. A logged-in user opens it, picks a photo, positions it in a square crop, and saves. From that moment the photo is used everywhere their name appears.

The avatar uploader rendered on a normal front-end page in a WordPress theme
The widget on an ordinary page. It inherits your theme rather than fighting it.

Step 1: Install the plugin

Install and activate Advanced User Avatar from Plugins → Add New. Its settings appear at Users → Users Avatar. You do not have to configure anything yet — the defaults are already sensible.

Step 2: Create the page

Make a page called something obvious — Your profile picture, My account, Edit profile — and add the block. Click the inserter, search for Advanced User Avatar, and insert it.

The Advanced User Avatar block on a page in the block editor
The block renders the real widget in the editor, so what you see is what your users get.

The block’s sidebar panel offers two modes: the full uploader, or a display-only avatar for places where you just want to show the photo. If you use a page builder or a classic theme, the same two things are available as shortcodes:

[wpmake_advance_user_avatar_upload]   the full upload form
[wpmake_advance_user_avatar]          display only

Step 3: Point people at it

A page nobody can find gets no uploads. Add it to whatever navigation your logged-in users actually see — an account menu, a members’ dashboard, the welcome email you send on registration.

If you run WooCommerce you can skip this step entirely: switch on the My Account uploader and the widget is added to the Account details page for you, alongside the fields customers already edit.

What your users experience

They press Upload file, choose a photo, and get a square crop window with a zoom slider and live previews at the sizes the site actually uses. They drag, they save, and it is done.

The crop window with a square selection, a zoom slider and previews at three sizes
Cropping happens in the browser, so the file that reaches your server is already square and already the right size.

Because the crop runs in the browser, a 4 MB phone photo becomes a small square before it is uploaded, rather than being sent in full and resized on your server. It is faster for the user and cheaper for you.

Once a photo is set, the widget shows it with a Remove button underneath, so changing or clearing it is equally self-service.

The uploader showing an uploaded photo with a Remove button beneath it
After the first upload, the widget offers Remove.

Who can use it

The widget renders only for logged-in users, and only ever changes that person’s own picture — a subscriber cannot touch anybody else’s. A logged-out visitor gets nothing at all: no empty widget, and none of the plugin’s scripts or styles on the page.

That last part matters for performance. The front-end assets load only on requests that actually render the widget, so putting it on one account page does not add JavaScript to your home page.

Two settings worth checking before you announce it

  • Allowed file types. JPG, JPEG, PNG, WEBP and GIF are available. Tick both JPG and JPEG — they are the same format, and browsers and cameras disagree about which extension to use. Be aware that the browser cropper cannot produce a GIF, so if GIF is the only type you allow, uploads are saved uncropped.
  • Max file size. 1 MB by default, which is comfortable for a cropped square. Uploads over the limit are refused with a message explaining the limit, not a silent failure.

That is the whole job. One page, one block, and your users have an answer to a question your site could not previously answer at all.

How to Let Users Upload Their Own Profile Picture in WordPress (No Code)