Windows is Bloated, Thanks to Adobe’s Extensible Metadata Platform

Over the weekend, I put together a little tool that scans executable files for PNG images containing useless Adobe Extensible Metadata Platform (XMP) metadata. I ran it against a vanilla Windows 10 image and was surprised that Windows contains a lot of this stuff.

Windows Intelligence In Your Inbox

Sign up for our new free newsletter to get three time-saving tips each Friday — and get free copies of Paul Thurrott's Windows 11 and Windows 10 Field Guides (normally $9.99) as a special welcome gift!

"*" indicates required fields

This field is for validation purposes and should be left unchanged.

Adobe XMP, generally speaking, is an Adobe technology that serializes metadata like titles, internal identifiers, GPS coordinates, and color information into XML and jams it into things, like images. This data can be extremely valuable in some cases but Windows doesn’t need or use this stuff. It just eats up disk space and CPU cycles.

Thanks to horrible Adobe Photoshop defaults, it’s very easy to unknowingly include this metadata in your final image assets. So easy, almost all the images on this site are chock full of it. (Blame Paul.) But you can appreciate my surprise when a bunch of important Windows binaries showed up in my tool.

Windows Explorer, for example, is a critical Shell component in the startup hot path. But despite its importance, it’s comprised of ~20% pure garbage. ApplicationFrame.dll, responsible for Windows app title bars and frame gizmos, is ~41% garbage. Twinui, imageres, and other related components scored with much lower numbers but couldn’t fully escape Adobe XMP.

It sounds like nitpicking but this stuff impacts Windows in all sorts of areas, such as boot time, redistributable and on-disk image size, servicing (delta patches), and runtime Authenticode validation. Funnily enough, these are the exact areas that a special performance team at Microsoft are supposed to be monitoring. Oops.

Thankfully, fixing this should be relatively simple for Microsoft. It just needs to squeeze PNG assets before or at code check in time. Alternatively (or additionally), an optimization pass could be performed at compile time to catch outliers, though could increase overall product build time.

But teams at Microsoft may want to check in with the Microsoft Edge team first. Eric Lawrence – former Microsoft Internet Explorer Program Manager – pointed out the Edge team already runs a set of tools against its assets to strip out garbage, and further optimize its binaries using Google’s ZopFli compression algorithm.

You can find the code for my tool on GitHub. But be sure to also check out Eric Law’s parallel analysis using the venerable PNGDistill tool, showing additional savings are possible.


Technical note: My tool only measures Adobe XMP present in three types of PNG text chunks — iTXt, tEXt, and zTXt. Additional Adobe-specific metadata could be stored in other chunks and is out of scope for this post and tool.

Tagged with

Share post

Please check our Community Guidelines before commenting

Conversation 30 comments

  • kjb434

    Premium Member
    24 April, 2017 - 9:54 pm

    <p>Paging Donna S…here's some feedback.</p><p><br></p>

  • Ron Diaz

    24 April, 2017 - 10:16 pm

    <p>yea ok, Windows is bloated because of everyone except Microsoft, you know the guys that actually make it…</p>

    • Rafael Rivera

      Premium Member
      24 April, 2017 - 11:49 pm

      <blockquote><a href="#99813"><em>In reply to Ron Diaz:</em></a></blockquote><p>I upvoted your comment, because it's good feedback. I should have used "partly" in there somewhere, I think.</p>

      • MattHewitt

        Premium Member
        25 April, 2017 - 8:32 am

        <blockquote><a href="#99819"><em>In reply to Rafael Rivera:</em></a></blockquote><p>I think the issue is mostly the headline. Windows isn't bloated due to Adobe, it's due to Microsoft not knowing how to properly save a file using Adobe software to maximize performance and file size.</p>

        • Armysniper89

          25 April, 2017 - 12:48 pm

          <blockquote><a href="#99843"><em>In reply to MattHewitt:</em></a></blockquote><p>Rafael is right. I have seen an issue with this in website development. People are lazily using images that they build on Photoshop and putting them on a website without looking at size or final output. A quick run through of an image reducer would find these issues and fix them. Microsoft ships development tools in Web Essentials that reduces image size without loss. We did that on our site after a third party consultant dropped in a bunch of bloat, and our mobile download sizes shrunk and our speed of load was almost tripled. I blame a lot of this on poor project management.</p>

        • Rafael Rivera

          Premium Member
          25 April, 2017 - 12:53 pm

          <blockquote><a href="#99843"><em>In reply to MattHewitt:</em></a></blockquote><p>The target of the blame is certainly a debatable topic. I mean, sure Microsoft should know better but Adobe isn't helping with XMP enabled by default. Most users have no idea this is happening, just look at PNGs all around the Internet. They've effectively bloated every website on the planet. <em>Thanks Adobe!</em></p>

          • Jaxidian

            23 May, 2017 - 1:17 pm

            <blockquote class="ql-indent-1"><a href="#99890"><em>In reply to WithinRafael:</em></a></blockquote><p class="ql-indent-1"><em>"The target of the blame is certainly a debatable topic. I mean, sure Microsoft should know better but Adobe isn't helping with XMP enabled by default. Most users have no idea this is happening, just look at PNGs all around the Internet. They've effectively bloated every website on the planet. Thanks Adobe!"</em></p><p><br></p><p><span class="ql-cursor"></span>I think this statement right here in Rafael's comment/reply is the ultimate point of this entire article. It's not that Adobe ruined Windows. It's that Adobe has bloated the entire world and it's <strong>so pervasive</strong> that even the folks at Microsoft has let it slip into Production releases of Windows.</p>

  • Shmuelie

    Premium Member
    24 April, 2017 - 10:18 pm

    <p>I could so see Designers having the control over this and the engineers losing the battle to remove the data</p>

  • gvan

    24 April, 2017 - 11:18 pm

    <p>Wow! I hope Microsoft fixes this soon. Also, I wonder if it's possible create a tool that will fix the PNG files in an existing binary without the source code? </p>

    • Rafael Rivera

      Premium Member
      25 April, 2017 - 1:49 am

      <blockquote><a href="#99818"><em>In reply to gvan:</em></a></blockquote><p>It's easy to do, and I think Eric's PNGDistill does this today. Check it out!</p>

      • tonchek

        25 April, 2017 - 8:35 am

        <blockquote><a href="#99825"><em>In reply to Rafael Rivera:</em></a></blockquote><p>What about code signatures?</p>

        • Rafael Rivera

          Premium Member
          25 April, 2017 - 12:54 pm

          <blockquote><a href="#99844"><em>In reply to tonchek:</em></a></blockquote><p>Those will definitely break, yup.</p>

  • jean

    25 April, 2017 - 4:03 am

    <p>having started my career&nbsp;with programing&nbsp;mainframe assembler code I am always shocked with how careless resources are being used today: the worst to me is how Google uses 240K of HTML code for just an entry field and a simple button </p>

    • Rafael Rivera

      Premium Member
      25 April, 2017 - 4:17 pm

      <blockquote><a href="#99827"><em>In reply to jean:</em></a></blockquote><p>Dang spoiled kids these days. :)</p>

  • Chris_Kez

    Premium Member
    25 April, 2017 - 6:54 am

    <p>This is great. The post, I mean, not the bloat.</p>

  • madthinus

    Premium Member
    25 April, 2017 - 7:24 am

    <p>Any feedback from the Windows team about this?</p>

    • Rafael Rivera

      Premium Member
      25 April, 2017 - 12:53 pm

      <blockquote><a href="#99832"><em>In reply to madthinus:</em></a></blockquote><p>Nothing (yet?). Will update you if that changes.</p>

  • Waethorn

    25 April, 2017 - 10:13 am

    <p>So now we know what software tools Microsoft uses for UX design.</p><p><br></p><p>Quick, how can we exploit this??</p>

  • nbplopes

    25 April, 2017 - 11:13 am

    <p>Good find. </p>

  • Narg

    25 April, 2017 - 12:44 pm

    <p>Overall, XMP is a good thing. VERY good thing. But in the case of what you've found, it does seem Microsoft could have been a little more diligent about their compiled code. Interesting you supplied only two examples, and not a total found in the entire system setup. I'd guess it's probably much smaller, but still there and should be addressed by Microsoft.</p>

  • ErichK

    Premium Member
    25 April, 2017 - 5:17 pm

    <p>Ah, how I pine for the days when DOS fit on a floppy.</p><p>But this reminds me of the times I used to program in QuickBASIC. Want to PRINT "HELLO?" Well, you get the entire graphics library too!</p>

  • madthinus

    Premium Member
    26 April, 2017 - 6:43 am

    <p>What is the real impact of this on performance and memory usage when these files run / loaded into memory. </p><p><br></p><p>Another questions is, how does this compare to say Chrome or Firefox? </p>

  • Gardner

    Premium Member
    30 May, 2017 - 5:28 pm

    <p>Did Microsoft every respond more fully to these findings?</p>

  • evancox10

    23 June, 2017 - 8:36 pm

    <p>2 months later, latest insider build announces they have stripped out all the XMP data</p><p><br></p><p>https://blogs.windows.com/windowsexperience/2017/06/21/announcing-windows-10-insider-preview-build-16226-pc/#sJFVQAQrv56b0TC2.97</p&gt;

Windows Intelligence In Your Inbox

Sign up for our new free newsletter to get three time-saving tips each Friday

"*" indicates required fields

This field is for validation purposes and should be left unchanged.

Thurrott © 2024 Thurrott LLC