FPL Test is a sleek, browser-based performance and stress testing tool designed to measure the rendering capability and stability of any device's browser by dynamically spawning and animating a growing number of objects (white balls) until the frame rate drops to a critically low level.
Created and Maintained by Sliz®.
Official website for testing your device: FPL
- Dynamic Stress Testing: Continuously spawns physics-simulated objects upon user input (click-and-hold/touch-and-hold).
- Real-time FPS Tracking: Displays current, maximum (Max), and minimum (Min) Frame Per Second metrics in a clean overlay.
- Automatic Test Termination: The test automatically concludes when the FPS drops to 1 FPS or lower for 5 consecutive seconds, indicating the device's maximum rendering load.
- Detailed Results Modal: Presents the final performance metrics, including the crucial Total Balls rendered and Average FPS.
- Device Comparison: Offers insights into similar-performing devices and a global Leaderboard based on successful
Total Ballscount. - Responsive Design: Optimized for both desktop (mouse input) and mobile (touch input) devices.
- Minimalist & Modern UI: Utilizes a gradient background, glassmorphism in UI panels, and subtle glow effects for the animated objects.
The FPL Test is a single-file application built entirely with HTML, CSS, and vanilla JavaScript.
| Technology | Purpose |
|---|---|
| HTML5 | Structure and UI element scaffolding. |
| CSS3 | Modern styling, gradients, glassmorphism effects, and responsiveness. |
| Vanilla JavaScript | Core logic, animation loop, physics simulation, and DOM manipulation. |
| Canvas API | High-performance rendering of the animated balls and their trails. |
BallClass: Defines each object with properties for position (x,y), velocity (vx,vy), radius, and atrailarray for visual effects.- Physics Simulation: In the
Ball.update()method, basic physics are applied:- Velocity is added to position:
this.x += this.vx; this.y += this.vy; - Boundary collision detection reverses and dampens velocity:
this.vx *= -0.95; - Friction/Damping is applied:
this.vx *= 0.99; this.vy *= 0.99;
- Velocity is added to position:
- Animation Loop: The
animate()function usesrequestAnimationFramefor optimal, browser-managed frame pacing.- It calculates the current FPS using
performance.now()(const currentFps = Math.round(1000 / delta);). - It updates the FPS statistics (
minFps,maxFps,fpsSum).
- It calculates the current FPS using
- Stress Trigger: The
startHolding()function is activated on mouse-down or touch-start. It usessetIntervalto continuously callspawnBalls(), increasing the batch size astotalSpawnedgrows to accelerate the stress test. - Termination Condition: The
animate()function monitors forfps <= 1for a duration of 5000 milliseconds (5 seconds). If this condition is met, theendTest()function is called, locking the currentballs.lengthas the final performance score.
This is a closed source project but it is useful for using and testing your device.
You can also try it out and check your device on the website:
- Initial State: The test starts with a clean canvas and the UI displaying default values (
-- FPS). - Start the Test:
- Desktop: Hold down the Left Mouse Button (LMB) on the blue/purple area.
- Mobile: Hold down your finger on the screen.
- (Hint: After 3 clicks without holding, a hint message will appear.)
- Observation: Watch the
FPS Displayand theWhite: [Ball Count]increase. TheMin FPSis a key indicator of rendering strain. - Test Completion: The test will automatically stop when the device can no longer maintain a reasonable frame rate (1 FPS for 5s). A modal with the Test Complete results will appear.
- Analyze & Compare: Review your results, especially the Total Balls score, and compare your device's performance against others in the Devices section.
To get the results, just wait. On your computer or phone, hold down the screen and don't let go until the statistics appear.
This project consists of a single file:
└── index.html
index.html: Contains all the HTML structure, CSS styling, and JavaScript logic for the FPL Test.
This project is licensed under a Custom Proprietary License by Sliz®.
This software is the proprietary and confidential property of Sliz® ("the Company"). No part of this project, including but not limited to the source code, design, and accompanying documentation, may be used, reproduced, distributed, or modified without the express written permission of the Company.
Copyright (c) 2025 Sliz®
For support, partnership inquiries, or licensing questions, please contact the creators:
Sliz® - Innovating at the intersection of performance and visual stress testing.