How I Hosted a Unity WebGL Game on WordPress.com — I uploaded all the files Unity exported, keeping them in their original folders. Then I set up the WordPress page to load the game from those files. That’s how I got Gem Forge Idle and Swarmloom Idle running on my site. Each release gets its own folder, but the page players use stays at the same address.
How I Hosted a Unity WebGL Game on WordPress.com
I wanted players to click Play from my Games page and arrive at an ordinary site page with a working game, not a file listing. The page presents the canvas, the loading state and the fullscreen button. The runtime lives in its own versioned location, with the loader, the generated files it expects, and the JavaScript that connects the game to the site. This separation lets me swap a release without rebuilding the surrounding page or moving the URL players have bookmarked.

Start with a Unity Web export that works under HTTP on your development machine. Opening index.html from the filesystem isn’t the same test. Use the loader configuration, or the build’s file list if you have one, to identify the files for that release. Keep their relative paths and letter case intact. When copying the build, include the framework, the WebAssembly file, the data and any supporting assets it references. If the runtime lives on another origin, check browser cross-origin requirements too. I used the same domain for the page and runtime so the first integration had one fewer moving part.
What I did when the package was too big
On my site, the Gem Forge package was too large for the upload route I was using. I treated that as a delivery problem, not a reason to lower texture quality or remove game files. I separated the runtime and large asset payload into installable packages. The site-side installer reassembled the original data and verified the release files before switching the player over. That was specific to my setup; it is not a universal WordPress upload limit, and a host with an approved file deployment route may not need the same workaround.
A failed upload is not always a failed build. Look at which step failed: uploading the archive, extracting it, requesting a runtime file, or initializing the game. A browser network entry that returns an HTML error page for a data or WebAssembly file is not evidence of broken Unity code. Check the status, response type and path first. If the browser is supposed to decompress the build, don’t configure the host to decompress the same response a second time. If your host serves compressed files natively, check Unity’s settings and the actual response headers together. For the server-side details, start with Unity’s Web deployment guide.
My release and rollback checklist
I give each build a new directory name. Then I check that the loader, framework, data and site-side integration scripts all come from that release. Serving a new loader with cached files from a previous release can produce a failure that is hard to reproduce on a clean machine. A versioned path makes it much easier to see what the browser actually fetched.


Before calling it done, I open the public page, start a Guest session and make an input that visibly changes the game. I check the loading screen, fullscreen and returning to the normal layout. For releases that touch accounts, I check that the existing sign-in and save paths still work before retiring a previous build. Keeping rollback files is useful only if the old page wrapper and its dependencies also still work. Don’t remove the thing you’re relying on to get back.
For a working example in portrait, open Gem Forge Idle and try the player directly from its WordPress page.
If you are doing this for the first time, get a small build to load before experimenting with sign-in, ratings or sharing. That gives you a known-good path to compare against.
Once that basic test works, check how the player fits different game layouts. A portrait game needs enough height to show its controls; a landscape game needs enough width without stretching the picture. Check that you can still use the controls after resizing.
For the landscape example, open Swarmloom Idle. The page and canvas have a different shape, but the same approach keeps the game files separate from the public page.

Leave a Reply