Version: 2021.3
Language : English
WebGL performance considerations
Building and distributing a WebGL project

Debug and troubleshoot WebGL builds

Visual Studio doesn’t support debugging Unity WebGLA JavaScript API that renders 2D and 3D graphics in a web browser. The Unity WebGL build option allows Unity to publish content as JavaScript programs which use HTML5 technologies and the WebGL rendering API to run Unity content in a web browser. More info
See in Glossary
content. Use the following tips to get your build information.

JavaScript console in browsers

Unity WebGL doesn’t have access to your file system, so it doesn’t write a log file like other platforms. However, it does write all logging information such as Debug.Log, Console.WriteLine or Unity’s internal logging to the browser’s JavaScript console.

To open the JavaScript console:

OS Browser Instructions
Windows Firefox Press Ctrl-Shift-K.
Chrome Press Ctrl-Shift-J.
Microsoft Edge Press F12.
Internet Explorer Press F12.
Mac Firefox Press Command-Option-K.
Chrome Press Command-Option-J.
Safari
  1. Go to Preferences > Advanced > Develop.
  2. Press Command-Option-C.

Development builds

For debugging purposes, you might want to make a development buildA development build includes debug symbols and enables the Profiler. More info
See in Glossary
in Unity. To make a development build:

  1. Open the Build Settings window

  2. Enable Development Build.

Development builds allow you to connect the profilerA window that helps you to optimize your game. It shows how much time is spent in the various areas of your game. For example, it can report the percentage of time spent rendering, animating, or in your game logic. More info
See in Glossary
. Unity doesn’t minify the code, so the emitted JavaScript code still contains human-readable, C++-mangled, function names.

The browser uses these to display stack traces if you run into a browser error, when using Debug.LogError, or when an exception occurs and exception support is disabled. Unlike the managed stack traces that occur when you have full exception support, these stack traces have mangled names, and contain managed code and the internal Unity Engine code.

Exception support

WebGL has different levels of exception support, but by default, Unity WebGL only supports explicitly thrown exceptions. For more information, refer to Build your WebGL application. You can enable Full exception support, which emits additional checks in the IL2CPP-generated code, to catch access to null references and out-of-bounds array elements in your managed code. These additional checks significantly impact performance and increase code size and load times, so you must only use it for debugging.

Full exception support also emits function names to generate stack traces for your managed code. For this reason, stack traces appear in the console for uncaught exceptions and for Debug.Log statements. Use System.Environment.Stacktrace to get a stack trace string.

Troubleshooting

Problem: The build runs out of memory

This is a common problem, especially on 32-bit browsers. For more information on WebGL memory issues and how to fix them, refer to the documentation on Memory in Unity WebGL.

Error message: Incorrect header check

The browser console log usually prints this error due to incorrect server configuration. For more information on how to deploy a release build, refer to documentation on Deploying compressed builds.

Error message: Decompressing this format (1) isn’t supported on this platform

The browser console log prints this error when the content tries to load an AssetBundle compressed using LZMA, which Unity WebGL doesn’t support. Re-compress the AssetBundle using LZ4 compressionA method of storing data that reduces the amount of storage space it requires. See Texture Compression, Animation Compression, Audio Compression, Build Compression.
See in Glossary
to solve this problem. For more information on compression for WebGL, refer to documentation on WebGL building, particularly the AssetBundles section.

Additional resources:

WebGL performance considerations
Building and distributing a WebGL project