In computing, a buffer is a region of memory used to temporarily hold output or input data. The data can be output to or input from devices outside the computer or processes within a computer. Buffers can be implemented in either hardware or software, but the vast majority of buffers are implemented in software. Buffers are used when there is a difference between the rate at which data is recieved and the rate at which it can be processed, or in the case that these rates are variable.