Next generation sequencing platforms produce too many sequences per run for just one environmental sample (i.e. up to 1 million and up to 6 billion reads, respectively, for the 454 GS FLX/Roche machine and for the Illumina HiSeq 2000 machine). Physical procedures allow the splitting of a 454 GS FLX/Roche run into as many as eight regions, and a HiSeq/Illumina run can analyse up to 16 different lanes instar of samples. Despite this, the number of reads per sample is usually still too high for common usage; this waste can enormously increase the cost of analysis. Thus, it is necessary to multiplex several independent samples in one run. The number of reads per sample can be adjusted by selecting the appropriate number of samples to mix. Sequence reads must be separated according to their corresponding samples after sequencing. To associate a sequence read to a sample, we add a small DNA word at one or both of its extremities. Depending on the authors, these DNA words can be called MID (for Multiplex Identifier), ‘barcodes’, or tags. To limit confusion in this review, we call them tags. Soon after the development of pyrosequencing (Margulies et al. 2005), several publications used this strategy to multiplex samples (Binladen et al. 2007, Hoffmann et al. 2007). NGS manufacturers now offer kits for multiplexing, but they are limited to a small number of samples (e.g. the Multiplexing Sample Preparation Oligonucleotide Kit from Illumina (Illumina, Inc., San Diego, CA, USA) contains 12 tags which allow the multiplexing of 96 samples). It is possible, if certain guidelines are observed, to produce sets of tags to index as many samples as needed. The goal is to design tags so that they cannot be confused with anything else, even given sequencing errors (Parameswaran et al. 2007, Hamady et al. 2008). This means that at least ‘n’ differences must exist between two tags, where ‘n’ is determined according to the tagging strategy and the number of reads produced by the sequencer (Coissac 2012). To elaborate a list of tags, several strategies have been explored. Parameswaran et al. (2007) defined the constraints to design a set of 64 decamers with at least four differences. Using an approximation based on auto-corrective binary Hamming code, Hamady et al. (2008) proposed a solution to efficiently compute lists of tags. In their article, they proposed a list of 1544 octamer tags with at least three differences. Because of the approximation used, a small number of tag-pairs have <3 differences, but the efficiency of the method justifies its consideration. Frank (2009) published barcrawl, a program with a naïve algorithm dedicated to designing tagged primers that combine the sequencing primers for the 454 GS FLX/Roche, the tag, and the amplification primer. In the OBITools package (http://www.grenoble.prabi.fr/trac/OBITools), the oligoTag program allows a set of tags to be designed according to user-defined lexical constraints. Based on graph theory and on the notion of clique (i.e. complete sub-graph), it produces exact solutions, but as clique searching is a difficult problem in computer science, the computation time and the memory required for some sets of parameters can be huge. Using this program, we were able to generate a set of 36 octamers with at least five differences between them that allowed the tagging of 362 = 1296 samples (Table 1). When standard multiplexing sample kits proposed by the manufacturers are used, the assignment of each read to a sample is assumed by the sequencing platform. For all other cases, the operation has to be performed later. The BARCRAWL package includes a second program, bartab (Frank 2009), for demultiplexing reads after the sequencing procedure. OBITools includes ngsfilter, a generic program to perform this task. ngsfilter allows the sorting of reads for all common tagging strategies: tagging on one or both sides of the amplicon, and with identical or different tags at each extremity.