LZ77 foi um dos
algoritmos de
compressão de dados desenvolvidos por
Abraham Lempel e
Jacob Ziv em
1977, juntamente com o outro algoritmo de compressão
LZ78 publicado em
1978. Nos primeiros artigos publicados eles eram conhecidos por LZ1 e LZ2, respetivamente, e só depois ganharam o ano de sua publicação em suas siglas.
O algoritmo LZ77 se baseia na utilização das partes que já foram lidas de um
arquivo como um dicionário, substituindo as próximas ocorrências das mesmas sequências de
caracteres pela posição (absoluta ou relativa) da sua última ocorrência. Para limitar o espaço de busca e de
endereçamento necessário, as ocorrências anteriores são limitadas por uma "janela deslizante" (do inglês
sliding window) que tem tamanho fixo e "desliza" sobre o arquivo, delimitando o início e fim da área onde serão buscadas as ocorrências anteriores. O tamanho desta janela é um dos fatores primordiais para se ajustar a performance desse algoritmo.