diff --git a/qendpoint-cli/bin/hdtDiffCat.bat b/qendpoint-cli/bin/hdtDiffCat.bat
new file mode 100644
index 00000000..981566d1
--- /dev/null
+++ b/qendpoint-cli/bin/hdtDiffCat.bat
@@ -0,0 +1,5 @@
+@echo off
+
+call "%~dp0\javaenv.bat"
+
+"%JAVACMD%" %JAVAOPTIONS% -classpath %~dp0\..\lib\* com.the_qa_company.qendpoint.core.tools.HDTDiffCat %*
diff --git a/qendpoint-cli/bin/hdtDiffCat.ps1 b/qendpoint-cli/bin/hdtDiffCat.ps1
new file mode 100644
index 00000000..ede22807
--- /dev/null
+++ b/qendpoint-cli/bin/hdtDiffCat.ps1
@@ -0,0 +1,28 @@
+param(
+ [Parameter()]
+ [String]
+ $options,
+ [Parameter()]
+ [String]
+ $config,
+ [Parameter()]
+ [String]
+ $diff,
+ [Parameter()]
+ [Switch]
+ $index,
+ [Parameter()]
+ [Switch]
+ $version,
+ [Parameter()]
+ [Switch]
+ $quiet,
+ [Parameter()]
+ [Switch]
+ $color,
+ [Parameter(ValueFromRemainingArguments, Position = 0)]
+ [string[]]
+ $OtherParams
+)
+
+& "$(Get-Item $PSScriptRoot)/javaenv.ps1" "com.the_qa_company.qendpoint.core.tools.HDTDiffCat" -RequiredParameters $PSBoundParameters
diff --git a/qendpoint-cli/bin/hdtDiffCat.sh b/qendpoint-cli/bin/hdtDiffCat.sh
new file mode 100644
index 00000000..5fe3eafa
--- /dev/null
+++ b/qendpoint-cli/bin/hdtDiffCat.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+source `dirname $0`/javaenv.sh
+
+#export MAVEN_OPTS="-Xmx6g"
+#mvn exec:java -Dexec.mainClass="com.the_qa_company.qendpoint.core.tools.HDTDiffCat" -Dexec.args="$*"
+
+$JAVA $JAVA_OPTIONS -cp $CP:$CLASSPATH com.the_qa_company.qendpoint.core.tools.HDTDiffCat $*
+
+exit $?
diff --git a/qendpoint-core/src/main/java/com/the_qa_company/qendpoint/core/tools/HDTDiffCat.java b/qendpoint-core/src/main/java/com/the_qa_company/qendpoint/core/tools/HDTDiffCat.java
new file mode 100644
index 00000000..744bdc52
--- /dev/null
+++ b/qendpoint-core/src/main/java/com/the_qa_company/qendpoint/core/tools/HDTDiffCat.java
@@ -0,0 +1,197 @@
+package com.the_qa_company.qendpoint.core.tools;
+
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.Parameter;
+import com.beust.jcommander.internal.Lists;
+import com.the_qa_company.qendpoint.core.compact.bitmap.Bitmap64Big;
+import com.the_qa_company.qendpoint.core.enums.RDFNotation;
+import com.the_qa_company.qendpoint.core.exceptions.NotFoundException;
+import com.the_qa_company.qendpoint.core.exceptions.ParserException;
+import com.the_qa_company.qendpoint.core.hdt.HDT;
+import com.the_qa_company.qendpoint.core.hdt.HDTManager;
+import com.the_qa_company.qendpoint.core.hdt.HDTVersion;
+import com.the_qa_company.qendpoint.core.listener.MultiThreadListener;
+import com.the_qa_company.qendpoint.core.options.HDTOptions;
+import com.the_qa_company.qendpoint.core.options.HDTOptionsKeys;
+import com.the_qa_company.qendpoint.core.rdf.RDFParserCallback;
+import com.the_qa_company.qendpoint.core.rdf.RDFParserFactory;
+import com.the_qa_company.qendpoint.core.triples.IteratorTripleString;
+import com.the_qa_company.qendpoint.core.util.StopWatch;
+import com.the_qa_company.qendpoint.core.util.io.Closer;
+import com.the_qa_company.qendpoint.core.util.listener.ColorTool;
+import com.the_qa_company.qendpoint.core.util.listener.MultiThreadListenerConsole;
+import org.apache.commons.io.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class HDTDiffCat {
+
+ private ColorTool colorTool;
+
+ @Parameter(description = "+