Fix ERROR_EVT_FILTER_TOO_COMPLEX (0X00003AB2) on Windows
XPath filter in Event Viewer is too complex. Shorten or simplify the query to fix it. Had a client hit this with a 10-line custom filter.
Quick Answer
Delete or simplify the XPath filter in Event Viewer—limit conditions to 8–10 elements, avoid nested expressions, and use simple comparisons.
Why This Happens
Windows Event Viewer has a hard limit on XPath filter complexity—roughly 10–12 nodes or nested conditions. When you pile on too many and/or clauses, wildcards, or date ranges, the engine chokes and throws ERROR_EVT_FILTER_TOO_COMPLEX (0X00003AB2). I had a client last month who tried to monitor 15 security events across 3 logs with a single filter—took down their entire Event Viewer session. Windows 10/11 and Server 2016+ all hit this limit.
Fix Steps
- Open Event Viewer—run
eventvwr.mscas admin. - Find the filter—click on the custom view or log that’s failing. If the filter is already broken, create a new temporary view with a simple filter (e.g.,
Level = 2) to see if the UI works. - Delete or simplify the filter XML:
- Right-click the custom view → Properties → Edit Filter → XML tab.
- Copy the XPath query to Notepad.
- Remove any
orclauses that aren’t critical. Merge similar conditions (e.g.,EventID=4624 or EventID=4625→ a singleEventIDrange if possible). - Limit to 8–10 nodes max. Example of a too-complex filter:
<QueryList> <Query Id="0" Path="Security"> <Select Path="Security">*[System[(EventID=4624 or EventID=4625 or EventID=4634) and (TimeCreated[timediff(@SystemTime) <= 86400000]) and (Security[@UserID='S-1-5-21-...' or @UserID='S-1-5-21-...'])]</Select> </Query> </QueryList> - Simplify to something like:
<QueryList> <Query Id="0" Path="Security"> <Select Path="Security">*[System[(EventID=4624 or EventID=4625) and TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select> </Query> </QueryList>
- Test the filter—click OK. If it still throws the error, remove more conditions.
- If all else fails, delete the custom view and recreate it with a basic filter. Then manually add conditions one by one until it breaks.
Alternative Fixes
- Use PowerShell—
Get-WinEvent -FilterXPathhandles slightly more complex queries than Event Viewer’s GUI. Example:Get-WinEvent -LogName Security -FilterXPath "*[System[(EventID=4624 or EventID=4625) and TimeCreated[timediff(@SystemTime) <= 86400000]]]" - Split the query—create two or three separate custom views, each simpler. Then use a script or third-party log tool (like LogParser or Graylog) to combine results.
- Check for corrupted filter cache—sometimes a leftover temporary file causes issues. Run
wevtutil elto list logs, thenwevtutil cl "logname"to clear a specific log (be careful—this erases events). Better: delete the%SystemRoot%\System32\winevt\Logs\*.evtxbackup files if you’re certain you don’t need them.
Prevention Tip
Keep filters under 10 conditions. If you need to track 20+ event IDs, use a script or SIEM instead of Event Viewer. I tell clients: “If your filter takes more than 2 lines in Notepad, you’re doing it wrong.”
Was this solution helpful?