diff --git a/src/nf_modules/UrQt/tests/tests.sh b/src/nf_modules/UrQt/tests/tests.sh
new file mode 100644
index 0000000000000000000000000000000000000000..49099e2189dee512fecf84da9cc858c62ff97591
--- /dev/null
+++ b/src/nf_modules/UrQt/tests/tests.sh
@@ -0,0 +1,9 @@
+nextflow src/nf_modules/UrQt/tests/trimming_paired.nf \
+  -c src/nf_modules/UrQt/UrQt.config \
+  -profile docker \
+  --fastq "data/tiny_dataset/fastq/tiny_R{1,2}.fastq"
+
+nextflow src/nf_modules/UrQt/tests/trimming_single.nf \
+  -c src/nf_modules/UrQt/UrQt.config \
+  -profile docker \
+  --fastq "data/tiny_dataset/fastq/tiny_R{1,2}.fastq"
diff --git a/src/nf_modules/UrQt/tests/trimming_paired.nf b/src/nf_modules/UrQt/tests/trimming_paired.nf
new file mode 100644
index 0000000000000000000000000000000000000000..4c289c0e94c70fe9c621a716358b7526b0ce1a14
--- /dev/null
+++ b/src/nf_modules/UrQt/tests/trimming_paired.nf
@@ -0,0 +1,25 @@
+log.info "fastq files : ${params.fastq}"
+
+Channel
+  .fromFilePairs( params.fastq )
+  .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" }
+  .set { fastq_files }
+
+process trimming {
+  tag "$pair_id"
+  cpus 4
+
+  input:
+  set pair_id, file(reads) from fastq_files
+
+  output:
+  file "*_trim_R{1,2}.fastq.gz" into fastq_files_cut
+
+  script:
+"""
+UrQt --t 20 --m ${task.cpus} --gz \
+--in ${reads[0]} --inpair ${reads[1]} \
+--out ${pair_id}_trim_R1.fastq.gz --outpair ${pair_id}_trim_R2.fastq.gz \
+> ${pair_id}_trimming_report.txt
+"""
+}
diff --git a/src/nf_modules/UrQt/tests/trimming_single.nf b/src/nf_modules/UrQt/tests/trimming_single.nf
new file mode 100644
index 0000000000000000000000000000000000000000..3160f3b6c4cf075a78ec6e7155f2c18559660ad3
--- /dev/null
+++ b/src/nf_modules/UrQt/tests/trimming_single.nf
@@ -0,0 +1,28 @@
+params.fastq = "$baseDir/data/fastq/*.fastq"
+
+log.info "fastq files : ${params.fastq}"
+
+Channel
+  .fromPath( params.fastq )
+  .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" }
+  .set { fastq_files }
+
+process trimming {
+  tag "$reads.baseName"
+  cpus 4
+
+  input:
+  file reads from fastq_files
+
+  output:
+  file "*_trim.fastq.gz" into fastq_files_trim
+
+  script:
+  """
+  UrQt --t 20 --m ${task.cpus} --gz \
+  --in ${reads} \
+  --out ${reads.baseName}_trim.fastq.gz \
+  > ${reads.baseName}_trimming_report.txt
+  """
+}
+
diff --git a/src/nf_modules/UrQt/urqt.config b/src/nf_modules/UrQt/urqt.config
new file mode 100644
index 0000000000000000000000000000000000000000..0309d0994b377a243fd90825803ab563d3ab9e98
--- /dev/null
+++ b/src/nf_modules/UrQt/urqt.config
@@ -0,0 +1,16 @@
+profiles {
+  docker {
+    process {
+      $trimming {
+        container = "urqt:d62c1f8"
+      }
+    }
+  }
+  sge {
+    process{
+      $trimming {
+        beforeScript = "module purge; module load UrQt/d62c1f8"
+      }
+    }
+  }
+}
diff --git a/src/nf_modules/UrQt/urqt.nf b/src/nf_modules/UrQt/urqt.nf
new file mode 100644
index 0000000000000000000000000000000000000000..4c0d07c988143e59eb1090675bce333e99a829a3
--- /dev/null
+++ b/src/nf_modules/UrQt/urqt.nf
@@ -0,0 +1,71 @@
+/*
+* urqt :
+* Imputs : fastq files
+* Output : fastq files
+*/
+/*                      quality trimming                                     */
+
+/*
+* for paired-end data
+*/
+
+params.fastq = "$baseDir/data/fastq/*_{1,2}.fastq"
+
+log.info "fastq files : ${params.fastq}"
+
+Channel
+  .fromFilePairs( params.fastq )
+  .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" }
+  .set { fastq_files }
+
+process trimming {
+  tag "$pair_id"
+  cpus 4
+
+  input:
+  set pair_id, file(reads) from fastq_files
+
+  output:
+  file "*_trim_R{1,2}.fastq.gz" into fastq_files_cut
+
+  script:
+"""
+UrQt --t 20 --m ${task.cpus} --gz \
+--in ${reads[0]} --inpair ${reads[1]} \
+--out ${pair_id}_trim_R1.fastq.gz --outpair ${pair_id}_trim_R2.fastq.gz \
+> ${pair_id}_trimming_report.txt
+"""
+}
+
+/*
+* for single-end data
+*/
+
+params.fastq = "$baseDir/data/fastq/*.fastq"
+
+log.info "fastq files : ${params.fastq}"
+
+Channel
+  .fromPath( params.fastq )
+  .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" }
+  .set { fastq_files }
+
+process trimming {
+  tag "$reads.baseName"
+  cpus 4
+
+  input:
+  file reads from fastq_files
+
+  output:
+  file "*_trim.fastq.gz" into fastq_files_trim
+
+  script:
+"""
+UrQt --t 20 --m ${task.cpus} --gz \
+--in ${reads} \
+--out ${reads.baseName}_trim.fastq.gz \
+> ${reads.baseName}_trimming_report.txt
+"""
+}
+
diff --git a/src/nf_modules/cutadapt/tests/tests.sh b/src/nf_modules/cutadapt/tests/tests.sh
index 9651978b62121b80ece061e22efec69f6b8b2faa..a684410cf8234c3b5172679ea9de8198decf02e8 100644
--- a/src/nf_modules/cutadapt/tests/tests.sh
+++ b/src/nf_modules/cutadapt/tests/tests.sh
@@ -1,19 +1,19 @@
-nextflow src/nf_modules/cutadapt/test/adaptor_removal_paired.nf \
+nextflow src/nf_modules/cutadapt/tests/adaptor_removal_paired.nf \
   -c src/nf_modules/cutadapt/cutadapt.config \
   -profile docker \
   --fastq "data/tiny_dataset/fastq/tiny_R{1,2}.fastq"
 
-nextflow src/nf_modules/cutadapt/test/adaptor_removal_single.nf \
+nextflow src/nf_modules/cutadapt/tests/adaptor_removal_single.nf \
   -c src/nf_modules/cutadapt/cutadapt.config \
   -profile docker \
   --fastq "data/tiny_dataset/fastq/tiny_R{1,2}.fastq"
 
-nextflow src/nf_modules/cutadapt/test/trimming_paired.nf \
+nextflow src/nf_modules/cutadapt/tests/trimming_paired.nf \
   -c src/nf_modules/cutadapt/cutadapt.config \
   -profile docker \
   --fastq "data/tiny_dataset/fastq/tiny_R{1,2}.fastq"
 
-nextflow src/nf_modules/cutadapt/test/trimming_single.nf \
+nextflow src/nf_modules/cutadapt/tests/trimming_single.nf \
   -c src/nf_modules/cutadapt/cutadapt.config \
   -profile docker \
   --fastq "data/tiny_dataset/fastq/tiny_R{1,2}.fastq"