Bloom gives two language models the same creative-coding prompt, runs their p5.js sketches side by side, and measures what the rendered images do. Its ocean-current demonstration reports differences in pixel motion and visual descriptors, but it does not establish that one model is generally better. The project is best understood as an instrument for making a specific comparison more observable—not as an objective judge of art.
What Bloom compares
Bloom asks two models to turn the same sentence into an animated p5.js sketch. Its example prompt requests an animated artwork about an ocean current and asks for code only. The sketches run in separate sandboxed browser iframes, where viewers can compare the results at the same time.
As an Amazon Associate I earn from qualifying purchases.
The comparison can include whether each response parses and runs, whether the rendered pixels actually change, descriptive measurements of the images, and provider-reported usage data when available. Those observations are useful only in context: model versions, settings, provider, prompt, and run conditions all affect what a comparison means.
Free tools Windows power users keep installed
One-click scans. No signup required.
Harish Kotra’s account of Bloom describes a project demonstration, not an independently reproduced benchmark. Its results should not be read as a ranking of language models or as proof that a model will behave similarly on other prompts.
#1 Best Overall
How a prompt becomes two running sketches
Model requests stay on the backend
The backend makes the model calls. Kotra says this lets the project work with local providers such as Ollama and LM Studio without relying on browser CORS configuration, while keeping API keys out of the browser bundle. The frontend sends generated sketch code to a reusable iframe using postMessage. According to the account, p5.js is bundled locally rather than fetched from a CDN.
Provider capabilities are handled conditionally
The implementation shows reasoning-token data only when a provider returns it. It sends a thinking-related parameter only for a specified provider-and-model case, reads model lists live without making that step a prerequisite, and retries selected budget errors. Kotra also describes adding a fresh random nonce to each prompt and recording a hash of the prompt plus nonce to reduce accidental cache reuse. These are implementation choices reported for this project, not guarantees that different providers expose identical capabilities or usage fields.
How Bloom measures motion
A sketch can call an animation loop while drawing the same image repeatedly. To distinguish that from visible change, Bloom samples canvas pixels and sends the samples to the parent page at intervals. In the reported implementation, it samples a 48 × 48 RGB grid every fifth frame.
The motion reading averages the absolute differences between consecutive sampled pixel arrays. A reading of zero means the sampled pixels did not change between those samples; a nonzero reading indicates a measured change. This is a pixel-based description of rendered motion, not a measure of whether the movement looks natural, meaningful, or attractive.
Kotra reports motion readings of 1.05 and 0.82/255 for two local models in one run. These are readings from that particular demonstration, not general performance statistics. They do not establish a winner: the values describe sampled pixel change, and the account does not provide a broad, controlled benchmark across prompts and repeated runs.
What the visual descriptors tell you
Bloom reports four descriptive measures rather than combining them into a single aesthetic score:
Rank #4
- Distinct colors: a count of colors after quantization. It describes palette variety at the chosen quantization level, not color harmony.
- Mean luminance: average brightness calculated using Rec.709 luminance. It does not indicate whether an image is well lit or visually effective.
- Edge density: a measure based on changes between neighboring luminance values. It can describe how much boundary-like detail appears, but does not identify meaningful objects or detail.
- Left-right symmetry: a correlation-based comparison of the two sides of the composition. Symmetry is a structural property, not a quality score.
These measures can help explain how two rendered images differ, but none captures the full human experience of an artwork. Kotra leaves aesthetic judgment to viewers rather than presenting a composite number as an objective verdict.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →What the reported checks establish—and what they do not
Kotra says the project’s server self-test covered 39 checks. He also reports browser-level verification with two local LM Studio models, during which both canvases ran at about 60 fps and the project exercised sandbox probes, pause, reseed, and poster rendering. Those figures and checks describe the author’s reported run; they are not an external test suite or independently reviewed results.
Best Value
The project’s safety design combines a pre-execution scan, runtime capability disabling, and an iframe sandbox. Before execution, Acorn’s AST traversal is used to flag operations such as network calls, module loading, workers, storage access, parent-window access, and imports; code that violates the scan is refused. The iframe uses sandbox="allow-scripts", and its bootstrap disables several network and storage interfaces before generated code runs. Kotra says headless-browser probes confirmed selected restrictions.
These layers show how the author approached risk; they do not prove that arbitrary generated JavaScript is secure or that every hostile technique is blocked. A scanner may miss behavior, and browser isolation should not be treated as a substitute for a security assessment. The reported probes support only the specific restrictions tested.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How to make a fair comparison with an instrument like Bloom
For a useful side-by-side result, hold the important conditions steady and report what was actually observed:
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitches- Use the same prompt. Keep wording identical for both model slots, including the request for code-only output and the animation requirement.
- Record the run conditions. Note model names and versions, provider, relevant settings, and whether each result came from the same run setup. A fresh nonce can reduce accidental cache reuse, but does not by itself create a full controlled benchmark.
- Check execution before interpretation. Record whether each response parses and runs, rather than treating generated code as a successful sketch automatically.
- Separate motion from appearance. Use sampled pixel changes to describe whether the image changes, and report the visual descriptors individually. Do not treat either set of measurements as an aesthetic verdict.
- Report usage only when available. Provider-reported token or reasoning data may differ by provider and response. Missing data is not evidence that a model used none.
- Describe safety probes narrowly. State which restrictions were exercised and what happened; do not generalize a handful of probes into a claim that all generated code is safe.
What Bloom could add next
Kotra proposes bracket mode for comparing more than two models, a judge slot, replay files containing the prompt, nonce, seeds, code, and metrics, and time-lapse export. These are proposed additions, not capabilities confirmed in the described project.
The project and its reported demonstration are described by Harish Kotra in “Bloom: I Made Two LLMs Paint the Same Sentence and Measured What Happened”, published September 29, 2026.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




