Windows  ·  medium  ·  Microsoft Office

Outlook search returns nothing, or misses recent mail

Searching in Outlook finds nothing, or finds old mail but not anything from the last few weeks. Outlook does not do its own searching in cached mode — it asks the Windows Search index, and the index is what has failed.

What you see

A search for a word that is plainly in the mailbox returns no results, or a banner reads "Search results may be incomplete because items are still being indexed" and never clears. Searching the same mailbox in Outlook on the web works correctly.

What is actually wrong

In cached Exchange mode the mailbox is an OST on disk and search is served by the Windows Search index over that file. The index can be missing Outlook entirely because the service is stopped or a policy excluded it, it can be stuck part-way through a rebuild, or the index database itself can be damaged. A very large OST on a slow disk simply takes longer than people expect.

Codes and articles

outlook search no resultssearch results may be incompleteWindows Search indexing outlookPreventIndexingOutlookWindows.edb

Start here — find out which fix applies

A script that runs the 3 inspection commands from the write-up below and prints what each one returned. It reads the machine and changes nothing — every command that could write, delete, start or stop is excluded from it by construction. Run this first, then pick the fix its output points at.

Download the read-only diagnosticchanges nothing · safe to run before reading

Fixes (3)

Confirm the search service and that Outlook is not excluded
PowerShell as administrator15 minuteslow riskreversible

Start here. If the service is off or a policy has excluded Outlook, every other fix is wasted effort.

  1. Check the Windows Search service is running and set to start automatically.

    PowerShell
    Get-Service WSearch | Select-Object Name, Status, StartType

    Performance tuning guides routinely tell people to disable WSearch. Doing so breaks Outlook search completely, and nothing in Outlook says why.

  2. Start it and set it back if it is disabled.

    PowerShell
    Set-Service WSearch -StartupType Automatic; Start-Service WSearch
  3. Check for a policy that specifically excludes Outlook from the index.

    PowerShell
    Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search' -ErrorAction SilentlyContinue | Select-Object PreventIndexingOutlook, PreventIndexingEmailAttachments

    PreventIndexingOutlook set to 1 produces exactly this symptom on a machine where everything else about search works normally.

  4. Remove the exclusion if it is not deliberate, then restart the service.

    PowerShell
    Remove-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search' -Name PreventIndexingOutlook -ErrorAction SilentlyContinueRestart-Service WSearch
Confirm it workedIn Outlook, Search → Search Tools → Indexing Status reports Outlook has finished indexing, with a non-zero item count.
If you need to undo itSet the policy value back to 1 if it turns out to have been intentional.
Download this fix as a PowerShell scriptneeds an elevated shell · asks before each step
Check what the index is actually told to cover
Indexing Options, as the affected user20 minuteslow riskreversible

Indexing runs but never completes, or search became unreliable as the mailbox grew.

  1. Open Indexing Options and confirm Microsoft Outlook is ticked under Modify.

    Command Prompt
    control srchadmin.dll
  2. Look at the item count on the Indexing Options window. If it is climbing, the index is working and simply has not caught up — leave the machine on, plugged in and unlocked, and check again later.

    Indexing is throttled hard while a machine is on battery or under load. A laptop that is closed at five o'clock every day may never finish indexing a large mailbox, and no amount of rebuilding will change that.

  3. Consider reducing how much mail is kept offline. File → Account Settings → Account Settings → Change → the Mail to keep offline slider. Twelve months indexes considerably faster than All.

  4. Confirm the OST is not on a location the index skips — a removable drive or a network path.

    PowerShell
    Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Outlook" -Filter *.ost | Select-Object FullName, @{n='GB';e={[math]::Round($_.Length/1GB,2)}}
Confirm it workedThe item count in Indexing Options stops rising and Outlook reports indexing complete.
If you need to undo itMove the offline slider back if you changed it; mail is re-downloaded, which takes time but loses nothing.
Download this fix as a PowerShell script2 steps you do yourself · asks before each step
Rebuild the index
PowerShell as administrator, with the machine free for several hours3 hoursmedium riskreversible

The service is healthy, Outlook is included, and search is still wrong. Do this last — a rebuild takes hours and everyone's search is degraded until it finishes.

  1. Warn the user first. Until the rebuild completes, search across the whole machine returns partial results, and that includes the Start menu.

  2. Close Outlook.

    PowerShell
    Get-Process OUTLOOK -ErrorAction SilentlyContinue | Stop-Process -Force
  3. Stop the service and remove the index database.

    PowerShell
    Stop-Service WSearchRemove-Item "$env:ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb" -Force

    Deleting Windows.edb is the same operation as the Rebuild button in Indexing Options, but it works when the button does nothing — which is the usual state by the time you get here. The file is a cache and holds no original data.

  4. Start the service and let it rebuild.

    PowerShell
    Start-Service WSearch
  5. Leave the machine on, plugged in and signed in. Check progress by item count rather than by searching.

    Command Prompt
    control srchadmin.dll
Confirm it workedIndexing Options reports indexing complete, and a search in Outlook for a word from a recent message returns it.
If you need to undo itNone needed and none possible — the index is derived data and is rebuilt from the mailbox and the file system. No mail is at risk at any point.
Download this fix as a PowerShell scriptneeds an elevated shell · 1 step you do yourself · asks before each step

Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.