diff --git a/layouts/shortcodes/file.html b/layouts/shortcodes/file.html
new file mode 100644
index 0000000..00b0328
--- /dev/null
+++ b/layouts/shortcodes/file.html
@@ -0,0 +1,13 @@
+{{- if gt ( len .Params ) 1 -}}
+ {{- $.Scratch.Set "format" ( .Get 1 ) -}}
+{{- else -}}
+ {{- $splits := ( split ( .Get 0 ) "." ) -}}
+ {{- $splitsLength := ( len $splits ) -}}
+ {{- $format := ( index $splits ( sub $splitsLength 1 ) ) -}}
+ {{- $.Scratch.Set "format" $format -}}
+{{- end -}}
+
+{{- $file := ( .Get 0 ) -}}
+{{- $format := ( $.Scratch.Get "format" ) -}}
+
+{{- ( print "```" $format "\n" ( readFile $file ) "\n" "```" ) | markdownify -}}