A layered image editor for Angular that runs entirely in the browser — no image backend, no uploads to a server, no telemetry.
Live demo — the fastest way to decide if this is what you need.
npm install @ebdev/ngx-image-editor
# Optional — required only for premium PDF import
npm install pdfjs-distStyles ship with the component — nothing to add to angular.json or your global
stylesheet. If you use the panel components on their own, without
<ngx-image-editor>, import the stylesheet yourself:
@import '@ebdev/ngx-image-editor/styles.css';import { provideImageEditor } from '@ebdev/ngx-image-editor';
export const appConfig = {
providers: [
provideImageEditor({
// optional — the free tier works without a key
theme: 'dark',
}),
],
};import { Component } from '@angular/core';
import { ImageEditorComponent } from '@ebdev/ngx-image-editor';
@Component({
imports: [ImageEditorComponent],
template: `
<ngx-image-editor theme="dark" style="height: 640px" (exported)="onExported($event)" />
`,
})
export class EditorPage {
onExported(result: unknown) {
console.log(result);
}
}Most image-editing features in web apps end up as a server round-trip: upload, process, download. That costs infrastructure, latency, and a privacy conversation you did not want to have. This editor keeps the entire pipeline — layers, filters, transforms, export — on the client, in a single Angular component. The trade-off is honest: very large images are bounded by browser memory, and there is no server-side render fallback.
| Feature | Free | Premium |
|---|---|---|
| Canvas, upload, drag & drop | ✓ | ✓ |
| Image / text / shape layers | ✓ | ✓ |
| Move, resize, rotate, crop | ✓ | ✓ |
| Zoom / pan, undo / redo | ✓ | ✓ |
| Layers panel, opacity | ✓ | ✓ |
| Basic filters | ✓ | ✓ |
| Guides, grid, alignment | ✓ | ✓ |
| PNG / JPEG / WebP / AVIF / GIF / TIFF export | ✓ | ✓ |
| Brush | ✓ | ✓ |
| Eraser | ✓ | |
| Masks, groups, blend modes | ✓ | |
| Advanced selections | ✓ | |
| Clone / healing | ✓ | |
| Perspective / warp | ✓ | |
| Layer styles, adjustment layers | ✓ | |
| Extended filters, SVG export | ✓ | |
| PDF import (pages as images) | ✓ | |
| PSD / RAW / color management | ✓ (phase 3) |
The free tier is a complete layered editor with raster export in six formats. Premium adds the retouching toolset. Licensing is offline — an Ed25519-signed key verified in the browser, domain-bound, with no license server and no telemetry. If our infrastructure disappears tomorrow, your editor keeps working.
Angular 17.3–22 (@angular/common, @angular/core, @angular/forms). Every major in
that range is built against in CI — see npm run test:compat.
pdfjs-dist (^4 or ^5) is an optional peer, needed only for PDF import.
- Live demo
- Package README — full API, keyboard shortcuts, theming
- npm
- License
This repository is the Angular workspace for the package.
| Project | Path | Description |
|---|---|---|
ngx-image-editor |
projects/ngx-image-editor |
Publishable library |
demo |
projects/demo |
Demo app behind the live demo |
npm start # serve the demo
npm run build # build the library
npm run build:demo # build the demo app
npm test # unit tests (Vitest)
npm run e2e # Playwright end-to-end
npm run pack:lib # build + npm packLicense tooling lives under tools/; private keys are never published.
See LICENSE. Free Features may be used forever, including in commercial applications. Premium Features require a purchased license key.