Advanced Huffman Compression Tool with a modern cyberpunk-themed UI.
- ๐๏ธ File Compression - Compress text files using the Huffman coding algorithm
- ๐ฆ Folder Archiving - Archive entire folders into
.hpafiles - ๐ Decompression - Extract
.hpffiles and.hpaarchives - โ Smart Validation - Automatic file type checking for each operation
- ๐จ Modern UI - Cyberpunk-themed interface with neon blue accents
- ๐ฑ๏ธ Drag & Drop - Easy file selection via drag and drop
- ๐ Real-time Progress - Visual feedback during compression/decompression
- ๐พ Custom Format - Efficient binary format for compressed data
- Go to Releases
- Download
HuffPressor-v1.0.0-Windows.zip - Extract and run
HuffPressor.exe
- Launch the application
- Choose an operation:
- ๐ Compress File - Select a text file to compress
- ๐ Compress Folder - Select a folder to archive
- ๐ Decompress File - Extract a
.hpffile - ๐ฆ Decompress Folder - Extract a
.hpaarchive
- Select your file or folder (or drag & drop)
- Save the result!
Text Files (where Huffman coding is most effective):
.txt,.md,.cpp,.h,.c,.hpp.py,.java,.js,.ts.html,.css,.json,.xml.log,.csv,.yaml,.yml- And more...
Folders: All folder types (text-heavy folders recommended)
.hpf- HuffPressor File (compressed file).hpa- HuffPressor Archive (compressed folder)
Note: Binary files (images, videos, executables) are already compressed and won't benefit from Huffman coding.
- CMake 3.15 or higher
- Qt 6.10.1 (Qt6 Widgets, Qt6 Core, Qt6 Gui)
- C++20 compatible compiler
- MinGW-W64 GCC 14.1.0 (Windows)
- Or MSVC 2019+ (Windows)
- Or GCC 10+ / Clang 10+ (Linux/macOS)
- Git
# Clone the repository
git clone https://github.com/CaptainOverride/HuffPressor.git
cd HuffPressor
# Create build directory
mkdir build
cd build
# Configure with CMake
cmake ..
# Build
cmake --build . --config Release
# Run
./HuffPressor.exe # WindowsHuffPressor uses the Huffman Coding algorithm, a lossless data compression technique that:
- Analyzes character frequency in the input
- Builds a binary tree with frequent characters having shorter codes
- Encodes the data using variable-length codes
- Stores the tree structure and encoded data in a custom binary format
This results in significant compression for text-based files where character frequencies vary.
.hpf (HuffPressor File):
- Header with metadata
- Huffman tree structure
- Compressed bit stream
- Original file size
.hpa (HuffPressor Archive):
- Archive header
- Compressed folder structure
- Multiple compressed files
- Metadata for reconstruction
The application features a cyberpunk-themed interface with:
- Dark radial gradient background
- Neon blue (#00e5ff) accents and glow effects
- Glass-morphic panels
- Smooth hover animations
- Responsive 2x2 grid layout
- Language: C++20
- Framework: Qt 6.10.1
- Algorithm: Huffman Coding
- Platform: Windows x64
- Build System: CMake 3.15+
- Compiler: MinGW-W64 GCC 14.1.0
- Architecture: Multi-threaded (Qt Worker threads)
HuffPressor/
โโโ .gitignore # Git ignore rules
โโโ .gitattributes # Git attributes
โโโ CMakeLists.txt # Build configuration
โโโ LICENSE # MIT License
โโโ README.md # This file
โ
โโโ include/ # Public header files
โ โโโ archiver.h
โ โโโ bitReader.h
โ โโโ bitWriter.h
โ โโโ compressor.h
โ โโโ decompressor.h
โ โโโ errors.h
โ โโโ huffmanTree.h
โ โโโ utils.h
โ
โโโ src/ # Source code
โ โโโ cli/ # Command-line interface
โ โ โโโ main.cpp
โ โโโ core/ # Core compression logic
โ โ โโโ archiver.cpp
โ โ โโโ bitReader.cpp
โ โ โโโ bitWriter.cpp
โ โ โโโ compressor.cpp
โ โ โโโ decompressor.cpp
โ โ โโโ huffmanTree.cpp
โ โ โโโ utils.cpp
โ โโโ gui/ # Qt GUI application
โ โโโ main.cpp
โ โโโ mainWindow.cpp
โ โโโ mainWindow.h
โ โโโ worker.cpp
โ โโโ worker.h
โ
โโโ resources/ # Application resources
โ โโโ icon.ico # Windows icon
โ โโโ icon.png # Application icon
โ โโโ resources.qrc # Qt resource file
โ โโโ windows_icon.rc # Windows resource file
โ
โโโ screenshots/ # Screenshots for README
โโโ home.png
โโโ compress-file.png
โโโ compress-file-result.png
โโโ decompress-file.png
โโโ decompress-file-result.png
Note: The build/ directory is generated during compilation and is not tracked by Git.
Contributions, issues, and feature requests are welcome! This is a personal project, but I'm open to improvements.
How to contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Before contributing:
- Check existing issues to avoid duplicates
- For major changes, open an issue first to discuss
- Keep pull requests focused on a single feature/fix
Note: This is a personal project maintained in my free time. Response times may vary, but all contributions are appreciated!
- Bug fixes and improvements
- Better error handling
- Performance optimizations
- Documentation improvements
- Cross-platform support (Linux, macOS)
- Unit tests
- Command-line interface
This project is licensed under the MIT License - see the LICENSE file for details.
- None reported yet! Please open an issue if you find any bugs.
- Command-line interface
- Compression statistics dashboard
- Batch file processing
- Cross-platform support (Linux, macOS)
- Compression ratio comparison
- Custom compression profiles
CaptainOverride
- GitHub: @CaptainOverride
- Engineered with Qt Framework
- Huffman Coding algorithm by David A. Huffman (1952)
- UI inspired by modern cyberpunk aesthetics
If you find this project useful, please consider giving it a star! โญ
Engineered with โค๏ธ by CaptainOverride




