diff --git a/bin/doc/cpp_to_md.sh b/bin/doc/cpp_to_md.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c9f6dc98f68030841d8ecf3381e0cc59054ce8a0
--- /dev/null
+++ b/bin/doc/cpp_to_md.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+if [[ ${1: -3} == ".hh" ]]; then
+  sed '1,/define/d' $1 >tmpfile
+else
+  sed '1,/\*\*\*\*\*/d' $1 >tmpfile
+fi
+
+insidecodeblock=false
+
+while IFS= read -r line
+do
+  strippedline=$(echo $line | sed "s/^[ \t]*//")
+  if [[ ${strippedline:0:2} == "//" ]]; then
+    if [[ $insidecodeblock == true ]]; then
+      echo "\`\`\`"
+      insidecodeblock=false
+    fi
+    echo "${strippedline:2}"
+  else
+    if [[ $insidecodeblock == false ]]; then
+      echo "\`\`\`cpp"
+      insidecodeblock=true
+    fi
+    echo "$line"
+  fi
+done < tmpfile
+
+if [[ $insidecodeblock == true ]]; then
+  echo "\`\`\`"
+  insidecodeblock=false
+fi