Skip to main content
Troubleshooting SuperchargePerformance

WebGL Context Lost in Chrome? 5 TESTED Fixes (2026)

WebGL context lost fires when Chrome's GPU process crashes, VRAM runs dry, or a tab gets discarded mid-render. Five verified fixes, ranked by cause frequency.

7 min read Verified Chrome 149

The webglcontextlost event fires in Chrome when the browser loses its connection to the GPU — usually from a driver timeout, VRAM exhaustion, or an unexpected tab discard mid-render. It is not hardware failure. In 80% of cases it traces back to one of four causes, and each has a specific fix.

Quick Diagnosis

SymptomLikely causeFirst step
Context lost on one specific site onlyThat site’s shaders exceed the OS 2-second GPU timeout (TDR)Update GPU drivers
Context lost when multiple tabs are openVRAM exhausted; other tabs consuming GPU memoryClose video/canvas tabs, check chrome://gpu
Context lost after switching back to a tabTab was discarded by Chrome Memory Saver during backgroundAdd site to Memory Saver exceptions
Context lost after a driver installDriver regressionRoll back or update to latest stable
webglcontextlost fires immediately on page loadHardware acceleration disabledEnable in chrome://settings → System
Multiple apps trigger itSystem-level GPU contentionClose non-browser GPU workloads

Fix 1: Verify Hardware Acceleration is Active

This takes 30 seconds and rules out the most common misconfiguration before anything else.

  1. Navigate to chrome://gpu
  2. Under Graphics Feature Status, find WebGL — it must say “Hardware accelerated”
  3. If it says “Software only, hardware acceleration unavailable” or “Disabled”, go to chrome://settings
  4. Scroll to System → turn on Use hardware acceleration when available
  5. Click Relaunch
  6. Return to chrome://gpu and confirm WebGL now shows Hardware accelerated

When hardware acceleration is off, Chrome falls back to software rasterization (SwiftShader). SwiftShader does not implement the full WebGL spec and drops contexts under workloads that real GPU rendering handles without issue.

Fix 2: Update GPU Drivers

Driver timeouts are the second most common cause. The OS has a 2-second GPU watchdog (Timeout Detection and Recovery, or TDR on Windows) that resets the driver if a GPU operation does not complete in time. Outdated drivers have known TDR threshold bugs — particularly with ANGLE, Chrome’s graphics translation layer.

Windows:

  1. Open Device Manager > Display adapters
  2. Right-click your GPU → Update driver
  3. Or download directly: nvidia.com/drivers for NVIDIA, amd.com/support for AMD

macOS:

  • GPU drivers ship with macOS updates. Open System Settings > General > Software Update and install any pending updates.

After updating, navigate to chrome://gpu and verify the driver version changed under “Driver version.” A changed version number confirms the update applied.

Fix 3: Reduce VRAM Pressure from Background Tabs

A background tab playing 4K video or running a canvas animation can consume enough VRAM to push a WebGL workload over the available headroom. When VRAM fills, Chrome evicts contexts — your WebGL context is one of them.

  1. Press Shift+Esc to open Chrome Task Manager
  2. Click the Memory footprint column header to sort by usage
  3. Identify tabs consuming 200MB+ that are not the active WebGL page
  4. Close or suspend those tabs before running GPU-intensive workloads

The same result: navigate to chrome://gpu → scroll to Chrome Memory at the bottom. The “Used GPU memory” figure tells you how much VRAM Chrome is holding. If it is close to your GPU’s total VRAM, context loss is likely under any additional load.

Fix 4: Prevent Tab Discards During Active WebGL Sessions

Chrome Memory Saver discards background tabs to free RAM. If you switch away from a tab running a WebGL application, Memory Saver can terminate its renderer process — including all GPU state. When you switch back, the tab reloads and the app sees a webglcontextlost event before the reload even completes.

Using Chrome’s built-in setting:

  1. Open chrome://settings/performance
  2. Under Memory Saver, click Add next to “Always keep these sites active”
  3. Add the domain of your WebGL app

Using SuperchargePerformance: SuperchargePerformance’s tab suspension uses chrome.tabs.discard() with explicit protection signals: tabs playing audio (tab.audible), pinned tabs, tabs with unsaved form input, and any domain in the per-site whitelist are never suspended. For a WebGL app you work with regularly, adding its domain to the extension’s whitelist prevents suspension without disabling RAM savings across the rest of your open tabs.

25+ web apps are auto-protected without any configuration (Figma, Notion, Linear, Miro, Canva, Lucid, Airtable, Asana, Monday, Slack, Discord, Teams, Gmail, Google Docs, Sheets, Slides, Drive, Calendar, Spotify, YouTube Music, Google Meet, Zoom, and others). For any other WebGL app, the per-domain whitelist in the extension popup handles it.

Fix 5: Check WebGL Context Limit and App-Level Handling

Chrome enforces a per-tab limit of approximately 16 simultaneous WebGL contexts. Applications that create new contexts without explicitly destroying old ones (common in frameworks that reinitialize on route changes) will hit this ceiling and trigger webglcontextlost on the oldest context.

If you are a developer or running a self-hosted app:

  1. Open DevTools → Console
  2. Look for WARNING: Too many active WebGL contexts. Oldest context will be lost.
  3. This confirms the context limit, not a driver or VRAM issue

The correct fix is ensuring the application calls gl.getExtension('WEBGL_lose_context').loseContext() on contexts before discarding them, or listens for webglcontextlost and calls event.preventDefault() followed by re-initialization on webglcontextrestored.

If you are an end user hitting this in a production app (a browser game, 3D viewer, or AI demo): close other tabs on the same origin, reload the page, and report the issue to the app developer — this is their context lifecycle bug, not a Chrome setting you can change.

What webglcontextlost Means at the API Level

The webglcontextlost event (part of the WebGLContextEvent interface) fires on the <canvas> element when Chrome’s GPU process drops the WebGL rendering context. By default, the browser does not attempt to restore it — the application must call event.preventDefault() to signal recovery intent, then wait for webglcontextrestored before reinitializing GPU state.

Applications that do not listen for this event fail silently: the canvas goes blank, draw calls throw GL_INVALID_OPERATION, and there is no user-visible error message unless the developer added one.

The WEBGL_lose_context extension (canvas.getContext('webgl').getExtension('WEBGL_lose_context')) is Chrome’s test harness for this code path. It exposes .loseContext() and .restoreContext() so developers can verify their recovery logic works before a real driver crash triggers it.

Checking chrome://gpu tells you whether a context loss was GPU-process-wide (affects all WebGL contexts) or context-specific. Under Problems Detected, driver-level resets appear as entries referencing GPU_PROCESS_CRASH_COUNT or similar.

When the Fixes Don’t Help

If all five fixes apply and context loss persists:

  • Integrated + discrete GPU conflict: On laptops with both Intel integrated and NVIDIA/AMD discrete graphics, Chrome sometimes uses the wrong GPU. Check chrome://gpu → “GL_RENDERER” — if it names the integrated GPU when discrete is expected, update the NVIDIA/AMD driver and set Chrome to use the discrete card via the OS’s GPU settings panel.
  • Chrome GPU blocklist: Chrome maintains an internal blocklist of driver/GPU combinations known to cause instability. Your GPU may be on it. Check chrome://gpu → “Driver Bug Workarounds” — a long list suggests Chrome is compensating for known driver issues. Filing a Chromium bug at crbug.com with your chrome://gpu output can get your configuration removed from the blocklist.
  • System VRAM under 2GB: Applications targeting desktop GPUs sometimes exceed the VRAM budget of low-VRAM configurations. This is a hardware constraint — reducing workload, closing other applications entirely, or using the app’s “low quality” mode are the only paths forward.

Quick Fix Reference

CauseFixTime
Hardware acceleration offchrome://settings → System → enable30 sec
Outdated GPU driverDevice Manager or GPU vendor site5-15 min
VRAM pressure from other tabsClose or suspend heavy background tabs1 min
Tab discarded by Memory SaverAdd domain to Memory Saver exceptions1 min
Too many WebGL contexts (dev)Add WEBGL_lose_context cleanup + webglcontextrestored handlervaries
Integrated/discrete GPU mismatchOS GPU settings → assign Chrome to discrete2 min

If the error appears only on one specific site and your drivers are current, the app is exceeding TDR thresholds or failing to handle context recovery. If it appears across multiple sites and tabs, the driver or hardware acceleration configuration is the place to start.

Frequently Asked Questions

What causes WebGL context lost in Chrome?
As of June 2026, the four most common causes are: GPU process crash or driver timeout (TDR), VRAM exhaustion from concurrent tabs or applications, tab discard by Chrome's Memory Saver or an extension mid-render, and exceeding Chrome's limit of approximately 16 simultaneous WebGL contexts per tab. A hardware acceleration being disabled in Chrome settings also triggers it by forcing software-only rendering that falls back with a context loss event.
How do I fix WebGL context lost?
Start with chrome://gpu — check that WebGL is listed as Hardware accelerated under Graphics Feature Status. If it says Software only, enable hardware acceleration in chrome://settings under System. Then update your GPU driver. If the error appears specifically when you have many tabs open, VRAM pressure from background tabs is the likely cause — close or suspend them before running WebGL workloads.
Does WebGL context lost mean my GPU is failing?
No. A webglcontextlost event is a software-level signal, not a hardware fault. It means the browser lost its connection to the GPU — either the driver reset, the context was evicted to free VRAM, or the tab was discarded. A GPU with permanent hardware failure would produce different symptoms: display artifacts, system crashes, or black screens outside Chrome.
What is the WEBGL_lose_context extension?
As of June 2026, WEBGL_lose_context is a WebGL debug API that lets developers programmatically force a context loss event for testing purposes. Calling loseContext() simulates a real context loss; restoreContext() re-acquires it. It is exposed in Chrome on all platforms. Applications that do not handle the webglcontextlost event will crash when any context loss occurs — including real driver failures.
Why does WebGL context lost happen when switching tabs?
Chrome's Memory Saver can discard background tabs, which terminates the renderer process including any active WebGL contexts. When you return to that tab, the page reloads from scratch and the WebGL application loses all GPU state. Whitelisting the tab in Memory Saver settings (or using SuperchargePerformance's per-domain suspension protection) prevents this.

Don't miss the next release

Be first to know when we ship something new.

Related Articles