diff --git a/app/features/settings/middleware.js b/app/features/settings/middleware.js
index 0d6e489636a9fa2d12ea905148304f531fad9e00..ece54ea79a24782035e92746e9773568399ce997 100644
--- a/app/features/settings/middleware.js
+++ b/app/features/settings/middleware.js
@@ -1,6 +1,6 @@
 // @flow
 
-import { getAvatarURL } from '../utils';
+import { getAvatarURL } from 'js-utils';
 import { SET_EMAIL, SET_NAME } from './actionTypes';
 import { setAvatarURL } from './actions';
 
diff --git a/app/features/settings/reducer.js b/app/features/settings/reducer.js
index 5daaf4e63f8bbc331de44d1151befa2d7d7b642a..e453a06bde662b68771b1e149cfd0c0a5b89d17a 100644
--- a/app/features/settings/reducer.js
+++ b/app/features/settings/reducer.js
@@ -2,7 +2,7 @@
 
 import os from 'os';
 
-import { getAvatarURL } from '../utils';
+import { getAvatarURL } from 'js-utils';
 
 import {
     SET_AVATAR_URL,
diff --git a/app/features/utils/functions.js b/app/features/utils/functions.js
index df26f0b551bfa949f5a8e1822fd767946dcd2df6..2b86d2eba29a9da20ad7768af61d1c58ddc82cdd 100644
--- a/app/features/utils/functions.js
+++ b/app/features/utils/functions.js
@@ -3,7 +3,6 @@
 // @flow
 
 import { shell } from 'electron';
-import md5 from 'js-md5';
 import config from '../config';
 
 /**
@@ -56,35 +55,3 @@ export function normalizeServerURL(url: string) {
 export function openExternalLink(link: string) {
     shell.openExternal(link);
 }
-
-/**
- * Returns the Avatar URL to be used.
- *
- * @param {string} key - Unique key to generate Avatar URL.
- * @returns {string}
- */
-export function getAvatarURL({ email, id }: {
-    email: string,
-    id: string
-}) {
-    let key = email || id;
-    let urlPrefix;
-    let urlSuffix;
-
-    // If the ID looks like an e-mail address, we'll use Gravatar because it
-    // supports e-mail addresses.
-    if (key && key.indexOf('@') > 0) {
-
-        // URL prefix and suffix of gravatar service.
-        urlPrefix = 'https://www.gravatar.com/avatar/';
-        urlSuffix = '?d=wavatar&size=200';
-    } else {
-        key = id;
-
-        // Otherwise, use a default (meeples, of course).
-        urlPrefix = 'https://abotars.jitsi.net/meeple/';
-        urlSuffix = '';
-    }
-
-    return urlPrefix + md5.hex(key.trim().toLowerCase()) + urlSuffix;
-}
diff --git a/package-lock.json b/package-lock.json
index 007b6dbd3e6ccac0f6af0fe1e7d020cb6ef2045c..e8e72928c864121a273942adfb1c0ade85c056d8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2363,6 +2363,11 @@
       "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
       "dev": true
     },
+    "bowser": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.1.tgz",
+      "integrity": "sha512-UXti1JB6oK8hO983AImunnV6j/fqAEeDlPXh99zhsP5g32oLbxJJ6qcOaUesR+tqqhnUVQHlRJyD0dfiV0Hxaw=="
+    },
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -7321,6 +7326,13 @@
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
       "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
     },
+    "js-utils": {
+      "version": "github:jitsi/js-utils#0c53500a5120be2aa3fc590f0f932a0d4771920f",
+      "requires": {
+        "bowser": "1.9.1",
+        "js-md5": "0.7.3"
+      }
+    },
     "js-yaml": {
       "version": "3.7.0",
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
diff --git a/package.json b/package.json
index 261dc08cefbe99553d0370045e9381b104838297..2e3227fccc3f9b3821e7fb2b69153276e490bf1c 100644
--- a/package.json
+++ b/package.json
@@ -45,8 +45,8 @@
     "electron-window-state": "4.1.1",
     "history": "4.7.2",
     "jitsi-meet-electron-utils": "github:jitsi/jitsi-meet-electron-utils#1972c3bf0884ace68eb496894dabae593d6dbf49",
-    "js-md5": "0.7.3",
     "mousetrap": "1.6.2",
+    "js-utils": "github:jitsi/js-utils#0c53500a5120be2aa3fc590f0f932a0d4771920f",
     "react": "16.3.2",
     "react-dom": "16.3.2",
     "react-redux": "5.0.7",
diff --git a/webpack.config.js b/webpack.config.js
index 13fce15f5cdeb9a60980d9172fe3ee7f919341ad..62831a631d731b92c80c438d61f98310d3ff7fbe 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -12,7 +12,7 @@ const commonConfig = {
     module: {
         rules: [
             {
-                exclude: /(node_modules)/,
+                exclude: /node_modules(?!\/js-utils)/,
                 loader: 'babel-loader',
                 options: {
                     presets: [