A barcode reader is a device that turns a printed code into data your till, stock or inventory software can use. Some read 1D codes (the vertical bars on a product) and others read 2D codes (such as the QR code). Your first selection criterion is therefore the type of code you need to read.
A 1D, or linear, code is the row of bars you see on a supermarket pack. A 2D code stores information across two dimensions and holds far more data: this is the case for the QR code or the Data Matrix used in industry. These formats rely on precise standards: the QR code is defined by the ISO/IEC 18004 standard and the Data Matrix by the ISO/IEC 16022 standard. According to GS1, the body that manages the global barcode standard, several billion scans are performed worldwide every day: read reliability is no small matter.
A simple rule to remember: a 2D reader also reads 1D codes, whereas a 1D reader cannot read 2D codes. If you only handle standard product barcodes, a 1D model is enough. If you handle QR codes, Data Matrix or codes shown on a screen, you need a 2D model. To compare devices by technology, see the 1D and 2D barcode scanners category.