diff --git a/plugins/deno/.gitignore b/plugins/deno/.gitignore
new file mode 100644
index 000000000..cba5b03e8
--- /dev/null
+++ b/plugins/deno/.gitignore
@@ -0,0 +1 @@
+_deno
diff --git a/plugins/deno/README.md b/plugins/deno/README.md
new file mode 100644
index 000000000..828e6af39
--- /dev/null
+++ b/plugins/deno/README.md
@@ -0,0 +1,18 @@
+# Deno Plugin
+
+This plugin sets up completion and aliases for [Deno](https://deno.land).
+
+## Aliases
+
+| Alias | Full command     |
+| ----- | ---------------- |
+| db    | deno bundle      |
+| dc    | deno compile     |
+| dca   | deno cache       |
+| dfmt  | deno fmt         |
+| dh    | deno help        |
+| dli   | deno lint        |
+| drn   | deno run         |
+| drw   | deno run --watch |
+| dts   | deno test        |
+| dup   | deno upgrade     |
diff --git a/plugins/deno/deno.plugin.zsh b/plugins/deno/deno.plugin.zsh
new file mode 100644
index 000000000..af5c98265
--- /dev/null
+++ b/plugins/deno/deno.plugin.zsh
@@ -0,0 +1,21 @@
+# ALIASES
+alias db='deno bundle'
+alias dc='deno compile'
+alias dca='deno cache'
+alias dfmt='deno fmt'
+alias dh='deno help'
+alias dli='deno lint'
+alias drn='deno run'
+alias drw='deno run --watch'
+alias dts='deno test'
+alias dup='deno upgrade'
+
+# COMPLETION FUNCTION
+if (( $+commands[deno] )); then
+  if [[ ! -f $ZSH_CACHE_DIR/deno_version ]] \
+    || [[ "$(deno --version)" != "$(< "$ZSH_CACHE_DIR/deno_version")" ]] \
+    || [[ ! -f $ZSH/plugins/deno/_deno ]]; then
+    deno completions zsh > $ZSH/plugins/deno/_deno
+    deno --version > $ZSH_CACHE_DIR/deno_version
+  fi
+fi