BROWSER CAPABILITY LAB

Your browser.
Put to work.

A browser can be a workshop. Find out what yours can actually do—then build something with it.

Explore the tests ↓

8 working tests. No accounts. No uploads.
No permission pop-ups during the check.

THIS BROWSER / LIVE REPORTNot checked
of 8 automatic tests
verified here

Let’s see what works.

Run small, real operations on this device. Get evidence, not a browser compatibility horoscope.

Checking page context…Results stay here

Ready when you are. The check creates tiny temporary test files and removes them afterwards.

01 / FROM FEATURES TO POSSIBILITIES

What do you want to build?

Choose a direction. See the requirements
and a practical way forward.

02 / THE PROOF IS IN THE OUTPUT

Small tests. Real results.

01 / COMPUTENot checked

Put the GPU to work

Run parallel calculations for graphics, simulation and local AI.

Run the check to see a real result here.
WebGPU
What this proves & next steps

Dispatches a compute shader that doubles 256 integers, then reads and checks every result. This is a small compute test, not an AI benchmark.

If it doesn’t work: Try a current browser with hardware acceleration enabled. Provide a CPU or WebAssembly path when an adapter is unavailable.

No operation attempted yet.

Read the API documentation ↗
02 / COMPUTENot checked

Keep the interface moving

Give heavy calculations their own thread while the page stays usable.

Run the check to see a real result here.
Web Workers
What this proves & next steps

A dedicated worker sums integers 1 through 100,000. The returned sum must equal 5,000,050,000. Startup and message time are included.

If it doesn’t work: Split work into small chunks on the main thread. A Content Security Policy may prevent the blob worker used by this test.

No operation attempted yet.

Read the API documentation ↗
03 / GRAPHICSNot checked

Make pixels, offscreen

Generate images and previews without adding a canvas to the page.

Run the check to see a real result here.
OffscreenCanvas
What this proves & next steps

Draws the artwork shown here, verifies a known pixel and encodes a PNG. This checks 2D rendering on the current thread, not rendering inside a worker.

If it doesn’t work: Use a regular HTML canvas. Move rendering to a worker only after testing that combination separately.

No operation attempted yet.

Read the API documentation ↗
04 / FILESNot checked

Pack more into fewer bytes

Compress exports and restore the exact original data locally.

Run the check to see a real result here.
Compression Streams
What this proves & next steps

Compresses repetitive generated text with gzip, decompresses it and compares the whole text. Savings depend on the data; photos and ZIPs may barely shrink.

If it doesn’t work: Use a compression library or offer uncompressed downloads.

No operation attempted yet.

Read the API documentation ↗
05 / STORAGENot checked

Give your app a memory

Store structured projects on this device without a server account.

Run the check to see a real result here.
IndexedDB
What this proves & next steps

Creates a uniquely named test database, commits a record, reads it in a new transaction and deletes the database. This does not guarantee long-term persistence.

If it doesn’t work: Keep a downloadable project backup. Browser settings, private mode and storage limits can prevent saving.

No operation attempted yet.

Read the API documentation ↗
06 / STORAGENot checked

Work with local app files

Keep app-owned working files separate from your personal folders.

Run the check to see a real result here.
Origin private file system
What this proves & next steps

Creates a uniquely named 4 KiB file in this origin’s private storage, writes it, reads and compares it, then removes it.

If it doesn’t work: Use IndexedDB blobs or file input and downloads. This origin’s storage allowance is shared by its apps.

No operation attempted yet.

Read the API documentation ↗
07 / COMPUTENot checked

Run a compiled function

Use portable compiled code for parsers, engines and other heavy work.

Run the check to see a real result here.
WebAssembly
What this proves & next steps

Instantiates a tiny embedded WebAssembly module and calls its add function with 20 and 22. SIMD, threads and real application speed are not tested.

If it doesn’t work: Offer a JavaScript implementation. Check the site’s Content Security Policy if compilation is blocked.

No operation attempted yet.

Read the API documentation ↗
08 / FILESNot checked

Check that bytes match

Create a checksum to catch changed or corrupted data.

Run the check to see a real result here.
Web Crypto / SHA-256
What this proves & next steps

Hashes the standard “abc” sample and verifies all 256 bits against its known SHA-256 digest. This is an integrity primitive, not proof that a file is trustworthy.

If it doesn’t work: Use a maintained hashing library. Web Crypto may require a secure page context.

No operation attempted yet.

Read the API documentation ↗
09 / PERMISSIONNot checked

Choose a file directly

Use the system picker to select a file handle for an editor.

A browser prompt opens only when you choose to test.
File System Access
What this proves & next steps

Opens the file picker and confirms that a file handle was selected. File contents and names are never read or exported. Writing is not tested.

If it doesn’t work: Use an ordinary file input and a download button; a missing system-picker API does not prevent local file tools.

No operation attempted yet.

Read the API documentation ↗
10 / PERMISSIONNot checked

Connect the workbench

Let the browser ask you to select a serial device.

A browser prompt opens only when you choose to test.
Web Serial
What this proves & next steps

Asks for a serial port and checks that a handle was returned. The port is never opened, read or written. A selected handle does not prove device communication.

If it doesn’t work: Use a native serial tool, or import a recorded trace. Hardware, browser support and site permissions all affect availability.

No operation attempted yet.

Read the API documentation ↗

03 / TAKE THE EVIDENCE WITH YOU

A useful bug report starts here.

Download your results, or bring in a report from another browser to see what changed. Reports contain test outcomes, timing and page context. No file contents or device identifiers.

How to read this report

Verified means the stated operation completed and its output passed a check. Unavailable means the required API is missing. Blocked means browser policy or permission stopped it. A cancelled picker is recorded separately.

These are small functionality checks, not speed rankings, security audits or guarantees for an entire application. GPU compute does not prove that an AI model will fit. Temporary storage round trips do not prove durability or offline reload. Results apply to this page and this browser session; other sites may have different policies.

Each test links to its documentation. The result comes from your browser, not a hard-coded compatibility table. Automatic tests use generated data only. Serial selection never opens, reads or writes the port; file selection never reads your file.