Browser Diagnostics WebGL WebGL2 GPU

WebGL Test

Probe WebGL / WebGL2 contexts and report GPU renderer strings.

Interactive tool

Run the test

Runs in your browser

Creates a hidden canvas and probes webgl and webgl2. When allowed, reads unmasked vendor/renderer via WEBGL_debug_renderer_info, plus max texture size and other limits.

Press Probe WebGL to inspect this GPU context.

Permission status

Checked in your browser. DeviceHub does not store permission grants.

  • Special permission Not required

Live results

Metrics update as you run the test. Nothing is uploaded.

Loading

Waiting for interactive tool output…

Device information

Labels and capability details reported by your browser.

No device details yet.

Description

About WebGL Test

Introduction

The DeviceHub WebGL Test is a free online context smoke test that attempts WebGL and WebGL2 canvas contexts and reads vendor/renderer parameters when browsers expose them, without claiming unmasked strings will always appear. Game developers, mapping library authors, and support staff diagnosing black canvas issues use context creation as a first GPU smoke step inside the tab. DeviceHub notes honestly: WEBGL_debug_renderer_info and similar extensions are often blocked or return generic values for fingerprinting resistance, empty or vague renderer output is frequently intentional policy, not a failed test. Pair with WebGPU Test for next-generation probes and Screen Resolution when canvas sizing interacts with layout bugs. GIS teams running Mapbox GL in locked-down Chrome profiles verify WebGL2 context creation here before redeploying tile servers. MapLibre or Cesium “lost context” tickets start with context creation smoke before blaming tile servers. ANGLE backend strings when visible hint whether Direct3D or Vulkan paths are active on Windows, useful when games work but maps fail. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Fleet map dashboards black-screening on Intel integrated GPUs start triage with WebGL1/WebGL2 creation rows before blaming tile servers. Map dashboards black-screening on Intel integrated GPUs start with WebGL1/WebGL2 creation before tile server blame. HDR browser modes rarely change GL creation but can affect perceived canvas colors, note HDR state separately. OES_texture_float support when probed elsewhere affects map rendering, context creation is only first gate. CesiumJS globe tiles and MapLibre vector maps both require WebGL2 floating-point textures on some layers; when WebGL1 succeeds but WebGL2 fails, fallback shaders may render flat blue oceans, capture both context rows before blaming CDN tile availability. PreserveDrawingBuffer true when set in apps affects screenshot alpha, this smoke uses default false attributes.

What this tool does

The page creates test contexts, queries GL parameters, and optionally requests debug renderer info when permitted, labeling masked strings as privacy behavior. It does not rewrite GPU blocklists, force driver updates, or benchmark draw call throughput. Failures surface when hardware acceleration is off, blocklists apply, or remote desktop breaks GL. Separate rows or messaging for WebGL1 versus WebGL2 avoid conflating partial support. Zero-size canvas CSS can look like black GL, confirm layout sizes via Screen Resolution separately. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Labeled WebGL1 versus WebGL2 outcomes prevent misfiled bugs when only one context tier is blocklisted. Separate context rows prevent misfiled bugs when only WebGL2 is blocklisted on older drivers. loseContext stability under gaming load is not simulated, creation smoke differs from long-session stability. Canvas alpha:false defaults sometimes surprise screenshot tests, context smoke does not set canvas CSS size. Context attributes such as antialias, depth, and stencil requested at creation time can differ from production map libraries; this smoke uses conservative defaults so failures here still implicate blocklists or acceleration toggles rather than exotic attribute mismatches alone. Integrated GPU dual-stack laptops switching to battery mode may block discrete GL, retest on AC power before driver tickets.

When to use it

Run when WebGL maps fail silently, after GPU driver updates, when comparing integrated versus discrete GPU browser behavior, or before escalating black canvas tickets to hardware RMA. Prefer WebGPU Test when investigating newer Chromium graphics stacks alongside legacy WebGL. Antialiasing defaults differ between WebGL1 and WebGL2 partial support scenarios. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Remote desktop users see software GL or total failure, retest on local hardware before GPU RMA. Zero CSS canvas size looks like black GL, verify layout via Screen Resolution separately from context smoke. Enterprise software rendering policies fail contexts on healthy GPUs, policy not panel defect. Electron apps embedding Chromium with --disable-gpu flag for CI builds will fail context creation here identically to end-user black maps, label headless or GPU-disabled shells in tickets before escalating to DeviceHub. MAX_TEXTURE_SIZE queries when shown help tile atlas planning, context creation alone does not print every limit. WebGL context lost event after GPU process crash is not simulated, users may need browser restart after one-shot success here.

How it works

WebGL contexts come from canvas elements; browsers may refuse context creation on blocklisted GPUs or software renderers. UNMASKED_VENDOR_WEBGL and UNMASKED_RENDERER_WEBGL via debug extension are increasingly restricted, DeviceHub reports what is returned, not what a native app sees. Secure HTTPS hosts the page; permissions stay none. WebGL2 availability may differ from WebGL1 on the same machine. loseContext events are not simulated here, this is creation smoke, not stability testing. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. loseContext events from GPU reset are not simulated; creation smoke differs from stability under gaming load. WEBGL_debug_renderer_info blocked while contexts work means masked renderer is policy not missing GL. WebGL2 missing with WebGL1 working explains many map-library fallback paths, paste both outcomes in tickets. WebGL loseContext extension exists for testing, production apps rarely call it; this smoke does not simulate GPU reset storms. Stencil buffer defaults when absent break certain clipping shaders, context attributes beyond creation smoke matter for map overlays.

Step-by-step instructions

  1. Open WebGL Test over HTTPS with hardware acceleration enabled in browser settings. Enable hardware acceleration in browser settings before black canvas tickets cite this smoke.
  2. Run probes for WebGL1 and WebGL2 noting which contexts succeed or throw. Capture canvas CSS width/height beside context outcome when creation succeeds yet canvas looks black.
  3. Read vendor and renderer fields understanding privacy reduction may leave them blank or generic. Test locally, not via remote desktop, before GPU hardware RMA from GL failures alone.
  4. If contexts fail, check GPU blocklists, acceleration toggles, and If you are on remote desktop. Paste WebGL1 and WebGL2 rows separately for map libraries with dual fallback paths.
  5. Open WebGPU Test when investigating newer Chromium graphics stacks alongside legacy WebGL. Check about:gpu blocklist status when contexts fail on machines that should support GL.
  6. Paste both WebGL1 and WebGL2 outcomes into tickets, partial support explains many map-library fallback paths. Pair WebGPU Test when investigating Chromium versions shipping both APIs concurrently.

Common problems

Assuming masked renderer strings mean DeviceHub broke misses fingerprinting policy. Remote desktop often breaks GL entirely. Enterprise software rendering policies produce failures on healthy GPUs. Expecting WebGL2 on every mobile browser overstates mobile support. Black canvas after sleep/resume on laptops may need GPU driver restart, not captured by one-shot context creation. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Remote desktop breaks GL contexts frequently, retest on local hardware before GPU RMA. GPU blocklists in browser about:gpu pages explain unexpected context failures, link internally when allowed. Intel driver blocklists after sleep/resume on Windows laptops sometimes require closing all GPU tabs before context creation succeeds again, a one-shot smoke after wake may false-negative until the user restarts the browser. ANGLE Metal versus D3D11 backend choice on Windows affects driver bug triage, pair context outcome with about:gpu backend notes.

Privacy explanation

GL parameters render locally. Masked renderer strings reflect browser policy. No camera or microphone permission is requested. Context creation does not access camera or microphone despite GPU naming overlap in vendor strings. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Renderer strings may read "Google SwiftShader" on VMs, that indicates software rendering, not personal data leak. Software SwiftShader strings on VMs indicate rendering path, not personal data leaks in renderer field. Pair WebGPU Test when investigating newer stacks alongside legacy WebGL on Chromium. Even when UNMASKED_RENDERER_WEBGL returns a string, treat it as a browser policy snapshot, not grounds to deanonymize users in public bug threads. Floating-point render targets when required by postprocessing shaders need OES_texture_float, context creation smoke is only step one.

Runtime principles

Built for the browser

What happens when you run this test — without downloads or accounts.

  1. 01

    Runs in your browser

    WebGL Test uses standard web APIs — no install, extension, or desktop app required.

  2. 02

    Reads what the browser allows

    Results come from events and capability signals the web platform exposes for this session.

  3. 03

    Private by default

    Input and diagnostic values stay in your browser session for display — nothing is sold as media.

Compatibility

Supported browsers

Expected support for modern engines. Individual APIs may still vary by device.

  • Chrome

    supported

    Latest stable

  • Firefox

    supported

    Latest stable

  • Safari

    supported

    Latest stable

  • Edge

    supported

    Latest stable

Devices

Supported devices

Hardware and form factors this browser test is designed to exercise.

  • Desktop browsers

    Chrome, Firefox, Safari, and Edge on Windows, macOS, Linux.

  • Laptops

    Reports identity and feature signals for the active session.

  • Phones & tablets

    Mobile browsers with web platform capability probes.

Privacy

Your data stays with you

WebGL Test is built privacy-first. Diagnostics run in your browser session whenever web APIs allow.

Read our privacy policy

Troubleshooting

Common problems

Quick fixes before you dig into FAQs.

Renderer string is blank or generic
WEBGL_debug_renderer_info and similar extensions are often masked for fingerprinting resistance, empty or generic renderer strings are frequently intentional.
WebGL2 missing but WebGL1 works
Note both contexts in tickets; some older GPUs or policies block WebGL2 while WebGL1 still runs.
Black canvas after probe
GPU blocklists, disabled hardware acceleration, or remote desktop can break GL contexts, retest locally with acceleration enabled.

FAQ

Frequently asked questions

Structured answers for users and FAQ rich results.

Browse FAQs
What does WebGL Test report?
It probes WebGL / WebGL2 context creation and may show GPU unmasked or reduced renderer strings when available.
Why are vendor/renderer strings generic?
Privacy reductions and extensions often hide detailed GPU strings. That is expected on many modern builds.
Context creation failed, is my GPU dead?
Not necessarily. Drivers, software rendering, remote desktop, and browser flags can block WebGL while native apps still work.
WebGL versus WebGPU, which first?
WebGL has broader support today. Use WebGPU Test when you specifically need WebGPU adapter detection.
Do I need a permission?
No. Creating a canvas WebGL context does not use mic or camera permissions.
Are GL strings uploaded?
No. Strings stay in your browser session for on-page diagnostics.

Newsletter

Updates coming soon

A lightweight email digest for new tools and release notes is planned. No signup form is live yet — check Release Notes for product updates.

Release notes

Need another diagnostic after WebGL Test?

Explore related DeviceHub tools that pair well with this test.