A privacy-first, 100% client-side image processing suite. Available as a Next.js Web Application and a Browser Extension. Save, convert, resize, split, splice, and audit images directly in your browser β without uploading anything to a server.
- Dual Platforms: Use Imify as a standalone web application or as a tightly integrated browser extension.
- 100% Client-Side Processing: Zero server dependencies. Complete data privacy using WebAssembly and Web Workers.
- Rich Format Support: Read and convert to
JPG,PNG(Tiny mode, Floyd-Steinberg dithering, and OxiPNG WASM optimization),WebP,AVIF,JXL(JPEG XL),TIFF,ICO,BMP, andPDF. - Advanced Processing Tools (Available in both the web application and the browser extension):
- Batch Processor: Drag-and-drop multiple files to convert them in bulk. Includes ZIP packaging.
- Image Splitter: Slice images via grid systems or custom percentage/pixel sequences with a reorderable guide UI.
- Image Splicing: Vertically or horizontally stitch multiple images together with gap controls.
- Pattern & Fill: Generate seamless patterns and use symmetric edge-filling techniques.
- Difference Checker: Pixel-perfect visual comparison tool for QA and analysis.
- Image Inspector: Deep dive into image metadata and EXIF data.
- Extension-Exclusive Features:
- Right-Click Context Menu: Instantly convert and download any web image using your preferred presets.
- SEO Audit (Chrome & Edge): Deep DOM scanning to detect oversized images, missing alt text, and potential bandwidth savings via modern formats. (Note: Currently unavailable on Firefox because this feature requires Side Panel API).
- Smart Resizing Engine: Scale by dimension, percentage, or match standard physical paper sizes (A4, Letter) with DPI controls.
- Modern Workspace UI: A unified, desktop-like layout with collapsible navigation, reorderable sidebar configurations (
dnd-kit), and dark mode support.
If you find Imify useful, please consider supporting its development:
Imify is officially available on the Chrome Web Store, Microsoft Edge Add-ons Store, and Firefox Add-ons Store. Click the badges below to install it directly:
Important
π‘οΈ Note for Chrome Users (Enhanced Safe Browsing):
- Because Imify is a newly published extension, users with Chrome's "Enhanced Safe Browsing" enabled might see a warning stating the extension is "not trusted."
- This is a standard Google policy applied to all new developer accounts until they build a history of trust over a few months. It is not related to the code itself. Imify is completely open-source, operates 100% offline, and requires no external servers. You can verify every line of code in this repository. It is entirely safe to click "Continue to install".
- Monorepo: Turborepo
- Web App: Next.js (App Router, Pure Static Export)
- Extension Framework: Plasmo (Manifest V3)
- UI/Styling: React, Tailwind CSS, Radix UI, dnd-kit, Lucide React
- State Management: Zustand
- Core Image Processing: Native
OffscreenCanvasAPI, Web Workers - Advanced Encoders: WebAssembly (Wasm) via
@jsquash/avif,@jsquash/jxl,@jsquash/oxipng; plusimage-q,UPNG.js,UTIF.js,fflate - Language: TypeScript (Strict typing)
imify/
βββ apps/
β βββ extension/ # Plasmo browser extension (Background, Popup, Sidepanel, Options)
β βββ web/ # Next.js web application
βββ packages/
β βββ config/ # Shared build, lint, and Tailwind presets
β βββ core/ # Platform-agnostic types, math, and pure utilities
β βββ engine/ # Wasm worker pools, quantizers, and encoders
β βββ features/ # Shared business logic and UI (Splitter, Batch, SEO Audit)
β βββ stores/ # Global Zustand state management
β βββ ui/ # Design system (Radix, dnd-kit, Theme engines)
-
Clone the repository:
git clone https://github.com/trongajtt/imify.git cd imify -
Install dependencies:
pnpm install
We use Turborepo and root-level scripts to manage tasks across the monorepo.
# Sync package versions and metadata from root to all packages
pnpm sync:package
# Start all development servers (Web app + Extension on Chrome)
pnpm dev
# Start only the Web app (automatically syncs assets)
pnpm dev:web
# Start only the Extension (Targeting specific browsers, automatically syncs assets)
pnpm dev:chrome
pnpm dev:firefox- Open your browser and navigate to:
- Chrome:
chrome://extensions/ - Firefox:
about:debugging#/runtime/this-extension
- Chrome:
- Enable Developer mode (for Chrome).
- Click Load unpacked (Chrome) or Load Temporary Add-on (Firefox).
- Select the build directory (e.g.,
build/chrome-mv3-devorbuild/firefox-mv3-dev).
To create production-ready, optimized builds:
# Build all and verify (CI mode)
pnpm build:ci
# Build specific target
pnpm build:chrome
pnpm build:edge
pnpm build:firefoxTo generate .zip files for the Web Store or AMO:
pnpm package:chrome # Output: apps/extension/build/chrome-mv3-prod/
pnpm package:edge # Output: apps/extension/build/edge-mv3-prod/
pnpm package:firefox # Output: apps/extension/build/firefox-mv3-prod.zip
pnpm package:allTo build the web application:
pnpm build:web # Output: apps/web/out/ (Static Export)This will generate a zip-ready folder in build/chrome-mv3-prod which you can upload directly to the Chrome Web Store.
If you are reviewing this extension for the Mozilla Add-ons Store, please follow these steps to reproduce the exact build:
- Install dependencies:
pnpm install - Generate the Firefox package:
pnpm package:firefox(This command automatically handles asset synchronization and manifest sanitation). - The generated add-on will be an archive located in the output build directory (e.g.,
apps/extension/build/firefox-mv3-prod.zip).
Compliance Declaration regarding WebAssembly (WASM) & Minification:
- WASM Origin: All
.wasmbinaries used in this project for image encoding, decoding, and processing (AVIF, JXL, OxiPNG, MozJPEG, WebP, and Resampling) are sourced standardly via official open-source NPM packages (such as@jsquash/avif,@jsquash/jxl,@jsquash/oxipng,@jsquash/mozjpeg,@jsquash/webp, and@jsquash/resize) as declared inpackage.json. There are no privately built or obfuscated custom WASM payloads. - Local Bundling: During the build process (
pnpm build), these WASM binaries are synchronized fromnode_modulesinto the extension's localassets/wasmdirectory via internal build scripts (scripts/sync-wasm.mjs). - Zero Remote Execution: The extension processes all images 100% locally and does not fetch any executable code, scripts, or WASM files from remote servers. All resources are bundled within the final
.zippackage.
Note for Firefox Reviewers: Our build pipeline includes a dedicated sanitation script (
scripts/sanitize-firefox-manifest.mjs). This script automatically adjusts the production manifest for Firefox to ensure compliance with current Gecko MV3 support:
- Permission Cleanup: Removes
offscreenandsidePanelpermissions which are currently unsupported or restricted in Firefox.- UI Adjustments: Removes the
side_panelandaction.default_popupkeys. Removing the popup allows the extension to use a fallback behavior (handled inapps/extension/src/background/index.ts) that opens the Options page directly when the user clicks the extension icon, providing a seamless experience despite the lack of Side Panel support.
This extension is explicitly designed to respect user privacy:
- No Analytics/Tracking: We do not track what images you convert.
- No Cloud Servers: The extension does not make any external API calls to process your files. Every byte of image data is processed inside your local browser memory and discarded immediately after download.
- Cross-Origin Restrictions: The extension fetches image blobs using its native MV3 permissions, meaning it securely bypasses standard web CORS limitations without exposing your browser to malicious scripts.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.











