Should I vibe code
Browser image editing, design templates, generative tools, and assets
Anyone can build the crop tool. Opening a .psd and handing it back unbroken is a decade of someone else's file format.
?
Their verdict, the Premium price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.
?
Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.
The honest answer
why the verdict is what it is
The reason people open Pixlr instead of installing something is almost never the filters. It is that a .psd someone emailed them opens in a tab, with the layers intact, and can be saved back out. That is the product, and it is not a coding problem you finish — it is a compatibility problem with someone else's undocumented format, where adjustment layers, clipping masks, smart objects and layer effects each have their own way of quietly not working. Underneath that sits the thing an agent will get wrong first: an editor is a document model, not a canvas. If undo is a stack of bitmaps rather than a list of operations over a layer tree, you will have a beautiful demo that eats a gigabyte of browser memory by step twelve and cannot re-render at export resolution. The generative tools are a separate trap with a simpler shape — Pixlr meters them as credits because inference costs money every time, and your version has no meter, so a public generate button is an uncapped invoice. Build the v0 for the pleasure of it. Do not expect to open other people's files.
What actually breaks
not "if". the specific failures.
- PSD import, feature by feature: layer groups mostly work, adjustment layers get flattened, smart objects come in as their last rendered state, and layer effects vanish without a warning
- Browser memory, at around step twelve of an undo stack that stored full-resolution bitmaps instead of operations
- The document model, if it was never designed — at which point non-destructive editing, export at a different size and reordering a filter are all off the table permanently
- Blend modes, which look right in eight of the twenty-seven cases and subtly wrong in the rest, because everyone implements them in the wrong colour space at least once
- Colour, quietly: strip the ICC profile on import and every export is a little off on somebody else's monitor
- The generative feature's bill, because a credit system exists for a reason and yours is a button anyone can hold down
- Fonts and templates, which are the reason half the users are there and are a licensing exercise rather than an engineering one
- The upload endpoint, if you host it — an untrusted file handed to an image decoder is still one of the most reliable routes to running someone else's code
- Tab lifecycle, the first time a browser reclaims memory mid-edit and there was no autosave
Is that you?
the verdict is a default, not a law
- The scope is your own images and a fixed set of operations, not an editor
- It runs locally or behind a login, and nobody can upload to it anonymously
- The document is serialised to a format you own and can read without your app
- Generative calls are capped per user and globally, with a hard stop rather than an alert
- The point of it is opening files other people made in Photoshop
- There is a public generate button and no spend ceiling
- Undo is a list of bitmaps, because that decision cannot be unmade later
- You are shipping templates and fonts you have not checked the licences for
If you build it anyway
the checklist, then the prompt that enforces it
- Design the document model first — layers, transforms, masks, blend modes, serialised to JSON you own. The canvas renders the document; it must never be the document.
- Make every edit an operation on that model so undo is a pointer and export can re-render at any resolution. This is the one decision you cannot retrofit.
- Work interactively on a downsampled proxy and apply the pipeline to the original only on export. Pick a pixel-count ceiling and enforce it before decode.
- Autosave the document to local storage on a timer and restore on load. A reclaimed tab is the most common way people lose work in a browser editor.
- If you import PSD, publish the list of what you do not support and make unsupported features fail loudly. A silently flattened adjustment layer is worse than a refusal.
- Preserve or explicitly convert ICC profiles through every step, and decide the EXIF policy in writing: honour orientation, strip GPS on anything shared.
- Put a hard spend ceiling on generative calls before you wire the first one up — per user and global, enforced server-side, failing closed.
- If it ever accepts uploads from strangers, decode in a sandboxed worker or container, cap bytes and pixels before decoding, sniff the real format rather than trusting the extension, and serve results from a different origin.
I want to rebuild a browser image editor with layers, templates and generative
tools. The expensive mistakes here are architectural rather than security ones.
Build in this order and push back when I skip ahead.
1. Design the document model before drawing a pixel: an ordered layer list with
type, transform, opacity, blend mode and mask, serialised to a format I own
and can read. The canvas renders the document; it is never the document.
2. Every edit is an operation on that model, so undo is a pointer move rather
than a stored bitmap. Tell me plainly if what you are proposing makes a
fifty-step history cost fifty full-resolution buffers.
3. Autosave the document to local storage on a timer and restore it on load.
4. Render interactively from a downsampled proxy and apply the pipeline to the
full-resolution original only on export. State the memory ceiling you
assumed and enforce it before any decode.
5. If I ask for PSD import, list up front what you will not support — adjustment
layers, smart objects, layer effects, clipping groups — and make each one
fail visibly instead of silently flattening.
6. Never modify the source file. Export writes to a new path; overwriting is an
explicit flag I have to type.
7. Preserve or explicitly convert ICC profiles at every step, honour the EXIF
orientation tag, and strip GPS from anything destined to be shared.
8. Before the first generative call, build the spend ceiling: per-user and
global caps enforced on the server, a hard stop rather than an alert, and a
clear refusal. Each generation is a bill whether the result is kept or not.
9. Generative endpoints require authentication from the first commit.
10. If I ask to host this for other people's uploads, decode in a sandboxed
worker or container, cap bytes and pixel count before decoding, sniff the
real format rather than the extension, and serve output from another origin.
11. Out of scope unless I ask: a template library, bundled fonts, cloud storage
of other people's images. Fonts and templates are a licensing question, not
a file-copying one.That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.
their build prompt ↗Or don’t build it
the boring option, and the way back out
If you need to open other people's files, or you need the templates. Ten dollars a month for Premium buys PSD compatibility that has been argued with for years, a font and template library somebody licensed, and a credit meter that turns a variable inference bill into a fixed line item. The subscription is poor value for 'resize four hundred product photos', which is a script, and excellent value for 'the client sent a layered file and needs it back by five'.
$9.99/mo is cheaper than your weekend.
There is barely anything to escape, provided one rule held: the document format is yours and it is readable. Keep the layer tree as JSON next to the exported image and you can re-render it with different code in five years. Everything else — the canvas, the UI, the model weights behind the generative buttons — is replaceable. The only lock-in you can create for yourself is baking edits into pixels and overwriting the original, which is also the default behaviour of every quick implementation.
Browser-based layered image editor in plain JavaScript, and the closest open equivalent of what Pixlr X does.
Embeddable in-browser editor if you want the canvas layer solved and only need the operations around it.
Fast, low-memory image processing for the server-side half, with the colour-profile handling already correct.
Questions
BeFunky is also DEMO ONLY. What's different here?
BeFunky's entry is about operations versus an editor, and about what happens when you put an image decoder behind a public upload form. Pixlr's problem is one layer down: it is a layered raster editor, so the thing you are really rebuilding is a document format and an undo model. Get those wrong and no amount of good filters saves the project — you will have an app that cannot export at a different resolution and cannot open the files people want to bring it.
Is PSD support really that bad?
Reading a basic PSD is a well-documented afternoon. Reading the ones people actually have is not: adjustment layers, smart objects, layer styles, clipping groups and text layers each carry state that has no equivalent in a simple layer model, and the failure mode is silent. Photopea has spent years on this as its main product. Treat partial support as the goal and be loud about the gaps.
Why does the generative feature change the risk?
Because it converts a fixed subscription into a variable bill that someone else can run up. Pixlr sells credits precisely because every generation costs real inference money. A self-built version with a public button and no server-side cap is an open-ended invoice, and the first person to notice will not be you.
Every week, someone ships something they shouldn’t have.
New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.
Your filters are the asset. Polarr Next switches off in October; keep the recipes as files you own.
The AI half is one API call. So is the abuse: a stranger's photo, your GPU bill, your takedown obligation.
Every operation is a library call. The product is that it runs in a browser tab on a 40MP file without dying.
last reviewed 2026-08-05 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice