Poki, the Amsterdam-based browser gaming platform, gives developers a set of tools for building, testing and measuring HTML5 games. The case for learning them is getting stronger. In the 2026 State of Web Gaming Report, a study commissioned by Poki and fielded by Atomik Research between 11 and 19 May 2026, 53% of the 400 US and UK developers surveyed said they plan to port a mobile game to the browser within 12 months.
The same survey found that 74% of developers consider publishing to a browser platform quite or very easy, yet 53% cited technical challenges as a concern. That gap is where tooling matters. The sections below cover how the Poki SDK, the Poki Inspector, playtesting and Game Events fit together, in the order a build usually meets them.
The Poki developer toolchain at a glance
Poki groups its developer tools under Poki for Developers (P4D). Each tool belongs to a different stage of a game's life, from the first prototype to tuning after launch.
| Tool | What it does |
|---|---|
| Poki SDK | A JavaScript software development kit (SDK) integrated into HTML5 games. It exposes loading, gameplay and ad calls, plus a measure() function for custom events |
| Poki Inspector | Lets developers upload a game and test it before submission |
| Playtesting (stage 1) | Qualitative: 10 recordings of real players per playtest |
| Player Fit Test (stage 2) | Playtime: about 500 players, measured on average playtime only |
| Web Fit Test (stage 3) | Category performance: around 10,000 players, scored on click-through, time on page and conversion to play |
| Game Events | Custom events sent through the Poki SDK, analyzed one by one or combined into funnels of player journeys |
How the Poki SDK fits into a build
The Poki SDK is a JavaScript library added to the game's HTML. Poki's documentation names it, together with a short list of technical requirements, as one of two mandatory steps once a game has been accepted through Poki for Developers. Integration starts with a script tag in the page head and a call to PokiSDK.init() when the game starts. The game should keep loading even if initialization reports a problem.
Five calls do most of the work after that:
- gameLoadingFinished() is fired when loading ends, so Poki can report an accurate conversion-to-play figure for the game.
- gameplayStart() marks moments when players are actually playing, such as a level starting or an unpause.
- gameplayStop() marks the opposite, such as a game over, a pause or a quit to the menu.
- commercialBreak() displays video ads on natural breaks. Poki recommends calling it before every gameplayStart(), meaning whenever the player has shown intent to continue. A call does not always produce an ad, because Poki's system decides when a player is ready for another one, so a game can signal as many opportunities as it likes.
- rewardedBreak() lets a player choose to watch a video ad in exchange for an in-game benefit. The game should say beforehand that an ad is coming and grant the reward only when the returned success value is true. An optional size parameter accepts small, medium or large, and a rewarded break resets the ad timer.
Two further details in the same documentation are easy to miss. Audio and keyboard input should be disabled while a commercial break plays, and games running inside a Poki page need to block the default scroll on space and the arrow keys so the page does not jump.
The delivery model will be familiar to anyone who has read about how single page applications ship as static files hosted on a CDN. Poki serves games the same way, as static assets with no server-side code running for each player.
Requirements a build has to meet
The SDK sits on top of a short set of rules that apply to every HTML5 game released on Poki:
- Mobile and tablet support, with a 16:9 widescreen aspect ratio that scales to 640x360, 836x470 or 1031x580.
- No external requests by default. Poki blocks calls to services such as Google Fonts, externally hosted assets and libraries on external CDNs, so these have to be removed or bundled. Multiplayer games on externally hosted servers and approved third-party analytics are the two exceptions, and both need an up-to-date privacy statement.
- No splash screens, outgoing links or other advertising, because the SDK already brings ads.
- No ad block messaging. The game must stay playable when a player runs an ad blocker.
- localStorage operations wrapped in a try/catch block, so the game works in Incognito mode.
- A load size of about 5 MB typically, with 8 MB as the recommended maximum, and no Google, Facebook or email login systems.
Testing a build in the Poki Inspector
Once the SDK is in place, the Poki Inspector is the next stop. Developers upload a folder containing an index.html, and the Inspector simulates how the game behaves on the live platform before submission. When the implementation looks right, the developer sends a review request and the Poki team plays the game.
Poki's testing advice goes beyond the Inspector. It recommends trying a build on real devices and browsers, since a fast load on a local machine says little about how the game behaves on slower connections.
Developers request access to Poki for Developers through a form on the developer site. Poki's team checks how technically sound each game is and how well it is optimized for mobile and desktop web.
Developers who publish games at Poki join a catalogue that the homepage puts at 1500 free games, with more than 100 million players joining each month. Revenue depends on where a player comes from. The developer keeps 100% when the player arrives directly, through bookmarks, search, social media or the developer's own community, and the split is 50/50 when the player comes through Poki.com or a Poki marketing effort. In return Poki asks for web exclusivity, while Steam and mobile app stores stay open to the developer.
Three stages of testing before launch
Poki's testing guide lays out five steps: add the game, playtesting, the Player Fit Test, the Web Fit Test and a final review by the Poki team. The middle three are the testing stages, each one unlocks the next, and every test is free and repeatable.
Stage 1, playtesting. Each playtest returns 10 recordings of real Poki players. Developers can run as many as they like, at any stage of development, including a day-one prototype, and results typically arrive within hours. Watching the recordings unlocks the next stage.
Stage 2, Player Fit Test. About 500 players reach the game through a Mystery Tile on Poki, and the test measures playtime only, without recordings. Developers can run up to two a day. To move on, the game needs an average playtime above 3 minutes, with at least 25% of the 500 plays lasting longer than 3 minutes.
Stage 3, Web Fit Test. The game appears on a small set of category pages as if it were fully released and is shown to around 10,000 players. Three metrics are tracked, click-through rate, average time on page and conversion to play, and each is scored from 0 to 5 against the averages of the categories tested. The test takes several days.
The Poki team then does a final review of quality, originality and category fit. Before requesting it, Poki's guide suggests aiming for 65% or more conversion to play and 5 or more minutes of average playtime.
What changed: the section now covers three stages, including the Web Fit Test. The 500-player test is the Player Fit Test, not a second playtesting stage.
Measuring players with Game Events and funnels
Game Events is the analytics tool inside P4D. Events are sent through the Poki SDK's measure() function and work like checkpoints placed at meaningful moments. Each call takes three values: a category such as level or button, a second value that names the specific thing being measured, and an action that describes what happened.
PokiSDK.measure('level', '1', 'start');
PokiSDK.measure('level', '1', 'complete');
PokiSDK.measure('button', 'reward-revive', 'visible');
PokiSDK.measure('button', 'reward-revive', 'interact');
PokiSDK.measure('difficulty', 'hard', 'selected');
Some action values carry special meaning. The values start, complete and fail build progress reports for levels, quests and tutorial steps, and each pair shares the same category and name. The values visible and interact compare what players see with what they use. Any other action becomes a custom event, reported as the share of gameplays that reached it. Commercial and rewarded ad playback is tracked automatically through the existing SDK calls, so no extra measure() calls are needed for ads.
Events can be analyzed one by one or combined into custom funnels that follow a journey such as onboarding or level progression. Poki does not prescribe the steps. Developers choose the events and can save a funnel to compare it across game versions. Events also work during development and testing, before a game goes live.
What the data showed in two released games
Poki's blog on Game Events gives two worked examples. Jim Hall of HappyLander, developing Smash Room, randomized the first object players met and measured how many were still playing after three minutes.
| Opening object | Players still playing at three minutes |
|---|---|
| Glass | 33.7% |
| Cake | 27.4% |
| Phone | 23.8% |
The phone was the developer's instinct for the opener, and it finished last. In Satisbox Mini Games, progression events showed that levels 1 and 2 were losing more than 15% of players. The developer, Erçin, moved the stronger mini-games earlier in the order. Average session time rose from 4:50 to 5:43, and a second reordering took it to 6:23.
FAQ
Which game engines does the Poki SDK work with?
Poki says it works with all game engines and tech, from Defold and PlayCanvas to Pixi and Three.js, and that optimized Unity games work too. Unity WebGL builds have a dedicated template and C# class in the SDK.
Can a game use third-party analytics?
Poki blocks external requests by default. Third-party providers such as GameAnalytics, or an in-house solution, are reviewed case by case, and an approved provider needs a current privacy statement. Game Events sends its events through the Poki SDK itself.
What does a game need to pass the Player Fit Test?
Poki's testing guide asks for an average playtime above 3 minutes, with at least 25% of the 500 plays lasting longer than 3 minutes.
How often can ads appear?
Poki's system decides when a player is ready for another ad, so a commercialBreak() call does not always show one. A rewarded break resets the ad timer. Poki has also described a minimum of two minutes between forced interstitials.
Where to begin
The order of work follows Poki's own materials. The SDK calls and requirements come first, the Inspector confirms the build, and the three testing stages and Game Events show what players do with it. Poki's blog advises starting each analytics effort with one specific question, such as where players are leaving, instead of adding events for every player action.

Comments
Loading comments…