WPMake

← Back to BlogHow to Replace Gravatar With Custom Profile Pictures in WordPressTUTORIAL

How to Replace Gravatar With Custom Profile Pictures in WordPress

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

Every time a WordPress page shows a profile picture, it sends a hashed version of that person’s email address to Gravatar and displays whatever comes back. For the overwhelming majority of your users, what comes back is a grey silhouette — because they have never signed up for a Gravatar account and probably never will.

You can replace that entirely: let people upload a photo from their own device, store it in your own media library, and have it appear everywhere WordPress would otherwise render an avatar. This guide walks through the whole switch, start to finish.

Why replace Gravatar at all?

Three reasons come up again and again:

  • Coverage. Gravatar only helps people who already have a Gravatar account. On a membership site or a store, that is usually a small minority, so most of your pages show silhouettes.
  • Privacy. Showing an avatar means telling a third party that a particular email address just loaded a particular page. In some jurisdictions that is a disclosure you have to account for.
  • Control. A photo in your own media library is yours to resize, replace, back up and delete. A Gravatar is not.

Step 1: Install Advanced User Avatar

Go to Plugins → Add New, search for Advanced User Avatar, install and activate it. It needs WordPress 6.0 or newer and PHP 7.4 or newer, and nothing else — WooCommerce, BuddyPress and the rest are optional integrations, not requirements.

Once it is active, the settings live at Users → Users Avatar. Not under Settings, which is where most people look first.

The Users Avatar settings screen with five sections and a shortcode sidebar
Everything the plugin does is configured on this one screen.

Activation alone is enough for avatars to start working. Any user who sets a photo from their WordPress profile screen will have it used site-wide immediately. The next step is only about giving people a front-end page where they can do it themselves.

Step 2: Give your users somewhere to upload

There are three routes, and you only need one.

The block

Edit any page, click the inserter, search for Advanced User Avatar and drop it in. The block renders the real widget inside the editor, so you can see exactly what your users will get before you publish.

The Advanced User Avatar block on a page in the block editor
The block renders live in the editor. Its sidebar panel switches between the uploader and a display-only avatar.

The shortcodes

If you use a page builder, or you want the widget inside a template, two shortcodes work anywhere shortcodes do:

[wpmake_advance_user_avatar_upload]   the full upload form
[wpmake_advance_user_avatar]          the current user's avatar, display only

Nowhere at all

Every user can already set their own picture at Users → Profile, and administrators can set one for somebody else from the Manage Avatars tab. If your users never see the front end — an internal site, an editorial team — that may be the whole job.

Whichever route you pick, the widget only ever renders for a logged-in user, and it only ever changes that person’s own picture. A logged-out visitor sees nothing at all, and none of the plugin’s scripts or styles are loaded for them.

The avatar uploader showing a default silhouette with Take Picture and Upload file buttons
What a logged-in user sees before they have uploaded anything.

Step 3: Decide what may be uploaded

Open the Upload & Image section and set your limits. The defaults are sensible, but two are worth a moment’s thought:

  • Max avatar size — 1 MB by default. A photo straight off a modern phone is often 3–5 MB, so if you raise this, raise it deliberately. An over-size upload is refused with a message that tells the user what the limit is, rather than failing silently.
  • Uploaded image size — 500 × 500 pixels by default. This is the master copy you keep, not the size anything is displayed at. 500 square is big enough for a retina profile header and small enough not to bloat your uploads folder.
The Upload and Image settings section showing size limits and allowed file types
Every limit here is enforced on the server as well as in the browser.

Leave Store in thumbnail sizes switched on. It generates 32, 64 and 96 pixel square copies on upload, so a 32-pixel avatar in the admin bar downloads a couple of kilobytes rather than your 500-pixel original. On a page with a dozen avatars, that difference is substantial.

Step 4: Check what actually changed

Upload a photo as a test user and then look around your own site. The picture should appear anywhere WordPress renders an avatar, with no further configuration:

The WordPress Users list showing uploaded photos beside each user name
This is WordPress’s own Users list — not a plugin screen — showing the photos your users uploaded.

Comments are the clearest demonstration, because you usually get a side-by-side comparison for free: a commenter who uploaded a photo shows their photo, and one who did not still falls back to Gravatar exactly as before.

Two blog comments, one showing an uploaded photo and one showing the default WordPress commenter avatar
Tom uploaded a photo. The commenter above him did not, so WordPress falls back to Gravatar as usual.

What happens to users who never upload anything

Nothing. They are completely unaffected: WordPress keeps asking Gravatar for their picture, just as it did before you installed anything. The plugin only steps in when there is a photo to show.

That matters for a gradual rollout. You can install this today, add the uploader to your account page, and let photos accumulate over weeks without a single page ever looking broken in the meantime.

A checklist before you call it done

  • Uploader placed somewhere your logged-in users will actually find it
  • Max file size and allowed file types set to match your audience
  • Thumbnail sizes left on
  • A test upload done end to end, and checked in comments and the Users list
  • If you run a store, the WooCommerce display locations reviewed

From there it runs itself. Users upload their own photos, the files sit in your own media library, and nothing about a person’s identity has to leave your server for a picture to appear next to their name.

How to Replace Gravatar With Custom Profile Pictures in WordPress