Desktop Electron app for converting between image sequences and videos, upscaling images or videos, and optionally removing backgrounds before export. Packaged builds include the bundled AI runtimes needed by the current backends.
- Convert a single image sequence into video
- Extract a single video into an image sequence
- Upscale a single image set directly
- Upscale a single video directly
- Batch-extract many videos into image sequences
- Batch-encode many sequence folders into videos
- Batch-upscale many image files
- Batch-upscale many videos
- Resize before export
- Upscale with native, JS, or Python-backed upscalers
- Remove backgrounds with bundled
rembg - Preserve alpha when the selected format and pipeline support it
Image UpscaleVideo UpscaleSequence to VideoVideo to Sequence
Batch Image UpscaleBatch Video UpscaleBatch Videos to SequencesBatch Sequences to Videos
MP4 (H.264)MP4 (H.265 / HEVC)MOV (H.264)MOV (H.265 / HEVC)MKV (H.264)MKV (H.265 / HEVC)ProRes 422ProRes 4444WebM (VP9)APNGGIF
PNGJPGWEBPBMPTIFFTGA
- common video files handled by FFmpeg
GIFAPNG
Background removal is available as a parameter in the transform workflows. It runs before upscale/export on source images or prepared frames.
Currently exposed models:
BiRefNet GeneralBiRefNet General LiteBiRefNet PortraitU2NetU2NetPU2Net HumanISNet General UseISNet Anime
- Bundled
rembgCLI is included in packaged builds. - Build profiles:
CPUships therembgCPU CLIDirectMLships therembgCPU CLICUDA LiteandCUDA Fullship therembgGPU CLI for supported NVIDIA systems
- Some large
rembgmodel weights, especiallyBiRefNetvariants, are not bundled and may download on first use.
AMD and Intel systems currently use CPU for rembg.
Single and batch workflows support:
Nearest neighborxBR.jspixel-scale-epxReal-ESRGANReal-CUGANWaifu2xRealSRSwinIRDATAnime4KCPP
- Native bundled backends:
Real-ESRGANReal-CUGANWaifu2xRealSRAnime4KCPP
- JS pixel-art backends:
xBR.jspixel-scale-epx
- Python-backed backends:
SwinIRDAT
Most packaged builds do not require a separate Python install for SwinIR or DAT. The cuda-lite build keeps their model assets but expects an external Python 3.11 environment with the required packages.
- The single upscale workflows support:
Auto-detectForce straight alphaForce premultiplied alpha
- Transparent inputs use split color/alpha processing.
- Alpha is scaled separately and merged back after the color upscale.
- Electron
- React
- Vite
- Tailwind CSS
- FFmpeg / FFprobe
- TypeScript
- Node.js
- npm
FFmpeg and FFprobe are bundled through ffmpeg-static and ffprobe-static.
The app also downloads native upscaler assets, rembg, and the optional Python runtimes used by SwinIR and DAT through postinstall.
CPU, DirectML, and CUDA Full installers do not require users to install Python, torch, or rembg separately.
CUDA Lite still includes DAT and SwinIR model assets, but expects the user to install Python 3.11 plus:
torchtimmnumpyopencv-pythoneinopsforDAT
The app can still fall back to an external Python environment in development, but that is no longer required for normal packaged use.
npm installalso downloads bundled upscaler assets throughpostinstallnpm run devstarts the Electron app in development modenpm run buildtype-checks and builds main, preload, and renderernpm run previewstarts the production preview flownpm run distbuilds and packages the defaultCPUprofilenpm run dist:cpubuilds theCPUprofilenpm run dist:cudaaliases tonpm run dist:cuda-fullnpm run dist:cuda-litebuilds theCUDA Liteprofilenpm run dist:cuda-fullbuilds theCUDA Fullprofilenpm run dist:directmlbuilds theDirectMLprofilenpm run dist:allbuilds all four installer profilesnpm run lintruns ESLintnpm run lint:fixruns ESLint with auto-fixesnpm run formatruns Prettiernpm run format:checkchecks formattingnpm run testruns Vitest oncenpm run test:watchruns Vitest in watch modenpm run setup:realesrganinstalls bundled Real-ESRGAN assetsnpm run setup:realcuganinstalls bundled Real-CUGAN assetsnpm run setup:waifu2xinstalls bundled Waifu2x assetsnpm run setup:realsrinstalls bundled RealSR assetsnpm run setup:python311installs the bundled CUDA Python 3.11 runtimenpm run setup:python311-cpuinstalls the bundled CPU Python 3.11 runtimenpm run setup:python311-directmlinstalls the bundled DirectML Python 3.11 runtimenpm run setup:swinirdownloads SwinIR architecture and weightsnpm run setup:datdownloads DAT architecture and weightsnpm run setup:anime4kcppinstalls bundled Anime4KCPP assetsnpm run setup:rembginstalls bundledrembgCLI assets
CPU- output:
release/cpu - bundles
python311-cpuandrembgCPU
- output:
CUDA Lite- output:
release/cuda-lite - bundles
rembgGPU plusDAT/SwinIRmodel assets - expects external Python 3.11 with:
torchtimmnumpyopencv-pythoneinopsforDAT
- output:
CUDA Full- output:
release/cuda-full - bundles
python311andrembgGPU
- output:
DirectML- output:
release/directml - bundles
python311-directmlandrembgCPU
- output:
Anime4KCPPis currently only bundled on Windows.SwinIRandDATare fully bundled inCPU,DirectML, andCUDA Full.CUDA Literelies on an external Python 3.11 environment for them.xBR.jsandpixel-scale-epxare pixel-art-focused upscalers. They are not intended for painted, antialiased, or photo-like images.rembgGPU acceleration currently targets supported NVIDIA systems. Other systems fall back to CPU.- Large
rembgweights such asBiRefNetvariants are exposed in the UI, but not all of them are prebundled into the installer because of size.
Ctrl+Vpaste for clipboard images is supported in:Sequence to VideoImage UpscaleBatch Image Upscale
- Running jobs can be cancelled from the right-side action button while work is in progress.
src/
main/
app/ Electron window bootstrap
ipc/ Main-process IPC handlers
media/ FFmpeg/FFprobe/media services
preload/ Renderer bridge API
renderer/
src/
components/ Shared renderer UI
features/ Workflow-specific UI and view models
hooks/ Renderer side effects
lib/ Renderer utilities
shared/ Shared domain and IPC types
mainowns filesystem, ffmpeg, ffprobe, dialogs, and IPC registration.main/jobs/owns workflow execution.preloadis the only bridge between renderer and main.rendererowns workflow state, UI composition, and client-side validation.sharedis the single source of truth for contracts and format metadata.vendor/stores downloaded native binaries, model files, and Python-backed architecture files used by optional upscalers.
- Start in
src/renderer/src/features/workflows/. - Keep shared controls in
src/renderer/src/components/. - Keep workflow-specific validation in
features/workflows/workflow-validation.ts.
- Update
src/shared/formats.ts. - Update main-process ffmpeg/output handling under
src/main/media/. - Add or update tests for the affected helpers.
- Update
src/shared/upscalers/registry.ts. - Add or update the backend under
src/main/media/. - Wire it into the relevant job or pipeline layer under
src/main/jobs/orsrc/main/media/pipelines/. - Add or update the installer under
scripts/if the backend needs bundled assets. - Update tests for shared registry, validation, and pipeline/job behavior.
Before opening a PR or handing work off:
- Run
npm run lint - Run
npm run test - Run
npm run build