diff --git a/src/apps/viewer/favicon.ico b/src/apps/viewer/favicon.ico
new file mode 100755
index 0000000000000000000000000000000000000000..8b601ae0478b944252f69e178b7d4df3467f1b6b
Binary files /dev/null and b/src/apps/viewer/favicon.ico differ
diff --git a/src/apps/viewer/index.html b/src/apps/viewer/index.html
index 4cb1036165d7c26dea7b8cfa1e85830641ac547e..09d060d8854cdb4c98af6e342a4f1a0d7ef89a5a 100644
--- a/src/apps/viewer/index.html
+++ b/src/apps/viewer/index.html
@@ -3,6 +3,7 @@
     <head>
         <meta charset="utf-8" />
         <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+        <link rel="icon" href="./favicon.ico" type="image/x-icon">
         <title>Mol* Viewer</title>
         <style>
             * {
diff --git a/src/apps/viewer/index.ts b/src/apps/viewer/index.ts
index 9a8bb8cf4d8b651702fbc7ee7e15f6657cebee27..70829454a3993d5051eeec3445d6ee8ddb55a2b0 100644
--- a/src/apps/viewer/index.ts
+++ b/src/apps/viewer/index.ts
@@ -7,6 +7,7 @@
 
 import { createPlugin, DefaultPluginSpec } from '../../mol-plugin';
 import './index.html'
+import './favicon.ico'
 import { PluginContext } from '../../mol-plugin/context';
 import { PluginCommands } from '../../mol-plugin/command';
 import { PluginSpec } from '../../mol-plugin/spec';
diff --git a/webpack.config.js b/webpack.config.js
index 4f550c22f1c2e62ec944da28023187cc7dd6d532..4f8dbf1867aac1050fbf1c5fb09f3add1c103870 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -8,7 +8,7 @@ const sharedConfig = {
     module: {
         rules: [
             {
-                test: /\.(woff2?|ttf|otf|eot|svg|html)$/,
+                test: /\.(woff2?|ttf|otf|eot|svg|html|ico)$/,
                 use: [{
                     loader: 'file-loader',
                     options: { name: '[name].[ext]' }