Algorytm przebiega następująco: Bufor słownikowy jest wypełniany pierwszym symbolem wejściowym i ten symbol jest zapisywany na wyjścieSposób inicjowania słownika może być inny, jedynym wymogiem jest, aby został jednakowo przeprowadzony przy kodowaniu i dekodowaniu.. Do bufora wejściowego wstawiane jest pierwszych symboli wejściowych. Dopóki w buforze wejściowym są jakieś dane: W obrębie bufora słownikowego wyszukiwany jest najdłuższy podciąg równy początkowi bufora wejściowego (najdłuższy prefiks bufora kodowania). Wynikiem wyszukiwania jest indeks początku wyszukanego podciągu oraz jego długość ograniczona z góry przez Część podciągu może być wspólna z buforem wejściowym!Jeśli podciągu nie uda się znaleźć, to może mieć dowolną wartość, natomiast Na wyjście wyprowadzana jest trójka ( symbol z bufora wejściowego następujący po dopasowanym podciągu). Okno (bufor słownikowy + bufor wejściowy) przesuwane jest w lewo o pozycji i na koniec bufora dopisywane jest tyleż kolejnych symboli wejściowych (o ile jeszcze są jakieś).

Stopień kompresji LZ77 w dużej mierze zależy od długości słownika oraz długości bufora wejściowego (bufora kodowania).