应用未做代码签名,首次打开会被系统拦截,需按 README 手动放行;Linux 的 AppImage 下载后需先 chmod +x;PDF 元数据无法被真正删除,TIFF 和 AVIF 可能只部分清除
paru -S exifcleaner-binREADME 未说明具体硬件要求;支持 macOS 13+、Windows 10+ 和 64 位 Linux,macOS 提供 Apple Silicon 与 Intel 独立构建
跨平台桌面 GUI 工具,用 ExifTool 批量清除图片、视频和 PDF 的元数据
跨平台桌面工具,用图形界面批量清除图片里的 EXIF 等元数据,保护隐私,免去记命令行参数。
核心能力
- 用 ExifTool 的 stay-open 协议批量快速处理
- 拖放文件或文件夹,支持递归处理子目录
- 可展开文件查看清理前后的元数据差异
- 提供保留方向、另存为副本、保留时间戳等隐私选项
- 零遥测、无自动更新,不产生网络流量
容易踩的坑
- v4.8.0ExifCleaner v4.8.0最新正式版2026-11-10 · 2026-11-10 10:11 UTC
ExifCleaner 4.8.0
ExifCleaner 4.8.0 checks a cleaned file before Overwrite replaces your original, cleans WebP files with its built-in cleaner by default, and fixes Save as copy for colour JPEGs.
What's new
- Overwrite checks the cleaned file first. For JPG, JPEG, PNG, WebP, HEIC, HEIF and AVIF, ExifCleaner now writes the cleaned file next to the original, reopens it with ExifTool, runs the leftover-metadata check, syncs it to disk (a full fsync on macOS) and confirms your original did not change. Only then does it replace the original. If any step fails, your original stays as it was. TIFF and media files already worked this way.
- The built-in cleaner handles Overwrite when it can. ExifTool writes the file only when the built-in cleaner declines it before writing, for example a HEIC it cannot read. Turning on Preserve timestamps does not send a file to ExifTool.
- WebP uses the built-in cleaner by default. With Save as copy on and Preserve resolution on, WebP files were cleaned by ExifTool in earlier versions. The built-in cleaner now keeps the resolution too, so it cleans them. A WebP copy or overwrite that fails the leftover-metadata check is discarded and your original is kept. The check was tried on 23 WebP variants with both cleaners, and none had to be refused.
- Colour JPEGs now save as copies. From 4.5.0 to 4.7.0, Save as copy of a colour JPEG could end in "Couldn't verify cleaned output". The check was flagging the JPEG's chroma subsampling, which describes how the picture is encoded, not the photo. It now accepts it. The failed attempts never changed your original.
- Colour profiles pass the check with Preserve color profile on. A JPEG, PNG or AVIF with an sRGB, Adobe RGB or Display P3 profile no longer fails on the profile's own descriptive entries. With the setting off, none of the profile's entries are kept. An entry that was not measured still fails the check.
- A failed check says why. The file's detail line now shows the check code and the names of the unexpected tags, at most eight, never tag values or file paths. Click the line to copy it. Tag names can come from the file itself, such as PNG text keywords or XMP property names, so a name can be unfamiliar.
- A changed original stops the overwrite. If another app, such as a cloud sync client, changes or locks the file while ExifCleaner works, the overwrite stops, reports that your original is unchanged and keeps it.
Thanks to zbruceli for reporting the colour JPEG problem and proposing fixes. We reimplemented them with tests rather than merging them as written.
Changes to be aware of
- Overwrite replaces the file. It swaps in the cleaned file instead of editing yours in place. A file of your own keeps its owner and permissions and, when your system allows it, its group. A symbolic link at the path is replaced by the cleaned file, and the old target is left alone. We have not measured the result for a file owned by a different user.
- An existing hard link keeps the old bytes and metadata. Only the path you cleaned gets the cleaned file, so another hard link to the same file still holds the original, uncleaned data.
- Extended attributes, ACLs and alternate data streams are not carried to the new file.
- Windows: On Windows the file's creation time changes, because the cleaned file is a new file. 4.7.0 kept it. A read-only file on Windows is not overwritten and the original is kept, the same outcome as before 4.8.0. POSIX permissions do not apply.
- macOS and Linux: the file keeps its permissions, including read-only (0444), 0640 and 0600, the same as before 4.8.0.
- TIFF and media files already used the staged commit. On macOS and Linux a read-only or 0640 TIFF or media file keeps its permissions, as before.
- Time cost. The extra checks take a few milliseconds per file. Measured on one Apple Silicon Mac under background load: WebP Save as copy takes 8.0 to 8.3 ms more per file (about 4 s
- v4.7.0ExifCleaner v4.7.02026-10-25 · 2026-10-25 13:58 UTC
查看更新说明
ExifCleaner 4.7.0
ExifCleaner 4.7.0 updates the app to Electron 44. It no longer runs on 32-bit Windows or macOS 12. The 4.6.x line is the last that does, and 4.6.0 is the version to reinstall on those systems.
What's new
- Updated to Electron 44. Electron's own notes are at electronjs.org/blog/electron-44-0. File cleaning behaviour is unchanged.
Requirements changed
- 32-bit Windows is no longer supported. To check, right-click Start, choose Settings, select System, pick About, and look under Device specifications, which says whether Windows is 32-bit or 64-bit (Microsoft's instructions). If it says 32-bit, stay on 4.6.0.
- macOS 13 (Ventura) or later is now required. macOS 12 users should stay on 4.6.0.
Windows 10 or later (64-bit) and Linux (64-bit) are as before.
Known limitations in 4.7.0
No executable release-blocking known gaps are approved for this release; documented format constraints follow below.
Format constraints
- TIFF: only the first page of a multi-page TIFF is cleaned; later pages keep their own ImageDescription, Software, Artist and Copyright. HostComputer, DocumentName and CameraSerialNumber also remain on the first page.
- RAW: some Canon maker-note tags stay because ExifTool cannot delete them (for example the CR2 maker-note SerialNumber). The RAW fix was measured on CR2, CR3, DNG and RW2 samples; no claim is made for ARW, NEF, ORF, PEF or SRW. RAF cleaning is still refused and the source is left unchanged.
- Time limits: a write's limit is 30 seconds plus one second per 20 MB of the file. 20 MB per second is an assumed floor for slow disks, not a measured speed. With Save as copy off, for formats ExifTool rewrites in place such as JPEG and PNG, a stop that lands just after ExifTool replaced the original leaves the original cleaned even though the app reports a failure.
- PDF: ExifTool uses reversible updates, so prior metadata may remain recoverable.
- MKV: unsupported because ExifTool does not expose a writable removal path.
- HEIC, HEIF and AVIF color profiles: when the built-in cleaner declines a file and ExifTool cleans the copy with Preserve color profile off, ExifTool cannot remove the embedded color profile, so the copy keeps it.
- Leftover metadata check: if ExifTool's copy of a declined HEIC, HEIF or AVIF file still fails the leftover-metadata check, the copy is discarded, the file is reported as failed, and the original is left untouched.
- iPhone HDR photos: cleaning an iPhone HDR HEIC loses Apple's HDR brightness information, so the copy can display as standard dynamic range. This was measured on one iPhone 13 Pro Max photo on macOS. Earlier versions using ExifTool did the same, so this is not new in 4.6.0.
- Windows HEIF Image Extension: cleaned HEIC and AVIF copies were not tested in the Windows HEIF Image Extension.
Rollback
If 4.7.0 does not work on your computer, reinstall 4.6.0 from the releases page. Trade-offs: there will be no further 4.6.x changes, Electron 43 reaches end of life in January 2027, and ExifCleaner does not check for updates, so it will not prompt you to move.
For maintainers: reverting the Electron bump in a 4.7.x release cannot restore 32-bit Windows or macOS 12.
The full list is in CHANGELOG.md.
Downloads
Platform File Windows portable (recommended) ExifCleaner.4.7.0.portable.exeWindows installer ExifCleaner.Setup.4.7.0.exemacOS (Apple Silicon) ExifCleaner-4.7.0-arm64.dmgmacOS (Intel) ExifCleaner-4.7.0.dmgLinux (AppImage) `ExifCleaner- - v4.6.0ExifCleaner v4.6.02026-10-20 · 2026-10-20 23:35 UTC
查看更新说明
ExifCleaner 4.6.0
ExifCleaner 4.6.0 cleans HEIC, HEIF and AVIF files with the app's own built-in cleaner when Save as copy is on, and no longer leaves a background ExifTool process running after a force-quit or crash.
What's new
- HEIC, HEIF and AVIF copies are now cleaned by the app's own built-in cleaner. With Save as copy on, these files are cleaned by the built-in cleaner whenever it supports every preservation setting you have turned on. Files it declines to handle are cleaned by ExifTool as before. Every copy is reopened and checked for leftover metadata; if the check finds anything unexpected, the copy is discarded, your original file is left untouched, and the file is reported as failed.
- Files are cleaned according to their real content. If a file's name does not match its content (for example, AVIF data named
.heic), it is cleaned according to its real content and keeps its name. If the built-in cleaner declines the file and ExifTool cannot write that combination, the write fails and the original file is preserved. - Force-quitting or crashing ExifCleaner no longer leaves a background ExifTool process running. On macOS and Linux, ExifTool now exits within about a second of losing the app once it is between files. On Windows it is ended immediately, even mid-write. The original file is preserved either way.
Other changes
- On macOS and Linux, the bundled ExifTool no longer reads a personal
~/.ExifTool_configfile. Windows still does.
Known limitations in 4.6.0
No executable release-blocking known gaps are approved for this release; documented format constraints follow below.
Format constraints
- TIFF: only the first page of a multi-page TIFF is cleaned; later pages keep their own ImageDescription, Software, Artist and Copyright. HostComputer, DocumentName and CameraSerialNumber also remain on the first page.
- RAW: some Canon maker-note tags stay because ExifTool cannot delete them (for example the CR2 maker-note SerialNumber). The RAW fix was measured on CR2, CR3, DNG and RW2 samples; no claim is made for ARW, NEF, ORF, PEF or SRW. RAF cleaning is still refused and the source is left unchanged.
- Time limits: a write's limit is 30 seconds plus one second per 20 MB of the file. 20 MB per second is an assumed floor for slow disks, not a measured speed. With Save as copy off, for formats ExifTool rewrites in place such as JPEG and PNG, a stop that lands just after ExifTool replaced the original leaves the original cleaned even though the app reports a failure.
- PDF: ExifTool uses reversible updates, so prior metadata may remain recoverable.
- MKV: unsupported because ExifTool does not expose a writable removal path.
- HEIC, HEIF and AVIF color profiles: when the built-in cleaner declines a file and ExifTool cleans the copy with Preserve color profile off, ExifTool cannot remove the embedded color profile, so the copy keeps it.
- Leftover metadata check: if ExifTool's copy of a declined HEIC, HEIF or AVIF file still fails the leftover-metadata check, the copy is discarded, the file is reported as failed, and the original is left untouched.
- iPhone HDR photos: cleaning an iPhone HDR HEIC loses Apple's HDR brightness information, so the copy can display as standard dynamic range. This was measured on one iPhone 13 Pro Max photo on macOS. Earlier versions using ExifTool did the same, so this is not new in 4.6.0.
- Windows HEIF Image Extension: cleaned HEIC and AVIF copies were not tested in the Windows HEIF Image Extension.
Rollback
If a 4.6.0 HEIC, HEIF or AVIF copy looks wrong, reinstall 4.5.0 from the releases page. The built-in cleaner handles these formats only when Save as copy is on and it supports every preservation setting you have turned on. With Save as copy off, ExifTool cleans
- v4.5.0ExifCleaner v4.5.02026-09-29 · 2026-09-29 02:02 UTC
查看更新说明
ExifCleaner 4.5.0
ExifCleaner 4.5.0 cleans PNG and JPEG files with the app's own built-in cleaner when Save as copy is on, fixes WebP resolution loss in that same mode, and removes JPEG content credentials to match what the bundled ExifTool already removed.
What's new
- PNG and JPEG copies are now cleaned by the app's own built-in cleaner. With Save as copy on, PNG and JPEG files are cleaned by a built-in cleaner instead of the bundled ExifTool, whenever it supports every preservation setting you have turned on. Files it declines to handle are cleaned by ExifTool exactly as before. Every cleaned copy is reopened and checked by ExifTool for leftover metadata before it is kept; if the check finds anything unexpected, the copy is discarded, your original file is left untouched, and the file is reported as failed. Cleaning many PNG or JPEG files as copies in one batch now costs a few extra milliseconds per file from that check — measured at about +5.9 ms per JPEG and +6.6 ms per PNG on a development machine — which was judged worth paying so a copy with leftover metadata is never silently kept.
- WebP now keeps its resolution with Save as copy on. With Preserve resolution on, WebP files are cleaned by ExifTool and keep their resolution. This removes the 4.4.0 known limitation that WebP resolution was never kept in that mode.
- JPEG content credentials (C2PA) are now removed. Content credential data carried in JPEG APP11 segments is now removed by the built-in cleaner, matching what ExifTool already removed.
Other changes
- A failing PNG or JPEG copy now reports a generic "Generated output write failed" message instead of ExifTool's own more specific error text, matching the message every other copy-mode format (RAW, TIFF, media and WebP) already shows on a failed write.
Known limitations in 4.5.0
No executable release-blocking known gaps are approved for this release; documented format constraints follow below.
Format constraints
- TIFF: only the first page of a multi-page TIFF is cleaned; later pages keep their own ImageDescription, Software, Artist and Copyright. HostComputer, DocumentName and CameraSerialNumber also remain on the first page.
- RAW: some Canon maker-note tags stay because ExifTool cannot delete them (for example the CR2 maker-note SerialNumber). The RAW fix was measured on CR2, CR3, DNG and RW2 samples; no claim is made for ARW, NEF, ORF, PEF or SRW. RAF cleaning is still refused and the source is left unchanged.
- Time limits: a write's limit is 30 seconds plus one second per 20 MB of the file. 20 MB per second is an assumed floor for slow disks, not a measured speed. With Save as copy off, for formats ExifTool rewrites in place such as JPEG and PNG, a stop that lands just after ExifTool replaced the original leaves the original cleaned even though the app reports a failure.
- PDF: ExifTool uses reversible updates, so prior metadata may remain recoverable.
- MKV: unsupported because ExifTool does not expose a writable removal path.
- AVIF: user-reported partial-removal behavior remains under investigation.
Rollback
If a 4.5.0 PNG or JPEG copy looks wrong, reinstall 4.4.0 from the releases page. The built-in cleaner introduced in 4.5.0 is used only when Save as copy is on, and only when it supports every preservation setting you have turned on; with Save as copy off, ExifTool cleans the file exactly as it did in 4.4.0, so that mode is unaffected by this rollback. Your settings carry over unchanged. Reinstalling 4.4.0 also gives up the 4.5.0 WebP-resolution fix.
For maintainers: remove the format's handler from
HANDLERS(exifcleaner-node/src/admission/registry.ts), publish anexifcleaner-nodepatch, and bump the app's exact pin. The format then declines asunsupported-formatbefore any w - v4.4.0ExifCleaner v4.4.02026-09-24 · 2026-09-24 15:15 UTC
查看更新说明
ExifCleaner 4.4.0
ExifCleaner 4.4.0 removes metadata that earlier versions left behind in comments, TIFF and RAW files, keeps a cleaned file's print resolution, and recovers from writes that run past their time limit.
Fixes
- Files whose only metadata was a comment are now cleaned. A file whose only removable metadata was a free-text comment, such as a JPEG comment, was reported as having no removable metadata and skipped. It is now counted and the comment is removed. The same comment field was measured on GIF and RW2 files.
- TIFF: descriptive and camera tags are removed from the first page (#199). ImageDescription, Make, Model, Software, ModifyDate, Artist, Copyright, Rating and the Windows XP title, comment, author, keyword and subject tags no longer survive a default clean. Image data is unchanged, and TIFF writes now go through the staged, verified output path in both modes, so a failed write leaves the original untouched.
- RAW: identifying metadata is removed. CR2, CR3, DNG, RW2 and the other supported RAW formats no longer keep identifying text, camera body and lens serial numbers, owner names, the DNG raw-data ID and original raw file name, or capture dates and time offsets that ExifTool can delete. Make, Model and the DNG camera and color tags are kept, and the image data is unchanged.
- Writes that run past their time limit are stopped cleanly. The app stops that ExifTool write, removes the partial output it left, and cleans the remaining files in the batch on a fresh ExifTool session. If the partial output cannot be removed, the file's row shows where it is.
New: Preserve resolution
A Preserve resolution setting, on by default, keeps a cleaned file's print resolution (DPI) exactly as the source recorded it: JPEG JFIF and EXIF resolution, and PNG pHYs. Printed sizes no longer change. GPS, author, software and comment metadata are still removed. Existing settings pick it up turned on after upgrading. Turning it off restores the previous behavior of removing resolution too.
Other changes
- The Windows portable download is renamed to
ExifCleaner.4.4.0.portable.exe, so it can be told apart from the installer by filename alone (#261). - Files larger than 4 GB have been cleaned successfully since 4.0.0, because ExifTool 12.88 made large-file support its default. 4.4.0 adds a regression test so a future ExifTool update cannot silently bring the old failure back. This is verification, not a new fix.
- A 4.0.0 changelog entry that claimed macOS code signing and notarization was corrected. Releases are unsigned by explicit maintainer policy (#362).
Known limitations in 4.4.0
No executable release-blocking known gaps are approved for this release; documented format constraints follow below.
Format constraints
- TIFF: only the first page of a multi-page TIFF is cleaned; later pages keep their own ImageDescription, Software, Artist and Copyright. HostComputer, DocumentName and CameraSerialNumber also remain on the first page.
- RAW: some Canon maker-note tags stay because ExifTool cannot delete them (for example the CR2 maker-note SerialNumber). The RAW fix was measured on CR2, CR3, DNG and RW2 samples; no claim is made for ARW, NEF, ORF, PEF or SRW. RAF cleaning is still refused and the source is left unchanged.
- WebP: with Save as copy on, the built-in WebP cleaner does not keep resolution, whether Preserve resolution is on or off.
- Time limits: a write's limit is 30 seconds plus one second per 20 MB of the file. 20 MB per second is an assumed floor for slow disks, not a measured speed. With Save as copy off, for formats ExifTool rewrites in place such as JPEG and PNG, a stop that lands just after Exif
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
ExifCleaner
Desktop app to clean metadata from supported images, media files, and PDFs.
Features
- Fast batch processing via ExifTool's stay-open protocol
- Drag and drop files or folders
- Free and open source (MIT)
- Cross-platform: macOS, Windows, and Linux
- Supports a verified allowlist of image, media, and PDF formats (full list below)
- Privacy controls: preserve orientation, save as copy, remove macOS extended attributes, preserve timestamps
- Folder recursion — drop a folder to process all files inside
- Metadata inspection — expand any file to see before/after diff
- Dark mode (follows OS preference)
- 25 languages with in-app language switching
- No automatic updates or network traffic — zero telemetry, zero phone-home
- Every release verified by CI against the actual installed app on macOS, Windows, and Linux
What's New in v4.0
ExifCleaner v4.0 is a complete modernization — the first release since v3.6.0 (May 2021). Highlights:
- 5 new privacy features: preserve orientation, save as copy, xattr removal, preserve timestamps, folder recursion
- Metadata inspection: expand any processed file to see exactly what was removed
- Language switching: change language from settings without restarting (25 locales)
- Security hardened: CSP, Electron Fuses, IPC validation, navigation hardening, permission gates
- Native Apple Silicon and Intel builds: separate downloads, no Rosetta needed
- 265 unit tests + 42 E2E tests: comprehensive quality gates
See the CHANGELOG for the full list of changes.
Download and Install
macOS 13+, Windows 10+, and Linux are supported (64-bit).
- macOS: Download the .dmg file — pick the
arm64build for Apple Silicon, the other for Intel - Windows: Download
ExifCleaner.<version>.portable.exe(recommended) orExifCleaner.Setup.<version>.exe(installer) - Linux: Download the .AppImage, .deb, or .rpm file
For Linux, the AppImage needs to be made executable after download.
Your OS will warn you the first time you open it. ExifCleaner is not code-signed — see Opening unsigned builds for the one-time steps, and why.
Arch Linux users can install from the AUR:
paru -S exifcleaner-bin
Opening unsigned builds
ExifCleaner is not code-signed. On first launch your OS will warn you. This is expected, it is a one-time step, and it does not mean the download is unsafe — verify the checksum below if you want certainty.
macOS
- macOS 14 (Sonoma) and earlier: right-click (or Control-click) the app → Open → click Open in the dialog.
- macOS 15 (Sequoia) and later: right-click → Open no longer works. Double-click the app once and let it be blocked, then go to System Settings → Privacy & Security, scroll down, and click Open Anyway next to the ExifCleaner message.
Windows
Windows Defender SmartScreen shows "Windows protected your PC". Click More info → Run anyway.
Linux
No gatekeeping. The AppImage just needs chmod +x (above). .deb and .rpm install
normally.
Why isn't it signed?
Signing macOS builds requires an Apple Developer certificate at $99/year, and the certificate embeds the holder's legal name, which macOS then displays in the Gatekeeper dialog. Windows requires a separate EV certificate at $200–600/year tied to a verified legal identity. For a privacy tool maintained anonymously, that tradeoff isn't one this project is willing to make.
What you get instead:
- Published SHA-256 checksums for every artifact (below) — verifies the download is byte-for-byte what CI built.
- Every release is built in public by GitHub Actions from tagged source you can read, not on anyone's laptop.
- CI installs and runs the actual artifact before it can be released — it mounts the DMG, installs it, launches it, and strips metadata from a test image. A build that doesn't work never reaches the release page.
Only download from the GitHub releases page. Builds shared through other channels are not ours and are not verified.
Verifying checksums
Each release includes a SHASUMS256.txt file. Download it from the release page and verify your download:
sha256sum -c SHASUMS256.txt 2>&1 | grep OK
Links
Supported File Types
ExifCleaner accepts only the formats below. This is the app's tested intake contract, not ExifTool's much broader reader/writer catalog.
- Images:
.jpg,.jpeg,.png,.gif,.tiff,.tif,.webp,.heic,.heif,.bmp,.avif,.svg,.cr2,.cr3,.nef,.arw,.orf,.rw2,.raf,.dng,.pef,.srw - Media:
.mp4,.mov,.avi,.m4a,.m4v,.3gp,.wmv - Documents:
.pdf
Known limitations by format
ExifCleaner relies on ExifTool's writer support. Some formats impose structural limits that prevent ExifCleaner from making an irreversible-removal guarantee:
| Format | What ExifCleaner can guarantee | Status |
|---|---|---|
| RAF | The operation is refused before writing because ExifCleaner cannot currently guarantee a safe cleaned RAF artifact. | Source is left unchanged |
| ExifTool writes a reversible PDF update; the original metadata remains recoverable, so ExifCleaner cannot securely erase PDF metadata. | Documented limitation — #216 | |
| MKV / Matroska | ExifTool exposes Matroska metadata for reading but does not provide writable tags, so ExifCleaner rejects MKV at intake. | Unsupported — #182 |
| TIFF | Removal may be partial because some metadata can remain in IFD0. | Open investigation — #199 |
| AVIF | A user-reported partial-removal case remains under investigation. | Open investigation — #215 |
The PDF behavior is documented in the ExifTool application documentation, and ExifTool's Matroska tag table marks the container's extracted tags as non-writable. TIFF and AVIF remain open because their reported behavior may still be addressable without introducing a separate file-format engine.
File writer limitations
ExifCleaner has the same writer limitations as the underlying exiftool it depends on. Taken from the official website:
- ExifTool will not rewrite a file if it detects a significant problem with the file format.
- ExifTool has been tested with a wide range of different images, but since it is not possible to test it with every known image type, there is the possibility that it will corrupt some files. Be sure to keep backups of your files.
- Even though ExifTool does some validation of the information written, it is still possible to write illegal values which may cause problems when reading the images with other software. So take care to validate the information you are writing.
- ExifTool is not guaranteed to remove metadata completely from a file when attempting to delete all metadata. For JPEG images, all APP segments (except Adobe APP14, which is not removed by default) and trailers are removed which effectively removes all metadata, but for other formats the results are less complete:
- JPEG - APP segments (except Adobe APP14) and trailers are removed.
- TIFF - XMP, IPTC, ICC_Profile and the ExifIFD are removed, but some EXIF may remain in IFD0. (The CommonIFD0 Shortcut tag is provided to simplify removal of common metadata tags from IFD0.)
- PNG - Only XMP, EXIF, ICC_Profile and native PNG textual data chunks are removed.
- PDF - The original metadata is never actually removed.
- PS - Only XMP and some native PostScript tags may be deleted.
- MOV/MP4 - Most top-level metadata is removed.
- RAW formats - It is not recommended to remove all metadata from RAW images because this will likely remove some proprietary information that is necessary for proper rendering of the image.
Translations
New translations and corrections are welcome. See Contributing for the small-string workflow. Current translation status:
- Arabic by @zefr0x
- Catalan by @marcarmengou
- Chinese (Mandarin) by MarcusPierce
- Croatian by @milotype
- Czech by @tomz00
- Danish by @zlatco
- Dutch by @rvl-code
- French by @NathanBnm
- German by @tayfuuun, @philippsandhaus
- Hungarian by @icetee
- Italian by @PolpOnline
- Japanese by @AKKED
- Malayalam by @theunknownKiran
- Persian by @RamtinA
- Polish by @m1chu
- Portuguese (Brazil) by @iraamaro, @dadodollabela
- Russian by @likhner
- Slovak by @LiJu09
- Spanish by @ff-ss
- Swedish by @sastofficial
- Turkish by @bsonmez
- Ukrainian by @hugonote
- Vietnamese by @tensingnightco
Development
Built with Electron, React 19, and TypeScript in strict mode. A hand-rolled ExifTool adapter uses the -stay_open protocol for fast batch processing. The engineering guide explains the architecture and traces a file end to end.
Run the app in dev mode
git clone https://github.com/szTheory/exifcleaner.git
cd exifcleaner
yarn install
Pull down the latest ExifTool binaries (requires Perl, macOS/Linux only):
yarn run update-exiftool
Launch the app with Hot Module Reload:
yarn dev
Running tests
yarn test # Unit tests (Vitest, ~1.4s)
yarn test:e2e # E2E tests (Playwright, ~30s) — requires yarn compile first
yarn lint # Prettier formatting check
yarn typecheck # TypeScript strict mode check
Adding or correcting a translation
Edit .resources/locales/<locale>.json, then run yarn i18n:write and
yarn i18n:check. See CONTRIBUTING.md for
placeholder, review, and testing guidance.
Publishing a new release
Releases are built by GitHub Actions. To publish:
- Run
yarn verify:release. If it reports known-gap release blockers, fix or remove the blocking marker before publishing; if it reports release-note drift, runyarn known-gaps:writeand review the managed block. - Make sure
RELEASE_NOTES.mdis current — it becomes the release body verbatim - Trigger the Release workflow via
workflow_dispatchin the GitHub Actions UI - CI builds all platforms unsigned, then installs and smoke-tests one representative artifact per platform — mounts the Apple Silicon DMG / runs the NSIS installer / extracts the AppImage, launches the installed binary, and strips metadata from a test image. macOS additionally runs the Gatekeeper regression gate. The remaining four binaries receive exact-inventory, non-empty, and format-structure checks. A build that fails any of these cannot reach the release page.
- A draft GitHub release is created with all artifacts and SHASUMS256.txt
- Download the DMG through a browser and confirm it opens (this is the one check CI
cannot do — neither
codesignnorspctlcan tell "shows a dialog you click through" from "launches cleanly") - Review the draft and publish when ready
Contributors
Thanks to all the people who submitted bug reports, fixes, and translations. If I've missed you, let me know and I'll add you.
- @m1chu - Polish translation, Mac dock bug fix, Unicode filename debugging
- @LukasThyWalls - Unicode filename debugging, feature suggestions
- @AKKED - Japanese translation, Unicode filename debugging
- @TomasGutierrez0 - ExifTool dependency audit
- @5a384507-18ce-417c-bb55-d4dfcc8883fe - Linux version debugging
- @totoroot - Linux AppImage debugging, usability feedback, feature suggestions
- @Scopuli - Linux AppImage debugging
- @Tox86 - Settings menu bug report
- @ff-ss - Spanish translation
- @tayfuuun - German translation
- @philippsandhaus - German translation fixes
- @airvue - Ubuntu .deb debugging
- @Goblin80 - Ubuntu .deb debugging
- @zahroc - Bulk directory error diagnosis
- @iraamaro - Portuguese (Brazil) translation, Debian/Slackware build fix
- @LiJu09 - Slovak translation
- @likhner - Russian translation
- @hugonote - Ukrainian translation
- @dadodollabela - Portuguese (Brazil) translation fixes
- @zlatco - Danish translation
- @zefr0x - Arabic translation
- @rvl-code - Dutch translation
- @PolpOnline - Italian translation, Arch Linux distribution
- @NathanBnm - French translation
- @Dyrimon - Linux AppImage exit fix
- @MarcusPierce - Chinese (Mandarin) translation
- @brandonlou - CVE-2021-22204 notification
- @v4k0nd - Checksum verification instructions
- @papb - Windows portable build
- @Bellisario - Windows portable build
- @overjt - XSS and Electron reverse shell vulnerability PoC
- @bsonmez - Turkish translation
- @milotype - Croatian translation
- @icetee - Hungarian translation
- @sastofficial - Swedish translation
- @theunknownKiran - Malayalam translation
- @tomz00 - Czech translation
- @tensingnightco - Vietnamese translation
- @marcarmengou - Catalan translation
- @RamtinA - Persian translation