Frequently asked questions

Can I use the generated pages commercially?

Yes. The project is MIT-licensed, and the code it generates is yours: use it in client work, commercial sites, products, anywhere. No attribution is required — a link back is appreciated, never demanded. The one thing the licence does not cover is the image you feed in; the rights to that are whatever they were before you forged it.

Does my image get uploaded anywhere?

No. The generator runs entirely in your browser: the image is read locally, the code is generated locally, and the result is handed back to you. Nothing you drop on the page leaves your machine. The command-line interface is the same generator running in Node on your own computer.

Does CubeScroll use analytics?

The cubescroll.com site uses Vercel Web Analytics to measure page visits and a small set of product actions without cookies. It never receives your image or text you enter. The standalone Studio and every generated effect or page carry no analytics.

What browsers do the generated pages support?

Any browser with WebGL, which is effectively every current desktop and mobile browser. Where WebGL is unavailable or blocked the page does not break: the photograph mounts as a plain still, framed as the finished mosaic would have been, and content paced against the assembly lays out over it. The fallback is a designed state, not an error page.

What does a generated page load from the network?

One thing: three.js, pinned at r160, from the jsDelivr CDN with unpkg as a fallback. No analytics, no fonts, no tracking, no other requests — and when you generate from a local file, the image itself is embedded in the page.

Does it work offline?

The generator does: it is a single self-contained file that works from a file:// URL — open it, no server, no install. Generated pages need the one three.js request at load time; after that they run without a network. To be fully offline, serve a local copy of three.js and point the module's import at it.

Will it run on phones?

Yes, within a budget the tool makes explicit. Each cube costs 12 bytes (24 with flat faces, which carry their colour per cube) and the whole grid draws in a single call, so the usual instancing overheads are gone; what remains is fill rate. The sizing report tiers every grid: up to 60,000 instances is comfortable on modest phones, 60,000–200,000 is desktop territory, and beyond that is for hardware you control. Stay in your tier and the effect is smooth.

Is the effect accessible?

Scroll-coupled whole-field motion is the canonical trigger for vestibular discomfort, and the tool treats that as a design input. Under prefers-reduced-motion the camera does not travel — the image is simply there, assembled. Themed pages honour prefers-contrast and forced-colors, hold body copy to WCAG AA contrast by construction (and say so plainly when a forced mid-tone background makes that impossible), and refuse to compose at all if an image is supplied without alt text.

Can I change the generated code?

Freely — it is plain, dependency-light JavaScript and it is yours. Two cautions from the people who generated it: the cube-scaling maths is a single cancelling identity, so edit it knowingly or the seamless landing stops being seamless; and on themed pages the colours are contrast-verified as a set, so steer them with the palette flags rather than hand-editing hex values.

Do I need to install anything?

Not to generate. The browser tool needs nothing at all, and the command-line interface needs only Node 18 or newer, with zero runtime dependencies. Two optional extras unlock more: sharp for smaller embedded images, and Playwright for headless verification screenshots.

Where do I start?

Open the generator and drop in an image — it is the fastest way to understand everything above. When you want the effect inside a real project, the guides take over, and the documentation holds the full reference.