Drop a full-featured image editor into any app — it's framework-agnostic, so reach for it with vanilla JS, React, or as a Web Component. Crop, adjust, filter, and annotate with text & shapes, on an extensible, themeable block engine.
Search curated presets, insert editable compositions, or supply your own brand catalog.
Create with rich styles, curved lettering, highlights, and editable layered compositions.
Aspect ratio presets, free crop, rotate, flip, and social media resize presets.
Brightness, contrast, saturation, exposure, temperature, and more.
40+ filter presets with adjustable intensity, WebGL-accelerated.
Rich styles, curved text, gradients, highlights, and editable layered compositions.
Filled, outlined, gradient, image-filled, and abstract graphics with custom catalogs.
Add image annotations on top of your canvas.
Full command-based history with keyboard shortcuts.
Dark, light, and fully custom color themes with CSS variables.
No per-seat fees, no vendor lock-in. Fork it, ship it, own it.
A thin UI over a headless, framework-agnostic block engine. Build your own UI or extend ours.
Register custom tools, render slots, and event hooks — no forking required.
Every edit is a command: fully undoable, replayable, and serializable.
Add an image editor to any app with a few lines of code.
Add <ImageEditor> to your component, pass a src and an onSave callback.
import { ImageEditor } from "@editx/image-editor";
function App() {
return (
<ImageEditor
src="/your-image.jpg"
config={{
tools: ["crop", "adjust", "filter", "text", "shapes"],
theme: { preset: "light" },
}}
onSave={(blob) => {
const url = URL.createObjectURL(blob);
console.log("Saved:", url);
}}
/>
);
}Add a powerful image editor to any app in under 5 minutes.