Clean your photos. Protect your privacy.
Strip GPS coordinates, device info, timestamps, and all hidden EXIF metadata from your photos instantly, entirely in your browser. Zero uploads. Zero traces.
Remove all EXIF metadata from your photos while keeping the original file format and full resolution. Inspect exactly what's hiding in your files before stripping.
The full pipeline in one click — strips all EXIF metadata, resizes images taller than 720px down proportionally, and exports everything as WebP. Perfect for preparing photos for the web.
- 🔒 100% Client-Side Processing: Every byte of browser-based processing happens inside your tab. Your images are never read by anyone but you.
- 🌐 Public REST API: Two open endpoints —
/api/exifand/api/optimize— let anyone integrate datclean into their own apps. No API key required, full CORS support. - 📦 Batch Support: Drop tens of files at once and clean or optimize them all with a single click, with per-file metadata inspection.
- 🗺️ GPS & EXIF Stripping: Removes GPS coordinates, device model, timestamps, camera settings, and all hidden metadata fields.
- ⚡ Image Optimization: Resize tall images to 720px height (proportional), convert to WebP at 90% quality.
- 📱 HEIC Support: Full support for iPhone HEIC photos — converted and cleaned in-browser and via the API using libheif.
- 🔍 Metadata Preview: Inspect exactly what metadata is hiding in your files before deciding to strip it.
- 💚 Always Free: No subscriptions, no sign-ups, no paywalls. Open source and free forever.
datclean exposes two public REST endpoints that anyone can call — no API key required.
Strips all metadata (EXIF, XMP, IPTC) from an image while keeping the original format and full resolution.
| Detail | Value |
|---|---|
| Method | POST |
| Content-Type | multipart/form-data |
| Field name | image |
| Max file size | 50 MB |
| Supported formats | JPEG, PNG, WebP, AVIF, TIFF, GIF, HEIC/HEIF |
| Output format | Same as input (HEIC → JPEG) |
Response headers
| Header | Description |
|---|---|
Content-Type |
MIME type of the output image |
Content-Disposition |
Suggested filename (e.g. photo_datclean.jpg) |
X-Original-Format |
Detected input format (e.g. jpeg, heif) |
X-Original-Size |
Input file size in bytes |
X-Output-Size |
Output file size in bytes |
Full optimization pipeline: strips metadata → resizes to max 720 px height (proportional) → exports as WebP at 90% quality.
| Detail | Value |
|---|---|
| Method | POST |
| Content-Type | multipart/form-data |
| Field name | image |
| Max file size | 50 MB |
| Supported formats | JPEG, PNG, WebP, AVIF, TIFF, GIF, HEIC/HEIF |
| Output format | image/webp |
Response headers
| Header | Description |
|---|---|
Content-Type |
Always image/webp |
Content-Disposition |
Suggested filename (e.g. photo_opt.webp) |
X-Original-Width / X-Original-Height |
Source dimensions in pixels |
X-Output-Width / X-Output-Height |
Output dimensions in pixels |
X-Was-Resized |
"true" if the image was scaled down, "false" otherwise |
X-Original-Size |
Input file size in bytes |
X-Output-Size |
Output file size in bytes |
All errors return JSON with an error field and an appropriate HTTP status code.
| Status | Meaning |
|---|---|
400 |
Missing image field |
413 |
File exceeds 50 MB limit |
415 |
Wrong Content-Type (must be multipart/form-data) |
500 |
Processing failed (invalid or corrupt image) |
- Framework: Next.js 16 (App Router)
- Runtime & View Library: React 19
- Styling: Tailwind CSS v4 with CSS-level custom theme variables
- Type Safety: TypeScript
- EXIF Reading: exifr
- HEIC Conversion: heic2any
- Icons: Lucide React
- Toast Notifications: Sonner
- Fonts: Inter (Body) & Instrument Serif (Headings)
Clean Images pipeline:
- Decodes your image into an
ImageBitmap(browser-native, strips all metadata in memory) - Redraws pixel data onto an
OffscreenCanvasat original resolution - Exports in the original format (JPEG, PNG, WebP, TIFF — HEIC becomes JPEG)
Optimize Images pipeline:
- Same EXIF stripping via
OffscreenCanvas - If image height exceeds 720px, scales down proportionally (e.g. 4000×3000 → 960×720)
- Exports as WebP at 90% quality for maximum browser compatibility and compression
Both pipelines run entirely in your browser tab. No data ever leaves your device.
- datclean is built privacy-first by design. There are no databases, no analytics, no tracking, and no servers receiving your data.
- We do not collect, store, or receive any information about you or your files.
Made with love for love. 💚