Un búfer es un área de datos compartida por dispositivos de hardware o procesos de programa que operan a diferentes velocidades o con diferentes conjuntos de prioridades. El búfer permite que cada dispositivo o proceso funcione sin que el otro lo detenga. Para que un búfer sea efectivo, el diseñador del búfer debe considerar el tamaño del búfer y los algoritmos para mover datos dentro y fuera del búfer. Al igual que un caché, un búfer es un "lugar de retención de punto medio", pero existe no tanto para acelerar la velocidad de una actividad como para apoyar la coordinación de actividades separadas.
Este término se utiliza tanto en programación como en hardware. En programación, el almacenamiento en búfer a veces implica la necesidad de filtrar los datos desde su lugar final previsto para que puedan ser editados o procesados antes de moverlos a un archivo o base de datos normal.