diff --git a/pkg/build.sh b/pkg/build.sh
index ce4a22f71a73d7c5ed998ce0b6229e24a5be3783..c86a7cb3a8412a3d334985d1994b6d2f9c00833d 100644
--- a/pkg/build.sh
+++ b/pkg/build.sh
@@ -66,6 +66,19 @@ build_arch() {
     makepkg -s
 }
 
+build_snap() {
+    #sudo apt install build-essential qt5-default libqt5svg5-dev qtdeclarative5-dev snapcraft
+
+    cd "${PROJDIR}"
+
+    mkdir -p "${BUILDDIR}"
+    export_source "${BUILDDIR}"
+    tar -xzvf "${BUILDDIR}/${PKGNAME}.tar.gz" -C "${BUILDDIR}"
+
+    cd "${BUILDDIR}/${PKGNAME}/pkg/snap"
+    snapcraft
+}
+
 build_appimage() {
     #sudo add-apt-repository ppa:beineri/opt-qt57-xenial
     #sudo apt update
@@ -114,8 +127,10 @@ elif [ "${BUILDTYPE}" = 'fedora' ]; then
     build_fedora
 elif [ "${BUILDTYPE}" = 'arch' ]; then
     build_arch
+elif [ "${BUILDTYPE}" = 'snap' ]; then
+    build_snap
 elif [ "${BUILDTYPE}" = 'appimage' ]; then
     build_appimage
 else
-    echo "sh $(basename "${0}") [ubuntu|fedora|arch|appimage] [tree_ish]"
+    echo "sh $(basename "${0}") [ubuntu|fedora|arch|snap|appimage] [tree_ish]"
 fi
diff --git a/pkg/snap/setup/gui/xdgurl.desktop b/pkg/snap/setup/gui/xdgurl.desktop
new file mode 100644
index 0000000000000000000000000000000000000000..d541072629c344be4137a096022ca56efd0ef525
--- /dev/null
+++ b/pkg/snap/setup/gui/xdgurl.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=xdgurl
+Exec=xdgurl.xdgurl %u
+Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/xdgurl.svg
+Type=Application
+Terminal=false
+NoDisplay=true
+Categories=Network;Utility;
+MimeType=x-scheme-handler/xdg;x-scheme-handler/xdgs;
diff --git a/pkg/snap/snapcraft.yaml b/pkg/snap/snapcraft.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e4c6b00ca5f1a882e00ce233933368ecae8887df
--- /dev/null
+++ b/pkg/snap/snapcraft.yaml
@@ -0,0 +1,40 @@
+name: xdgurl
+version: '2.0.3'
+summary: An install helper program for desktop stuff
+description: |
+  An install helper program for desktop stuff.
+
+grade: devel
+confinement: strict
+
+#icon: ../../src/desktop/xdgurl.svg
+
+parts:
+  xdgurl:
+    plugin: qmake
+    source: ../../
+    qt-version: qt5
+    options:
+      - PREFIX='/usr'
+    build-packages:
+      - build-essential
+      - qt5-default
+      - libqt5svg5-dev
+      - qtdeclarative5-dev
+      - snapcraft
+    stage-packages:
+      - libqt5svg5
+      - qml-module-qtquick-controls
+      - qml-module-qtquick-dialogs
+    after:
+      - desktop-qt5
+
+apps:
+  xdgurl:
+    command: usr/bin/xdgurl
+    plugs:
+      - home
+      - network
+      - opengl
+      - x11
+      - unity7
diff --git a/xdgurl.pro b/xdgurl.pro
index a26d2d5425267120f4adb239776ccbc7513f76a7..a2326695f86a0e4ba08cde961ae06c1c6846ebc1 100644
--- a/xdgurl.pro
+++ b/xdgurl.pro
@@ -20,6 +20,8 @@ DISTFILES += \
     pkg/ubuntu/debian/xdgurl.install \
     pkg/fedora/xdgurl.spec \
     pkg/arch/PKGBUILD \
+    pkg/snap/snapcraft.yaml \
+    pkg/snap/setup/gui/xdgurl.desktop \
     pkg/appimage/appimage-desktopintegration
 
 include(deployment.pri)