Personalization Find and Save Windows Spotlight Images in Windows 11


Windows_Spotlight-new_header.webp

This tutorial will show you how to find and save the Windows Spotlight images displayed on your desktop and/or lock screen background in Windows 11.

You can have Windows Spotlight as a theme and display different background images on your desktop and lock screen in Windows 11.

Windows Spotlight uses the Bing daily wallpaper for images, and stores them on your computer to reference and show on your desktop and/or lock screen background.

See also Bing Wallpaper Gallery:

If wanted, you can find and save these cached Windows Spotlight images as JPG files to use as you like.


Here's How:

1 Click/tap on the Download button below to download the file below.

Find_and_save_Windows_Spotlight_images.zip


(Contents of BAT file for reference)
Code:
@echo off
pushd %cd%

md "%UserProfile%\Desktop\WindowsSpotlightImages" 2>nul

setlocal enabledelayedexpansion

cd "%LocalAppData%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\"
for /r %%f in (*) do (
  set dest="%UserProfile%\Desktop\WindowsSpotlightImages\%%~nxf.jpg"
  for %%A in ("%%f") do (
    if %%~zA GEQ 51200 (
      if not exist !dest! copy "%%f" !dest!
    )
  )
)

cd "C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\DesktopSpotlight\Assets\Images\"
for /r %%f in (*.jpg) do (
  set dest="%UserProfile%\Desktop\WindowsSpotlightImages\%%~nxf"
  if not exist !dest! copy "%%f" !dest!
)

cd "%LocalAppData%\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService\"
for /r %%f in (*) do (
  if "%%~xf"==".jpg" (
    set dest="%UserProfile%\Desktop\WindowsSpotlightImages\%%~nxf"
    if not exist !dest! copy "%%f" !dest!
  )
)

popd

2 Save the ZIP file to your desktop.

3 Unblock the ZIP file.

4 Extract the BAT file from the ZIP file.

4 Run the BAT file.

5 A WindowsSpotlightImages folder will be created on your desktop containing a copy of all cached Windows Spotlight images as JPG files. (see screenshot below)

You can hover over an image in the WindowsSpotlightImages folder to see its Dimensions (ex: "1920 x 1080").

You can rename these image files if wanted.


WindowsSpotlightImages_folder.png



That's it,
Shawn Brink


 

Attachments

Last edited:
I've updated my original script to also copy Spotlight Desktop wallpapers in full resolution.
  • Copies both Spotlight Lock Screen (1920x1080 resolution) and Desktop wallpapers (3840x2160 resolution).
    Portrait-style images for both of them are only available in 1080x1920 resolution.

  • Save folder is renamed "Windows Spotlight" on the Desktop. The old folder didn't have a space between the words.

  • Image filenames are now written in UTF-8 format, to preserve accented characters in place names.
    For example: 2025-09-24 Cabo de São Vicente Lighthouse, Portugal - Lus Casaca (Getty Images) 1920x1080.jpg

  • Copied files have the same time stamps as the original Windows sources.

  • If you prefer not to save portrait-style images, you can edit one line in the batch file:
    Code:
    $LandscapeOnly = $true
1759966533970.webp
 

Attachments

Last edited:

My Computer

System One

  • OS
    Windows 7
Thank you very much for your newest version @garlin

Is it possible that not all pictures offer a high resolution Desktop Wwallpaper (3840x2160)?

When I ran your script for the first time today, I only got these 3 variants:
2025-10-08 Gran Sabana, Venezuela - apomares (Getty Images) 1920x1080
2025-10-08 Lamar Valley, Wyoming, USA - Tom Murphy (Design Pics) 1920x1080
2025-10-08 Region Tagant, Mauretanien - Heinzelmann (Adobe Stock) 1920x1080
(and the corresponding Portrait versions in 1080x1920).

Do I need to adjust anything to get the 3840x2160 variants?
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    ASUS
    CPU
    I9-9900K
    Motherboard
    Z390
    Memory
    32GB Corsair RGB
    Graphics Card(s)
    NVidia RTX 3070
    Hard Drives
    SSD's
    PSU
    GIGABYTE 750W
    Cooling
    Watercooling for CPU, Aircooling for GPU
    Browser
    Google Chrome
I had a quick look and in my Win11-Registry there is no 'CacheRoot' in the Path
'HKCU:\Software\Microsoft\Windows\CurrentVersion\IrisService\Cache'
to loop for with
Code:
foreach ($RegKey in (Get-ChildItem $IrisCache | where { $_.Property -contains 'CacheRoot' }))
1760006891618.webp

only numeric SubKeys like these:
1760006780482.webp
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    ASUS
    CPU
    I9-9900K
    Motherboard
    Z390
    Memory
    32GB Corsair RGB
    Graphics Card(s)
    NVidia RTX 3070
    Hard Drives
    SSD's
    PSU
    GIGABYTE 750W
    Cooling
    Watercooling for CPU, Aircooling for GPU
    Browser
    Google Chrome
Can you export the "IrisService\Cache" tree to a registry file, and attach it as a ZIP?

I'll need to search your reg, and see if the expected JSON data is hidden there, but without a CacheRoot entry. Thanks.
 

My Computer

System One

  • OS
    Windows 7
I would prefer not to share this information as it includes product keys and other non-public regional and personal information.

However, I can assure you that none of your looped $ParentJSON.batchrsp.items like
$ChildJSON.ad.landscapeImage.asset $ChildJSON.ad.iconHoverText $ChildJSON.ad.copyright
exists in any of my various numeric subkeys.

Some of them includes nothing useful in the RawJson "batchrsp" at all:
"RawJson"="{\"batchrsp\":{\"ver\":\"1.0\",\"errors\":[{\"code\":2040,\"msg\":\"Demand source returns error (Name: GN_ps, Error: No eligible content.).\"}]}}" Others look like advertising entries for WhatsApp, Instagram, CoPilot and so on.

Maybe you can show me one of YOUR working entries and I can compare it myself?
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    ASUS
    CPU
    I9-9900K
    Motherboard
    Z390
    Memory
    32GB Corsair RGB
    Graphics Card(s)
    NVidia RTX 3070
    Hard Drives
    SSD's
    PSU
    GIGABYTE 750W
    Cooling
    Watercooling for CPU, Aircooling for GPU
    Browser
    Google Chrome
Thank you for your quick response and support!

As I feared, these entries are completely missing from my system:
"CacheRoot"=
"InitialJson"=

And your "RawJson"= differs completely from mine.

I assume there is a problem with the entries for Desktop Wallpapers in my Win11 registry.
As no one else seems to have this problem, please don't spend any more time on this issue.
Thanks again!
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    ASUS
    CPU
    I9-9900K
    Motherboard
    Z390
    Memory
    32GB Corsair RGB
    Graphics Card(s)
    NVidia RTX 3070
    Hard Drives
    SSD's
    PSU
    GIGABYTE 750W
    Cooling
    Watercooling for CPU, Aircooling for GPU
    Browser
    Google Chrome
This data is from a VM instance
Just to let you know @garlin :
Your new script works perfectly fine!
I've just installed a fresh copy of Windows 11 in a VM and get the bigger Desktop Wallpapers too.

Sorry for any unnecessary trouble caused. :hug:
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    ASUS
    CPU
    I9-9900K
    Motherboard
    Z390
    Memory
    32GB Corsair RGB
    Graphics Card(s)
    NVidia RTX 3070
    Hard Drives
    SSD's
    PSU
    GIGABYTE 750W
    Cooling
    Watercooling for CPU, Aircooling for GPU
    Browser
    Google Chrome
One litte addition for your script:

You should use something like
function Sanitize-FileName { param([string]$Name) # Replace all invalid characters with a hyphen return ($Name -replace '[\\\/:*?"<>|]', '-').Trim() }

and use it like this before the Download starts:
$LandscapeFile = Sanitize-FileName $LandscapeFile

Otherweise files with invalid characters (like a Slash or colon) from the description or creator can not be saved.
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    ASUS
    CPU
    I9-9900K
    Motherboard
    Z390
    Memory
    32GB Corsair RGB
    Graphics Card(s)
    NVidia RTX 3070
    Hard Drives
    SSD's
    PSU
    GIGABYTE 750W
    Cooling
    Watercooling for CPU, Aircooling for GPU
    Browser
    Google Chrome
While that's a helpful suggestion, my impression of the MS metadata feeds is they're already sanitizing the source text and it won't pass any "bad" characters. If you dig deeper into the cache content, it's very heavy on structured JSON. For their own benefit, they're probably not passing problematic text in the raw JSON.

The only "special" characters would be ones I introduce to the filename. My arbitrary scheme works out to:
Code:
[Date if provided] {location} - {photographer} ({copyright holder}) {x pixels}x{y pixels}

{location} is usually furnished as "place, country".
{photographer} looks like MS is sometimes incorrectly lopping off part of the photographer's name, like leaving some social media tag instead of a person's name.

This script's been around for two years, and I haven't seen "bad" characters getting passed off. But if that does happen, I will implement your suggested fix.
 

My Computer

System One

  • OS
    Windows 7
It just happened yesterday with a Slash in "Bisti/De-Na-Zin" which is not a valid character for a filename:
Spotlight-Images.webp
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    ASUS
    CPU
    I9-9900K
    Motherboard
    Z390
    Memory
    32GB Corsair RGB
    Graphics Card(s)
    NVidia RTX 3070
    Hard Drives
    SSD's
    PSU
    GIGABYTE 750W
    Cooling
    Watercooling for CPU, Aircooling for GPU
    Browser
    Google Chrome
@Brink

"%LocalAppData%\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService\"

I dont know if they give same file names or not but
If a file exist with same filename in different subfolders, BAT file will not copy each of them, it will only copy the first of them (although they are different files)

for example

There are 2 different files in A and B folder with same name 123456.jpg

"%LocalAppData%\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService\A\123456.jpg"
"%LocalAppData%\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService\B\123456.jpg"

There will be 1 file from "A" folder

"%UserProfile%\Desktop\WindowsSpotlightImages\123456.jpg"

Tell me if i am wrong.
 

My Computer

System One

  • OS
    Windows 11 25H2 Home Single Language (26200.8037)
    Computer type
    Laptop
    Manufacturer/Model
    LENOVO IdeaPad 5 15ITL05
    CPU
    Intel Core i3-1115G4
    Motherboard
    There is no such a God, I only know mother-Earth
    Memory
    8GB
    Graphics Card(s)
    on-board
    Sound Card
    on-board
    Monitor(s) Displays
    (s) is too ambitious for me
    Screen Resolution
    1920*1080
    Hard Drives
    256GB (SSD)
    PSU
    I was very young when I last saw a PSU
    Case
    ...
    Cooling
    My coldness is enough to cool the computer
    Keyboard
    A broken and very clean keyboard
    Mouse
    Rat
    Internet Speed
    Slowest internet connection in Europe
    Browser
    ChromePortable / FirefoxPortable / TorBrowser
    Antivirus
    G-Virus
    Other Info
    I can simply say that I took the red pill and I am not happy with it.
Hello @Feuer, :alien:

If a file with the same name is copied into the folder that already has file with the same name, it should add the usual "(1)" type number to the file name.
 

My Computers

System One System Two

  • OS
    Windows 11 Pro for Workstations
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom self build
    CPU
    Intel i7-8700K 5 GHz
    Motherboard
    ASUS ROG Maximus XI Formula Z390
    Memory
    64 GB (4x16GB) G.SKILL TridentZ RGB DDR4 3600 MHz (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING (11GB GDDR5X)
    Sound Card
    Integrated Digital Audio (S/PDIF)
    Monitor(s) Displays
    2 x Samsung Odyssey G75 27"
    Screen Resolution
    2560x1440
    Hard Drives
    1TB Samsung 990 PRO M.2,
    4TB Samsung 990 PRO M.2,
    TerraMaster F8 SSD Plus NAS
    PSU
    Seasonic Prime Titanium 850W
    Case
    Thermaltake Core P3 wall mounted
    Cooling
    Corsair Hydro H115i
    Keyboard
    Amazon Basics Wired Full Keyboard MD005
    Mouse
    Logitech MX Master 4
    Internet Speed
    2 Gbps Download and 100 Mbps Upload
    Browser
    Chrome and Edge
    Antivirus
    Microsoft Defender
    Other Info
    Logitech Z625 speaker system,
    Logitech BRIO 4K Pro webcam,
    HP Color LaserJet Pro MFP M477fdn,
    CyberPower CP1500PFCLCD
    Galaxy S23 Plus phone
  • Operating System
    Windows 11 Pro
    Computer type
    Laptop
    Manufacturer/Model
    Surface Laptop 7 Copilot+ PC
    CPU
    Snapdragon X Elite (12 core) 3.42 GHz
    Memory
    16 GB LPDDR5x-7467 MHz
    Monitor(s) Displays
    15" HDR
    Screen Resolution
    2496 x 1664
    Hard Drives
    1 TB SSD
    Internet Speed
    Wi-Fi 7 and Bluetooth 5.4
    Browser
    Chrome and Edge
    Antivirus
    Microsoft Defender
Code:
cd "%LocalAppData%\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService\"
for /r %%f in (*) do (
  if "%%~xf"==".jpg" (
    set dest="%UserProfile%\Desktop\WindowsSpotlightImages\%%~nxf"
    if not exist !dest! copy "%%f" !dest!
  )
)

I talk about BAT file

If file exist with the same name in destination folder, this BAT script will not copy the file even if it is different or not

if not exist !dest! copy "%%f" !dest! - if file does not exist it will copy
but if it exists in destination it will not copy

"%LocalAppData%\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService\A\123456.jpg" - it will copy this one to %UserProfile%\Desktop\WindowsSpotlightImages\

so we have "%UserProfile%\Desktop\WindowsSpotlightImages\123456.jpg" now

FOR loop continues

"%LocalAppData%\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\LocalCache\Microsoft\IrisService\B\123456.jpg" - but it will not copy this one because 123456.jpg exists in "%UserProfile%\Desktop\WindowsSpotlightImages"

The batch file is working like this.

You can try that if you want
Create A and B folders in \IrisService\ folder, put 2 different jpg files with same name (in my example 123456.jpg) run the BAT script that you give in tutorial, you will see only one 123456.jpg file exist in "%UserProfile%\Desktop\WindowsSpotlightImages"
 

My Computer

System One

  • OS
    Windows 11 25H2 Home Single Language (26200.8037)
    Computer type
    Laptop
    Manufacturer/Model
    LENOVO IdeaPad 5 15ITL05
    CPU
    Intel Core i3-1115G4
    Motherboard
    There is no such a God, I only know mother-Earth
    Memory
    8GB
    Graphics Card(s)
    on-board
    Sound Card
    on-board
    Monitor(s) Displays
    (s) is too ambitious for me
    Screen Resolution
    1920*1080
    Hard Drives
    256GB (SSD)
    PSU
    I was very young when I last saw a PSU
    Case
    ...
    Cooling
    My coldness is enough to cool the computer
    Keyboard
    A broken and very clean keyboard
    Mouse
    Rat
    Internet Speed
    Slowest internet connection in Europe
    Browser
    ChromePortable / FirefoxPortable / TorBrowser
    Antivirus
    G-Virus
    Other Info
    I can simply say that I took the red pill and I am not happy with it.
@Feuer,

Are they different sizes for you? If not, then I don't think it matters if it they are identical files with the same name.
 

My Computers

System One System Two

  • OS
    Windows 11 Pro for Workstations
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom self build
    CPU
    Intel i7-8700K 5 GHz
    Motherboard
    ASUS ROG Maximus XI Formula Z390
    Memory
    64 GB (4x16GB) G.SKILL TridentZ RGB DDR4 3600 MHz (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING (11GB GDDR5X)
    Sound Card
    Integrated Digital Audio (S/PDIF)
    Monitor(s) Displays
    2 x Samsung Odyssey G75 27"
    Screen Resolution
    2560x1440
    Hard Drives
    1TB Samsung 990 PRO M.2,
    4TB Samsung 990 PRO M.2,
    TerraMaster F8 SSD Plus NAS
    PSU
    Seasonic Prime Titanium 850W
    Case
    Thermaltake Core P3 wall mounted
    Cooling
    Corsair Hydro H115i
    Keyboard
    Amazon Basics Wired Full Keyboard MD005
    Mouse
    Logitech MX Master 4
    Internet Speed
    2 Gbps Download and 100 Mbps Upload
    Browser
    Chrome and Edge
    Antivirus
    Microsoft Defender
    Other Info
    Logitech Z625 speaker system,
    Logitech BRIO 4K Pro webcam,
    HP Color LaserJet Pro MFP M477fdn,
    CyberPower CP1500PFCLCD
    Galaxy S23 Plus phone
  • Operating System
    Windows 11 Pro
    Computer type
    Laptop
    Manufacturer/Model
    Surface Laptop 7 Copilot+ PC
    CPU
    Snapdragon X Elite (12 core) 3.42 GHz
    Memory
    16 GB LPDDR5x-7467 MHz
    Monitor(s) Displays
    15" HDR
    Screen Resolution
    2496 x 1664
    Hard Drives
    1 TB SSD
    Internet Speed
    Wi-Fi 7 and Bluetooth 5.4
    Browser
    Chrome and Edge
    Antivirus
    Microsoft Defender
I told this because working of BAT files, it was a senario but it is possible. I havent any issue.
 

My Computer

System One

  • OS
    Windows 11 25H2 Home Single Language (26200.8037)
    Computer type
    Laptop
    Manufacturer/Model
    LENOVO IdeaPad 5 15ITL05
    CPU
    Intel Core i3-1115G4
    Motherboard
    There is no such a God, I only know mother-Earth
    Memory
    8GB
    Graphics Card(s)
    on-board
    Sound Card
    on-board
    Monitor(s) Displays
    (s) is too ambitious for me
    Screen Resolution
    1920*1080
    Hard Drives
    256GB (SSD)
    PSU
    I was very young when I last saw a PSU
    Case
    ...
    Cooling
    My coldness is enough to cool the computer
    Keyboard
    A broken and very clean keyboard
    Mouse
    Rat
    Internet Speed
    Slowest internet connection in Europe
    Browser
    ChromePortable / FirefoxPortable / TorBrowser
    Antivirus
    G-Virus
    Other Info
    I can simply say that I took the red pill and I am not happy with it.
I told this because working of BAT files, it was a senario but it is possible. I havent any issue.

No worries. I just wanted to check if it was an issue.
 

My Computers

System One System Two

  • OS
    Windows 11 Pro for Workstations
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom self build
    CPU
    Intel i7-8700K 5 GHz
    Motherboard
    ASUS ROG Maximus XI Formula Z390
    Memory
    64 GB (4x16GB) G.SKILL TridentZ RGB DDR4 3600 MHz (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING (11GB GDDR5X)
    Sound Card
    Integrated Digital Audio (S/PDIF)
    Monitor(s) Displays
    2 x Samsung Odyssey G75 27"
    Screen Resolution
    2560x1440
    Hard Drives
    1TB Samsung 990 PRO M.2,
    4TB Samsung 990 PRO M.2,
    TerraMaster F8 SSD Plus NAS
    PSU
    Seasonic Prime Titanium 850W
    Case
    Thermaltake Core P3 wall mounted
    Cooling
    Corsair Hydro H115i
    Keyboard
    Amazon Basics Wired Full Keyboard MD005
    Mouse
    Logitech MX Master 4
    Internet Speed
    2 Gbps Download and 100 Mbps Upload
    Browser
    Chrome and Edge
    Antivirus
    Microsoft Defender
    Other Info
    Logitech Z625 speaker system,
    Logitech BRIO 4K Pro webcam,
    HP Color LaserJet Pro MFP M477fdn,
    CyberPower CP1500PFCLCD
    Galaxy S23 Plus phone
  • Operating System
    Windows 11 Pro
    Computer type
    Laptop
    Manufacturer/Model
    Surface Laptop 7 Copilot+ PC
    CPU
    Snapdragon X Elite (12 core) 3.42 GHz
    Memory
    16 GB LPDDR5x-7467 MHz
    Monitor(s) Displays
    15" HDR
    Screen Resolution
    2496 x 1664
    Hard Drives
    1 TB SSD
    Internet Speed
    Wi-Fi 7 and Bluetooth 5.4
    Browser
    Chrome and Edge
    Antivirus
    Microsoft Defender
It just happened yesterday with a Slash in "Bisti/De-Na-Zin" which is not a valid character for a filename:
After searching online, I did find other references to the same New Mexico spot as "Bisti/De-Na-Zin".

I've updated the script using this new expression:
Code:
$SharedName = ('{0} {1} - {2} ({3})' -f $Date, $Description, $Creator, $Licensing) -replace '[\/:]',' - ' -replace '[\\*?"<>|]

"/" and ":" are replaced by " - ".
All other special characters are blocked.
 
Last edited:

My Computer

System One

  • OS
    Windows 7
Lock Screen images are only in 2K, but the Desktop images are 4K (in landscape mode). Not sure why MS does that.
 

My Computer

System One

  • OS
    Windows 7
Back
Top Bottom