FreeFileSync Open Source File Synchronization

About Tutorials Screenshots Vision Download Archive Forum FAQ Manual
It looks like an ad blocker has blocked all the ads. The FreeFileSync project is 100% dependent on ad revenue and donations to stay alive. Instead of the ads, and after FreeFileSync has proven useful to you, please think about supporting with a donation.

Support the Project

FreeFileSync strives to provide high-quality software with zero open bugs. This is achieved by fast release cycles and free 24/7 support for everyone.
If you find FreeFileSync useful, please consider supporting the project by donating.
Your donation will fund the development of new features and help to keep up continuous program maintenance. This ensures that FreeFileSync stays up to date and always provides the best performance on constantly changing hardware and software.
Donate and get the Donation Edition with bonus features:
parallel file copy
portable zip
email notifications
silent installation

Download FreeFileSync

Download FreeFileSync 11.7 Windows
Download FreeFileSync 11.7 macOS
Download FreeFileSync 11.7 Linux
Download FreeFileSync 11.7 Source
Subscribe for FreeFileSync update notifications

Latest Changes

FreeFileSync 11.7
Detect moved files on FTP (if server supports MLSD)
Allow installation only for current or all user(s) (Linux)
Added application uninstaller: (Linux)
Use login user config path when running as root (macOS, Linux)
Fixed detection of moved files with unstable device IDs (macOS, Linux)
Strict checking for duplicate file IDs
Avoid EINVAL invalid argument error when using F_PREALLOCATE (macOS)
Restore input focus after closing log panel
Double-click on file to open Google Drive web interface
Fixed alpha channel image scaling glitch
Fixed recycle bin folders being created recursively
Fixed thread count status message fluctuation
Don't quit FreeFileSync when parent terminal is closed (SIGHUP)
Fixed "Operation not supported" error when setting directory locks
Show folder picker despite SHCreateItemFromParsingName() error
Work around "OLE received a packet with an invalid header" error