Why HTML5 loading time with Godot is so long?

Godot Version 4.0+ (haven’t tested below)

Question

Hello,
I’m currently working on a project (3D) that I plan to publish on several platforms, including HTML5 game portals such as Poki and CrazyGames, to benefit from their organic player acquisition.

However, I’m running into a major issue: the loading time, especially on mobile devices, is so long that I think it would immediately disqualify the game from being accepted. My project is a very small 3D game with very few assets, 10Mb zipped file, yet it takes around 30–40 seconds to load on my phone, which is 3-6x longer than games from other engines (based on a lot of tests).

I also tried using custom export templates, which reduced the loading time to about 15 seconds. While this is an improvement, it’s still roughly twice as long as most HTML5 games, despite the project being extremely small.

The game uses a GDExtension, but based on my testing it only seems to add around 2–3 seconds to the startup time on my phone, so I don’t think that’s the main bottleneck.

Does anyone have suggestions for improving the loading time? More generally, why is Godot’s web startup so slow compared to other engines?

I’m also experiencing another issue that frequently occurs on web mobile. Some of my meshes particularly my player character, randomly fail to render. The character is a very simple low poly model with only about 500 vertices, yet roughly half the time the body is completely invisible, leaving only the hair visible as if it were floating on a transparent body. I haven’t been able to identify what causes this behavior.

Has anyone encountered either of these issues or found reliable solutions?

Thank you for your help or any informations.

The default export template packages all the files for the game in a single .pck file. The default html page will load that .pck when starting the game.

See also Multiple .pcks within web export

I don’t think splitting pack files is an easy solution, and would only help if you can adequately split your game’s content- i.e. if you need all of your assets to start the game you would gain nothing by splitting pack files, at best you’d split huge levels with no shared textures or geometry.

It’s not easy because you’d have to write an HTTP downloader for this to work on the web, and expose that download somehow, I’m unsure if CrazyGames, Poki, and friends will support arbitrary file storage. The linked thread is using res:// paths for their split pack files, so they would end up being downloaded initially anyways as part of the initial pack, a pack within a pack is useless.


Compiling your own custom template for your game is going to be your best option, reduce the template size. Godot is sadly pretty heavy on the web. Here’s a thread going in-depth on some space saving options when compiling templates.