User Photo Sync Behavior in Microsoft 365

Background of User Photo Sync Behavior in Microsoft 365

In O365 there are a plethora of ways to view and configure user profile images.  If these images were stored in a single location, this would not be a problem.  But, it turns out that they are not and that the rules for how these images are synchronized across the various data stores is a little complicated.  So, the purpose of this post is to shed some light on how this works today.

There are several ways that users can view their profile image or somebody else’s profile image:

  1. From SharePoint
    • My Site
    • People Search Result
    • People Search Result Contact Hover
    • Newsfeed
    • People Picker Field (configured to show the profile image)
  2. From Outlook Online
    • Contact Card
    • Thumbnail on Existing Email
    • Thumbnail on Draft Email
  3. From Outlook Client
  4. From Lync Client
  5. From Yammer

There are also several ways a user’s photo can be changed:

  1. SharePoint My Site
  2. Outlook Client
  3. Outlook Online
  4. Lync Client
  5. Yammer
  6. Set-UserPhoto (powershell script)
  7. DirSync (if synchronizing AD thumbnail images)

The first 5 above are done by the user themselves, whereas Set-UserPhoto would be run by an administrator and DirSync is a background process.

What is odd, and the reason I feel compelled to discuss this, is that a user’s profile image is not necessarily synchronized everywhere you see it. 

In general the issues are:

  • Yammer is separate.  Profile image synchronization between Yammer and SharePoint/Outlook/Lync does not exist (unless maybe Yammer can do a sync from AD – I didn’t look into that).  Yammer should move towards one identity in the summer of 2014, I understand.  At that point, the story should be better.
  • If you make a change in Outlook or Lync, it may not show up in SharePoint.  But this part can get confusing, so let’s continue…

Let’s talk details…

When a user changes his/her profile image from SharePoint Online, it is immediately available in Outlook and Lync.  Here are the caveats for when images are changed form the SharePoint profile page (My Site):

  1. Images can be cached by browses, so SharePoint search results could show a cached image (and I have observed this), but it appears that the people picker URL has a timestamp so it may not be subject to any browser caching.
  2. The Outlook client can cache images, so you may need to exit Outlook and restart it to see an updated image, but I have seen this change quickly as well.
  3. Outlook Online may cache the image, but doesn’t seem to for very long (several seconds is the longest I have seen).
  4. Lync seems to notice the image change very quickly, with the exception that the Lync image does not show up when a user is offline with Lync.  Once the user logs into Lync, the image should show up quickly to others observing that user via Lync.
  5. If you have changed your profile image within the last 72 hours, the change that you made in SharePoint may persist for Outlook and Lync, but it may not persist for SharePoint.  Yes, believe it or not, it synchronizes to other applications, but doesn’t necessarily “stick” for SharePoint.  To make it stick, simply edit your profile image again from SharePoint and hit cancel.  Not exactly how I would design a user interface, but it does the trick.

When a user’s profile image is changed from a Outlook, Lync, Set-UserPhoto, or DirSync, it shows quickly in Outlook or Lync with all of the caveats above.  However, the rules for when the image shows up in SharePoint are a little confusing:

  1. This is the odd-ball in the group.  The image will show in the People Search Result Contact Hover immediately.  This is not the hover card for search results that shows on the right side of the page.  This is a rectangular hover panel that sometimes shows up when you hover on the person’s image in search results.  This hover panel is identical to what is seen in Outlook Online, and it clearly comes directly from Outlook Online (which already has the updated image).
  2. The image will never show up until the user whose profile image was changed visits his/her My Site (or any page that shows the large thumbnail image) after the profile image has been changed.  This is a big deal from my viewpoint.  If a user doesn’t go to their profile page (My Site), profile image changes won’t sync to SharePoint.

And then there’s one more rule:

If the user has updated his/her profile image within the last 72 hours, SharePoint will not show the update until the 72 hours has passed.  The reasoning behind the 72 hour delay (according to O365 support) is the extra processing power required to create the 3 sizes of profile images in SharePoint.  If a user makes multiple changes in Outlook Online with a 72 hour period, only the first and last will get pushed to SharePoint.

A way to bypass this rule is to edit the profile image from the SharePoint My Site and then hit cancel.

If you read that rule closely enough, you’ll realize that in some cases when you change your profile image in SharePoint, it will update immediately in Outlook and Lync, but it won’t do so in SharePoint until you try to edit it again (and you can hit cancel) or you wait 72 hours.

What say you?

Do your results match mine?  We have seen this in 3 different Microsoft 365 tenants; 2 that use DirSync and one that does not.  However, with SharePoint Online we have learned that mileage may vary, so I’d like to hear from others.  This has been a painful experience trying to understand how this works.  I hope I have clarified this for a few of you.

Microsoft has some internal documentation on this, but nothing available to the public at the time of this writing.  They seem to indicate that if you have at least visited your My Site once in the past (to get it created), that profile image changes outside of SharePoint should show up in SharePoint even if you don’t visit your My Site.  This is not what we are seeing, though.


If you want to try the Set-UserPhoto approach, first you need to download the SharePoint Online Management Shell.  With it you need to connect to Exchange then you can call Set-UserPhoto.  See also Introduction to the SharePoint Online Management Shell.

Kirk LiemohnUser Photo Sync Behavior in Microsoft 365


Join the conversation
  • PatrikJonsson - April 24, 2014 reply

    Another thing that I have noticed and had several discussions with Microsoft Support about is that if you use Set-UserPhoto cmdlet to update your own picture (that is the user that’s running the script), you are free to upload very large pictures (at least 5 MB). If you try to upload another user’s picture, you are limited to 10 kB.
    Microsoft has still failed to give me a decent explanation why there’s a difference. In fact, they have given me several different answers:
    “it’s actually a Lync PowerShell command” (no, it isn’t)
    “it’s a limitation on the thumbnailPhoto attribute in the AD” (yes, but why is it possible to upload larger pictures to my own profile picture then)
    “it might be a bug, submit a request to correct it” (most likely the case)
    It is impossible to get an explanation from Microsoft how the profile pictures are handled within Microsoft 365 and how you should manage them (besides from letting the user upload whatever picture they want).

    Kirk Liemohn - August 15, 2014

    Thanks for sharing your experiences. I think Microsoft support is confused because it is such a mess right now. Everything is so disconnected.

    Daniel - October 28, 2014

    Exchange 2010 is the one that puts the 10Kb max size restriction, onprem is authoritative when you are hybrid..

  • Mark Ringo - November 13, 2014 reply

    Option 7 shows DirSync as a method of image synchronization. We use Federated Microsoft 365 with DirSync. Is there a method for changing the flow of the “photo” user attribute to sync back to on-premises AD? To me it seems a better to have the users change their image on Microsoft 365 then rep it back to AD.


    Kirk Liemohn - November 17, 2014

    What we did is wrote a custom solution to make O365 the authoritative source. We would sync profile properties back down to on-prem SharePoint sites, but we did not sync profile images back down. Instead, we update the on-prem profile image URL to point to a custom on-prem URL that proxies the image from O365. We do this so that the user does not have to be logged into O365 to see the image when on-prem (an image request will not start an authentication flow).

  • Sami - April 14, 2015 reply


    Seems like the situation is the same for this “If a user doesn’t go to their profile page (My Site), profile image changes won’t sync to SharePoint.”.

    And seems like actually that it’s not enough to go to My Site, you need to edit the picture and hit cancel. And seems like this fails for like 30 % of the users.

    Has anyone got any sense to this?

    Kirk Liemohn - April 20, 2015

    Hi @Sami. I definitely recall the issue where you have to go and edit your picture and click cancel to see updates.

  • Sheila V - April 22, 2015 reply

    I have a user with an odd issue, She uploaded a photo of herself and in Outlook and Lync you can see the picture of just herself, however in excel and word you see her and her family in the upper right corner…when I click the pic it goes back to just her face however it doesnt stay…help??

    Kirk Liemohn - August 5, 2015

    Sheila, sorry for the slow response, but where in Excel and Word do you see user profile images? I don’t recall seeing them there before except in the File -> Account tab on the fat client (which only the author would see, I assume). Maybe you are referring to Excel and Word Online, but I don’t see profile images in either of those and I looked both in OneDrive consumer documents and in SharePoint Online documents.

  • Mickey - July 16, 2015 reply

    At my company, we were missing profile pictures within Delve, and only Delve.

    After I read this article (thank you so much) I was wondering if Delve got it’s pictures from Exchange Online!

    The thing is that on our tenant we don’t use Exchange Online, and Skype for Business yet.

    But I had a tenant user… I logged on with this user and uploaded a profile picture, and suddenly all my users profile pictures was displayed in Delve.

    My conclusion is that at least one user needs to upload a profile picture and on this event something happen…

    Kirk Liemohn - August 5, 2015

    I’m glad this article was useful to you . FWIW, when I look in Delve I see images referencing “/_layouts/15/userphoto.aspx?size=S&username=”. This is for smaller thumbnails in the left pane under the “People” heading and also for the large thumbnails when I click on someone’s profile (except that size=L for it). This URL looks like a SharePoint URL. I don’t know what is happening under the covers.

  • kduff85 - September 4, 2015 reply

    Hey guys,

    We have been working on getting photos updated in 365 (webmail, Outlook and Skype for Business). Our scenario was this: Our developers pushed photos of all users to the thumbnailphoto attribute in AD, we synced it across using Azure AD Sync. It appears to work. Users, at the time, were able to change their photos in 365, so some did. We disabled this to keep it all uniform. This is where our problem came, we could not get users photos to sync back to what was in their thumbnailphoto attribute. So we got some answers below that seemed near impossible to get, so I figured I would share! This is straight from an EXO engineer at Microsoft. We used the set-userphoto cmd and it is working (for the most part) instantly. We do find it very silly that it is expected behavior that the attribute only syncs once from AD and then you’re stuck doing it manually.

    Photos synced from AD thumbnailphotos are
    expected to be a 1- time operation. Meaning if you Sync to EXO once, then
    delete or try to change the thumbnail photo on prem and re-sync, this process
    is expected to fail.

    After Lync 2010, there was a code change to the
    way photos are used in Microsoft 365. We use the EXO mailbox to store user
    photos and do not leverage the Thumbnailphoto attribute. This is where O365
    will look for photo data first.

    If you use the Set-UserPhoto cmdlet it will
    store the photo directly in the user’s mailbox and Exchange will create and
    overwrite any thumbnailPhoto that may be present. However, if you
    manually update the thumbnailPhoto attribute in Active Directory, the photo in
    the user’s Exchange mailbox will not automatically be updated.

    Should you need to prevent users from changing
    photos, the best way to do this is via OWA mailbox policy.

    SharePoint can take up to 72 hours to Sync user

    Here are some urls that help describe this in more detail.

    Kirk Liemohn - September 9, 2015

    @kduff85:disqus, thank you so much for sharing what you have learned! This blog post is one of ThreeWill’s more popular ones, so I suspect the knowledge you have shared will help out several others (in addition to me).

  • QMM - September 23, 2015 reply

    And the desktop apps show a blank picture for Microsoft 365 business users no matter where you add a photo (Outlook, SharePoint 365, etc). Microsoft 365 is a big mess. Things are a bit simpler with Microsoft 365 Home, but once you throw in SharePoint 365 it becomes a huge mess of incompatible mess of interwoven sites. Ever seen this below? Yep… related issue. The reason account pics are so flakey is because of the mish-mash of domains that try to talk to each client side and run into cross-domain / cookie issues instead of talking to each other server side.
    It’s just bad, bad coding. Google had a similar problem YEARS AGO, but they ironed it out. Microsoft has not… and I doubt they ever will considering the state of things and their lack of interest.

  • Paul Arneson - December 22, 2015 reply


    In your article you claim the following:

    “When a user changes his/her profile image from SharePoint Online, it is immediately available in Outlook and Lync.”

    However this appears to be contrary to what Microsoft states:

    “SharePoint Online receives profile information from the Microsoft 365 directory service during regularly scheduled one-way synchronization—which should occur at least every 24 hours”

  • Heather Mitchell - March 3, 2016 reply

    I would LOVE to see your notes updated for 2016 – with Delve profiles and any new learnings you may have. (I know you’re probably very busy.) Profile picture synchronization is STILL a big mystery, there’s no definitive source of truth from Microsoft, and profile picture sync issues still seem to be a common topic. Your info has by far been the most helpful for me. Thank you!

    dannyryan - March 11, 2016

    @kliemohn:disqus – any way we could update this for 2016? This is one of the most popular posts on the site and I’d love to see a follow up…

    @@disqus_6kT9knB0Bk:disqus – thanks for the kind words and stay tuned for (hopefully) a follow up!

    Kirk Liemohn - April 10, 2018

    Heather, there is now a related post. It is still geared towards Microsoft 365 and not SharePoint 2016, but it may provide more insight:

  • Paul B - July 7, 2016 reply

    In over two years this is still the only post I can find on the web that explains this. Any solution to the user not having to go to their profile page on sharepoint to get the image to synch with Skype?

    Kirk Liemohn - July 12, 2016

    Hi Pual B. I don’t know of any solution, but I haven’t done a detailed investigation since I wrote this post 2 years ago. Maybe Gavin’s script above might help.

    Hicsy - November 13, 2017

    Nope. @gavinashton:disqus ‘s script is an example of how you can change a user’s O365 picture to one that is on your HDD. It’s a one-time thing – I wrote something similar to download user’s Slack profile pictures and upload them to MS-Teams once. More info:

  • Gavin Ashton - July 12, 2016 reply

    This has been doing the job for me but still got the same issue as listed above re SharePoint (and even Skype for Business) taking time to update.

    $MSOLCred = Get-Credential -Credential [email protected]
    $SessionOption = new-pssessionoption -proxyaccesstype IEConfig
    $ExOLSession = New-PSSession -Credential $MSOLCred -authentication Basic -Configurationname Microsoft.Exchange -ConnectionURI https://webmailurl/powershell-liveid/?proxymethod=rps -allowredirection -sessionoption $SessionOption
    Import-PSSession $ExOLSession -AllowClobber
    #Some For each here:
    $user = ‘O365UPN’
    $filename = ‘file’
    $photoPath = “C:images\”+$filename+”.jpg”
    $userPhoto = ([Byte[]] $(Get-Content -Path $photoPath -Encoding Byte -ReadCount 0))
    Set-UserPhoto -Identity $user -PictureData $userPhoto -Confirm:$False
    Remove-PSSession $ExOLSession

    Kirk Liemohn - July 12, 2016

    Thanks for sharing! I’d love to hear from others if this helped them.

    Gavin Ashton - July 12, 2016

    Turns out my SfB issue is unrelated, so this should be solid.

  • EASTER ROMIG - November 11, 2016 reply

    Good article, Thank you!

  • Jeffrey Oliver - November 16, 2016 reply

    It would be helpful if you could include a publication date with your post. Things with Microsoft 365 are changing so fast I have no idea how relevant this article is. You mention something about Yammer making a change in 2014 which makes me think this article is well over 2 years old. If that’s the case I would expect the back-end architecture of Microsoft 365 to have changed significantly since then.

    dannyryan - November 16, 2016

    I added the date back – sorry for the confusion.

  • Peter - January 10, 2017 reply

    Public documentation by Microsoft:

Join the conversation

This site uses Akismet to reduce spam. Learn how your comment data is processed.