SharePoint Online. Getting User Picture URL

I've posted about document thumbnail in SharePoint Online. And today I'll show you how you can get a picture of a user.

Samples in this post work not only SharePoint Online but SharePoint on-premise (at least SharePoint 2019 and SharePoint 2016).

As for document thumbnail, there is the base URL for user pictures in SharePoint:

/_layouts/15/userphoto.aspx

User Identity

To identify the user there are two query string parameters:

  • UserName
  • AccountName

The user picture is stored in the user profile. So SharePoint needs to reach the profile. If AccountName parameter is presented in the response, SharePoint will try to find out the profile using that value (it may be primary account name or email).

If you provide UserName parameter, SharePoint will try to resolve this identity and reach the associated user profile.

Therefore SharePoint always gets user image according to AccountName parameter.

Provide AccountName parameter instead of UserName one, if it's possible, to avoid unnecessary operations on the server-side.

Getting image by UserName:

/_layouts/15/userphoto.aspx?UserName=login@tenant.onmicrosoft.com

The more effective approach (if you know primary e-mail or account name of the user):

/_layouts/15/userphoto.aspx?AccountName=mail@domain.com

Size

There are three possible sizes of user picture in SharePoint:

  • L - 240x240
  • M - 72x72
  • S - 48x48 (default value)

For size, you need to use Size parameter.

Getting user image sized 240x240px by AccountName:

/_layouts/15/userphoto.aspx?AccountName=mail@domain.com&Size=L

Cache

By default SharePoint caches picture for one day. Using Cache and t you can manage this behavior.

Cache parameter can be any value and t one - number of seconds.

Getting user picture with caching for 5 minutes (300 seconds):

/_layouts/15/userphoto.aspx?AccountName=mail@domain.com&Cache=1&t=300

Cache options available only for SharePoint on-premise instances. SharePoint Online always caches profile images for 24 hours.

To manage cache settings use DisableEnhancedBrowserCachingForUserPhotos property for your web application. The following PowerShell script turn on cache options for user profile image:

$webApp = Get-SPWebApplication https://sharepointportal
$webApp.Properties.Add("DisableEnhancedBrowserCachingForUserPhotos", "true")
$webApp.Update()
Vitaly Zhukov

Vitaly Zhukov

SharePoint Architect, Developer, Technical Trainer, Microsoft MVP (Office Development). Above 15 years of total experience working with SharePoint, Dynamics CRM, Office 365, and Microsoft stack development.

You May Also Like

SharePoint New Experience

SharePoint New Experience

SharePoint Online. Column JSON formatting

SharePoint Online. Column JSON formatting

SharePoint Online. Document Thumbnail

SharePoint Online. Document Thumbnail

SharePoint Online. Column JSON formatting. Part 2

SharePoint Online. Column JSON formatting. Part 2