diff --git a/README.md b/README.md
index 743372df4251d41050c1a89d9c026d1d8f6d4440..f5ba80cb1f05b2b522765073f365d97106292483 100644
--- a/README.md
+++ b/README.md
@@ -127,3 +127,9 @@ I welcome any and all contributions. Just create a PR or an issue.
 
 ## License
 Made with ❤️ by [Philipp C. Heckel](https://heckel.io), distributed under the [Apache License 2.0](LICENSE).
+
+Third party libraries and resources:
+* [github.com/urfave/cli/v2](https://github.com/urfave/cli/v2) (MIT) is used to drive the CLI
+* [Mixkit sound](https://mixkit.co/free-sound-effects/notification/) (Mixkit Free License) used as notification sound
+* [Lato Font](https://www.latofonts.com/) (OFL) is used as a font in the Web UI
+* [GoReleaser](https://goreleaser.com/) (MIT) is used to create releases 
diff --git a/server/index.html b/server/index.html
index f86faa7f3dbe273fc775f24c3e5e841c935aef26..d5073f00dcb58a740c2f6d18b819d68185304ea0 100644
--- a/server/index.html
+++ b/server/index.html
@@ -62,6 +62,7 @@
     </form>
     <p id="topicsHeader">Subscribed topics:</p>
     <ul id="topicsList"></ul>
+    <audio id="notifySound" src="static/sound/mixkit-long-pop-2358.wav"></audio>
 
     <h3>Subscribe via your app, or via the CLI</h3>
     <code>
diff --git a/server/static/js/app.js b/server/static/js/app.js
index df459ca01ba4e5e73e0995fe430b52811c4414df..3670b48507e8777c9d5bdc40bcca24b827f94466 100644
--- a/server/static/js/app.js
+++ b/server/static/js/app.js
@@ -14,6 +14,7 @@ let topics = {};
 const topicsHeader = document.getElementById("topicsHeader");
 const topicsList = document.getElementById("topicsList");
 const topicField = document.getElementById("topicField");
+const notifySound = document.getElementById("notifySound");
 const subscribeButton = document.getElementById("subscribeButton");
 const subscribeForm = document.getElementById("subscribeForm");
 const errorField = document.getElementById("error");
@@ -59,6 +60,7 @@ const subscribeInternal = (topic, delaySec) => {
         eventSource.onmessage = (e) => {
             const event = JSON.parse(e.data);
             new Notification(event.message);
+            notifySound.play();
         };
         topics[topic] = eventSource;
         localStorage.setItem('topics', JSON.stringify(Object.keys(topics)));
diff --git a/server/static/sound/mixkit-long-pop-2358.wav b/server/static/sound/mixkit-long-pop-2358.wav
new file mode 100644
index 0000000000000000000000000000000000000000..4bed79ac13a34091d96abaad652b359c5046b27e
Binary files /dev/null and b/server/static/sound/mixkit-long-pop-2358.wav differ