This project is a Python implementation of Huffman encoding and decoding, used for efficient data compression. The HuffmanNode class represents the nodes of the Huffman tree, which is constructed based on character frequency data from a given input text file. The cnt_freq function calculates character frequencies, while the create_huff_tree function builds the Huffman tree using these frequencies. The create_code function generates Huffman codes for each character, and create_header formats these frequencies into a header for use in encoded files. The huffman_encode function reads an input file, encodes the content using Huffman codes, and writes both a human-readable output and a compressed version. The huffman_decode function reconstructs the original text from an encoded file by reading the bit sequence and traversing the Huffman tree. Utility modules such as huffman_bit_reader and huffman_bit_writer are used for reading and writing bits to files. The project handles edge cases like empty input files and files with only one unique character to ensure robust performance across different scenarios.