Local Image Convert is a lightweight static web app for browser-only image conversion. The first-class path is HEIC to JPG, but the app also supports JPG/JPEG, PNG, WEBP, BMP, and AVIF inputs with JPG, PNG, and WEBP outputs.
- Converts a single image or a full batch entirely in the browser
- Shows uploaded image previews before conversion
- Rejects ZIP uploads and unsupported file types up front
- Downloads converted images individually or as a ZIP archive
- Adapts automatically to the system light/dark theme
- Deploys cleanly to GitHub Pages
All processing happens locally in the browser. Files are never uploaded to a backend because there is no backend.
| Source | Outputs |
|---|---|
| HEIC / HEIF | JPG, PNG, WEBP |
| JPG / JPEG | JPG, PNG, WEBP |
| PNG | JPG, PNG, WEBP |
| WEBP | JPG, PNG, WEBP |
| BMP | JPG, PNG, WEBP |
| AVIF | JPG, PNG, WEBP |
npm install
npm run test
npm run test:e2e
npm run build
npm run devThe repository includes:
.github/workflows/ci.ymlfor unit tests, WCAG E2E checks, and build validation.github/workflows/deploy-pages.ymlfor GitHub Pages publishing frommain
To enable Pages:
- Open Settings -> Pages in GitHub.
- Set the source to GitHub Actions.
- Push to
main.
The Vite base path is already configured for the repository name InBrowserLocalImageConvert.
- Unit tests cover format detection, validation, and file naming helpers.
- Playwright + axe validates empty, uploaded, and converted states in both dark and light themes with zero WCAG violations.
- Builds run through TypeScript and Vite.
- CI runs unit tests, browser accessibility checks, and the production build before Pages deployment.