Notes



Notes for users

PeaZip free file archiver is available in many different languages, click Options > Localization to modify language of the GUI. If you are willing to contribute a translation please check information Notes for translators below to know how to contribute.



Over networks, this application can be made available to multiple users, either with a shared configuration or with separate configuration for each user, see "Settings" and "Customization and scripting" in the help file (F1), that also contain useful hints for enhancing PeaZip's system integration and use of PeaZip in scripts.

PeaZip is built to be fully modular, you can freely replace backend executables in PeaZip/res directory with updated ones (as long as they support the same syntax) or with 64 bit counterpart if available.

If the host system cannot or should not be modified it is recommended to use PeaZip Portable, that runs without installation and can be simply extracted in any path, even on the network or on removable devices as USB memories.



Extraction of ACE files Add-ons page.

Please note ACE support is NOT featured out of the box and requires optional (an dnot recommended) manual installation of UNACE Plugin.

Because ACE format and closed source UNACE binary are no longer actively maintained, hanlding ACE archives is no longer considered secure, and UNACE components are not featured in standard PeaZip packages to avoid ACE-related security issues.



Extraction of RAR / RAR5 files (created with WinRar using "rar5" option) is now natively supported by PeaZip and UNRAR / UNRAR5 Plugin (based on RarLab's code) is no longer needed, but still available as alternative rar extraction engine.



UTF-8 support

For more information check UTF-8

PeaZip GUI is fully UTF-8 compliant since release 2.2.0, and internal filename handling functions can work with UTF-8 filenames since release 3.0.1 in Linux, and since release 5.8.0 in Microsoft Windows.For more information check UTF-8 support status in Lazarus/FreePascal and PeaZip sources comments.

Custom drag and drop (Windows) On MS Windows systems PeaZip uses a custom

On MS Windows systems PeaZip uses a custom drag and drop extraction (from application to system) that doesn’t need to copy files being dragged to system’s temp folder before, resulting in faster operation when big files are involved, and in better security if temp folder has not the same desired security policies of actual output folder.

PEA archive type limitations

Such a list can be all but complete, however: when I designed

Since filenames are, by design, saved along file streams, there is not an easy way to accomplish it without parsing the entire archive (which can be a reasonable solution only for small archives) or without changing format specifications breaking the compatibility with former versions.

A workaround I may implement in future to allow archive browsing could be creating an extra text filecontaining filenames, saved as first archive's object; that will not introduce backward incompatibility since previos PEA version could still correctly handle the new archives (just having the list-file as extra content) and will be quite painless introducing negligible space and speed payload, unless archiving many small files.

This is just an hypothetical evaluation and there still is not a roadmap about it. Anyway this is a PEA format related issue has no impact on users using PeaZip to handle formats other than PEA.



Cryptoanalisys Such a list can be all but complete, however: when I designed PEA archive format I was less experienced and I basically didn't take in account the need to browse the archive or to partially extract objects; just to create and extract it.Since filenames are, by design, saved along file streams, there is not an easy way to accomplish it without parsing the entire archive (which can be a reasonable solution only for small archives) or without changing format specifications breaking the compatibility with former versions.A workaround I may implement in future to allow archive browsing could be creating an extra text filecontaining filenames, saved as first archive's object; that will not introduce backward incompatibility since previos PEA version could still correctly handle the new archives (just having the list-file as extra content) and will be quite painless introducing negligible space and speed payload, unless archiving many small files.This is just an hypothetical evaluation and there still is not a roadmap about it. Anyway this is a PEA format related issue has no impact on users using PeaZip to handle formats other than PEA. PEA online help (.pdf)



For tutorial, and for contacts, see Support (help) page.

For question&answers about common usage topics, see Frequently Asked Questions page



Notes for translators

How to provide or maintain a translation

Language files are UTF-8 encoded text files which can be edited using any suitable text editor.



To create a new translation file you can:

1 - copy default.txt (in PeaZip's path in /res/lang subfolder) or any other language file, if you prefer starting from another language, to a new file;

2 - edit lines 2 to 6 of the document to enter language name (both in English and in the original language for better readability), PeaZip's version (major.minor) the translation is aimed to, translator's and last last revisor's name and last revision date; IMPORTANT: revision number must not be specified alongside major.minor release number in 3rd line of language files since revisions shares the same text and are meant to deploy between-releases updates, ie.e for bugfixing or for packaging additional translations or resources.

3 - translate the text after the "variable_name: " part in "=== PeaZip text group ===" AND "=== PeaLauncher text group ===" sections of the file (don't move or remove lines, don't change the "variable_name: " part);

4 - optionally, translate the mini-tutorial after "=== about text group ===" line (free editing, it is loaded and displayed "as is" as application's mini-tutorial); it is very important to improve usability of the program for non-English speaking users.



In PeaZip Translations directory on GitHub you can find a package named peazip-x.y.z.about_translations.zip (in x.y release subdirectory) containing a spreadsheet file to help in creating and maintaining localizations, simply compiling column D of the spreadsheet.

IMPORTANT: the spreadsheet contains 3 pages, "PeaZip text group", "PeaLauncher text group", and "About text group": all pages need to be completed and pasted (column E, for first two pages) in the language file; the "About text group" can be freely edited.

The spreadsheet shows variable name (column B), corresponding text string in english (column C) and a blank, yellow column (D) for typing the translated text strings.

On the right, a column E (blue) will show the "variable_name: " part assembled with the translated string: the content of this area can be copied and paste to replace the text in "=== PeaZip text group ===" and "=== PeaLauncher text group ===" sections (the spreadsheet features TWO pages, one for each of the two groups).

Lines must be pasted in the original order (it is sufficient to sort them by column F).



After column F are featured all currently available translations, in order to help translators more proficient in other languages than Englis, and to help to spot out what localizations need to be updated.

At each version all language files are mass-updated, with missing text lines in English; to update a localization, it's enough to update the English text lines.

For a better result it is also recommended to check all the language file to see if the update is coherent with linguistic style used by the translator of the current version.

For languages spoken in different ways in different countries (i.e. English, Spanish, Portuguese...) it is recommended to fork the translation, creating i.e. en-us, pt-br etc

Default language file is default.txt



Translated language files can be sent to me using the address giorgio.tani.software@gmail.com (don't forget to remove the _removethis_ part), to be evaluated for inclusion in future updates and publication on PeaZip's Translations directory.

All translated language files should be considered as released under GFDL, GNU Free Documentation License, as they have to be considered derivate work from the application's language file which is released under GFDL.



Notes for developers

PeaZip free archiver utility sources are contained in the peazip-*.src.zip package.

PeaZip and PeaZip_portable shares the same sources being PeaZip installable basically the same portable application packaged into an installable format: Inno Setup's .exe for Microsoft Windows, DEB, RPM and TGZ for Linux.



Compilation, build and porting PeaZip, Pea and PeaLauncher are written in FreePascal (highly compatible with Delphi and ObjectPascal languages) and require Lazarus IDE to be compiled; Windows setup scripts (.iss files) are developed using Inno Setup.

To compile PeaZip binaries open the .lpi file of the desired binary (i.e. peach.lpi for peazip binary) and select "build all".

FreePascal supports multiple widgetsets (Win32, WinCE, GTK1, GTK2, Qt, Carbon, fpGUI) to allow compilation of GUI applications for the various supported systems and to create different “flavours” of the application for platforms supporting multiple widgetsets (i.e Linux).

PeaZip's sourcecode is cross platform, platform-specific code portions are contained in conditional compilations blocks.

Deploying the application to other targets than MSWINDOWS and LINUX may require adaptation of those platform specific areas (and possibly other fine-tunings); PC-BSD users successfully built PeaZip on *BSD platform.

PeaZip will also need various backend compression and archiving applications to be reachable in expected directories within the application's path, please refer to the structure of any of the precompiled packages, either installable or portable, to see what third parts binaries must be included, and refer to respective Authors for ports of those utilities; also read the help file readme.txt in the source's package for more hints.

Being PeaZip programmed as frontend/backend application, missing or unwanted backend binaries can be omitted, at the cost of losing the ability of handling supported formats; for the same reason, backend binaries can be freely replaced with 64 bit counterparts or with updated versions (which will work fine as long as they follow the same syntax).

PeaZip code should be fairly easy to port on Delphi and other Pascal dialects; the underlying crypto library , developed and maintained by Wolfgang Ehrhardt, is explicitly written to be portable to most or all Pascal dialects, however due to some ASM parts some of its features may be x86 processor specific.

Some units of the crypto library uses ASM sections not fully compatible with 64 bit Lazarus/FPC compiler, but the library provides also pure Pascal replacement for those units in order to allow compilation in those environments.



Packages testing

PeaZip free archiver should run on all MS Windows and Linux systems, the program is currently tested on: Windows 98SE (versions lower than PeaZip 5.5.1)

Windows 2000/XP

Windows Vista/7/8.1/10 32 and 64 bit

various x86 and x86-64 Linux distributions with GTK2 or Qt, both for Gnome and KDE

PEA archive support in third parts software To support Pea file format in your applications you may follow one of those ways:

use directly the executable Pea archiving utility (LGPL freeware) passing parameters through command line, as in PeaZip;

use Pea source code as library to call Pea-related functions from your code (as in the demo application in "sources" package);

create a new implementation following the file format specifications, which are released under public domain and, as for what is known to the author, are free and unencumbered for any use.

Third party technlologies

PeaZip acts as graphic frontend for multiple "engines" performing archiving, compression, encryption and volume split features: manage, open and extract Zip archives, unzip files, free Rar extractor (unrar), extract Tar files on Windows (untar), create and convert archives, create compressed, spanned and password protected backup, compress and attach files and folders, encrypt files, split and join files (file spanning), secure file delete. Pea (Giorgio Tani, LGPLv3) archiving utility featuring authenticated encryption; both PeaZip and Pea uses Wolfgang Ehrhardt's Pascal/Delphi crypto library

(Giorgio Tani, LGPLv3) archiving utility featuring authenticated encryption; both PeaZip and Pea uses Wolfgang Ehrhardt's Pascal/Delphi crypto library 7z (Igor Pavlov, LGPL) and p7zip (Myspace, LGPL, the POSIX port of 7z for Unix systems), supporting most of the mainstream archiving and compression formats; McMilk codecs adding support to Brotli, FastLZMA, Lizard, LZ4, LZ5, and Zstd through 7z binary (Tino Reichardt, LGPL).

(Igor Pavlov, LGPL) and (Myspace, LGPL, the POSIX port of 7z for Unix systems), supporting most of the mainstream archiving and compression formats; McMilk codecs adding support to Brotli, FastLZMA, Lizard, LZ4, LZ5, and Zstd through 7z binary (Tino Reichardt, LGPL). ARC (Bulat Ziganshin, GPL) FreeARC archiver, featuring high compression and strong encryption

(Bulat Ziganshin, GPL) FreeARC archiver, featuring high compression and strong encryption Brotli (Google / Jyrki Alakuijala, Eugene Kliuchnikov, Robert Obryk, Zoltán Szabadka, Lode Vandevenne, MIT License) fast data compression utility



PAQ/LPAQ/ZPAQ (Matt Mahoney and other contributors, GPL) various compression utilities, the current state of art for maximum compression ratio, multiple times winner (in original or custom forms) of Hutter Prize Wikipedia entry about Hutter Prize

(Matt Mahoney and other contributors, GPL) various compression utilities, the current state of art for maximum compression ratio, multiple times winner (in original or custom forms) of Hutter Prize Wikipedia entry about Hutter Prize QUAD (Ilia Muraviev, LGPL), BALZ and BCM (Ilia Muraviev, public domain) compression utilities

(Ilia Muraviev, LGPL), and BCM (Ilia Muraviev, public domain) compression utilities UPX (Markus F.X.J. Oberhumer, László Molnár and John F. Reiser, GPL), compression utility for binaries, and Strip form GNU binutils (GPL)

(Markus F.X.J. Oberhumer, László Molnár and John F. Reiser, GPL), compression utility for binaries, and form GNU binutils (GPL) UNACE (Marcel Lemke, ACE Compression Software, royalty-free UNACEV2.DLL license) UNACEV2.DLL 2.6.0.0 and UNACE for Linux (royalty-free UNACE for Linux license) extractor for ACE files

(Marcel Lemke, ACE Compression Software, royalty-free UNACEV2.DLL license) UNACEV2.DLL 2.6.0.0 and UNACE for Linux (royalty-free UNACE for Linux license) extractor for ACE files being non compliant with OSI approved licenses, it is available as separate download on Add-Ons page as PeaZip UNACE Plugin



UNRAR (Eugene Roshal, royalty-free license from RarLab/Win.Rar GmbH, source code is available but subject to licensing restriction in order to disallow creating a rar compressor) extractor for RARv5 files

being non compliant with OSI approved licenses due unrar licensing restriction, it is available as separate download on Add-Ons page as PeaZip UNRAR5 Plugin (no longer needed on recent releases, still featured as alternate rar decompression engine).

Zstd (Facebook / Yann Collet, Przemysław Skibiński, dual license BSD License and GPLv2) Zstandard fast data compression utility

Open source archiving and compression utilities are included in the program’s package and ready to use; all software included in the package is released under OSI approved licenses . UNACE and UNRAR5 are available as separate downloadable plugin since, while royalty free, are not released under an OSI-approved open source license.

Self-extracting archives are supported, built using 7-Zip's sfx modules (with custom icons and compressed with UPX in order to minimize the overhead added to the archive) and alternatively FreeArc's sfx modules. Custom third parts modules distributors are linked in Add-ons page.



Project's goals



PEA - Pack Encrypt Authenticate



The initial goal of the application was creating a frontend for Pea archiver utility, implementing PEA archive format, designed ground up by myself to primarily focus on security and integrity: I wanted something performing strong authenticated encryption and perform integrity checks on both input objects and output volume(s). Pea offer those characteristics, and is open source (LGPL) freeware; file format specifications are released under public domain. I did a bit of cryptanalisys of it (see Documentation package); I hope more authoritative people may analyze it further.



Most archivers offer strong encryption, but bounded to password-only auhentication: Pea executable offers two factor authentication to increase encryption's security margins against password-related threats, like social engineering, dictionary attacks, bruteforcing, keylogging...

Bring focus on Lazarus/FreePascal



I'm developing PeaZip project in FreePascal language, under Lazarus IDE. I like Pascal-related languages and I think Lazarus/FreePascal is one of the best cross-platform IDE available; I like it even more because it is open source and because it's growing day by day in a more mature and powerful IDE. I'll be glad to bring a bit of developer's attention on Lazarus/FreePascal through my project.

Archiving and compression

Designing PeaZip UI, I'm aiming to focus on archive-specific tools, operations and needs rather than focusing on offering a faithful emulation of a file browser, like many mainstream archivers does. Saving lists of objects to be archived, saving archiving/extraction job definitions and receiving detailed job log after operations are primary goals of PeaZip UI. However, PeaZip's system integration, if desired, allows the user to perform most common operations (add to archive, extract here, encrypt, split file etc) without even care of the main program UI.



7-Zip (and Myspace p7zip POSIX port) : thanking Igor Pavlov 7z choice of offering code licensed under LGPL I was able to easily add support to many mainstream archive and compression formats to PeaZip, transforming it from a niche project (formerly named Pea-Peach) to a possibly wider targeted software. I hope I can turn back to them part of the benefit supporting .7z archive format, especially on Linux systems, offering a ready to use solution to extract and archive in .7z format among others.



ARC: a new, very promising archive format, featuring powerful but efficient compression, strong encryption and recovery records.



Brotli: fast data compression algorithm backed by Google and made available as single file compressor



PAQ/LPAQ/ZPAQ: one of the most promising research project in the field of maximum compression is Matt Mahoney's Paq. Many different implementation and branches exists, as command line binaries and or integrated in archivers with GUI (like WinRK, WinUDA, KGB Archiver etc). PeaZip act as GUI fronted to various *Paq, hoping to contribute to the diffusion of this high compression format and in bringing focus on this interesting research project.



QUAD/BALZ/BCM: Ilia Muraviev's very promising single file compression software featuring high compression ratio and fast decompression, making them very well suited in scenarios were decompression occurs more often than compression (i.e. package release).



Strip/UPX: to provide a GUI frontend for Strip/UPX that comes to be very handy for developers to reduce executables size.



Zstandard: fast data compression algorithm backed by Facebook and made available as Zstd single file compressor



Two factor authentication: since version 2.1 PeaZip can use keyfiles for any supported format featuring encryption. The SHA256 hash of the keyfile (no size limit) is encoded in Base64 (RFC 4648) and prepended to the password. So, it is possible to work on archives encrypted in that way using PeaZip or any application following the same convention, or simply entering the Base64-encoded hash as the first part of the password.