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




