diff --git a/app/build.gradle b/app/build.gradle
index 6676d8f7..1d441238 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -59,6 +59,8 @@ dependencies {
     compile "com.squareup.okhttp3:okhttp:$rootProject.ext.okHttpVersion"
     compile "com.jakewharton.timber:timber:$rootProject.ext.timberVersion"
 
+    compile 'com.nulab-inc:zxcvbn:1.2.3'
+
     testCompile "junit:junit:$rootProject.ext.junitVersion"
     testCompile "org.mockito:mockito-all:$rootProject.ext.mockitoVersion"
     testCompile "com.squareup.okhttp3:mockwebserver:$rootProject.ext.okHttpVersion"
diff --git a/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java b/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java
index 1f1310cf..f5aa5664 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java
@@ -21,7 +21,9 @@ import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.design.widget.TextInputLayout;
 import android.support.v4.app.Fragment;
+import android.text.Editable;
 import android.text.InputType;
+import android.text.TextWatcher;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -37,6 +39,8 @@ import com.m2049r.xmrwallet.widget.Toolbar;
 import com.m2049r.xmrwallet.model.Wallet;
 import com.m2049r.xmrwallet.model.WalletManager;
 import com.m2049r.xmrwallet.util.Helper;
+import com.nulabinc.zxcvbn.Strength;
+import com.nulabinc.zxcvbn.Zxcvbn;
 
 import java.io.File;
 import java.text.ParseException;
@@ -129,7 +133,7 @@ public class GenerateFragment extends Fragment {
         });
 
         Helper.showKeyboard(getActivity());
-//##############
+
         etWalletName.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
             public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                 if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_NEXT)) {
@@ -256,11 +260,61 @@ public class GenerateFragment extends Fragment {
             }
         });
 
+        etWalletPassword.getEditText().addTextChangedListener(new TextWatcher() {
+            @Override
+            public void afterTextChanged(Editable editable) {
+                checkPassword();
+            }
+
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+            }
+        });
+
         etWalletName.requestFocus();
+        initZxcvbn();
 
         return view;
     }
 
+    Zxcvbn zxcvbn = new Zxcvbn();
+
+    // initialize zxcvbn engine in background thread
+    private void initZxcvbn() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                zxcvbn.measure("");
+            }
+        }).start();
+    }
+
+    private void checkPassword() {
+        String password = etWalletPassword.getEditText().getText().toString();
+        if (!password.isEmpty()) {
+            Strength strength = zxcvbn.measure(password);
+            int msg;
+            double guessesLog10 = strength.getGuessesLog10();
+            if (guessesLog10 < 10)
+                msg = R.string.password_weak;
+            else if (guessesLog10 < 11)
+                msg = R.string.password_fair;
+            else if (guessesLog10 < 12)
+                msg = R.string.password_good;
+            else if (guessesLog10 < 13)
+                msg = R.string.password_strong;
+            else
+                msg = R.string.password_very_strong;
+            etWalletPassword.setError(getResources().getString(msg));
+        } else {
+            etWalletPassword.setError(null);
+        }
+    }
+
     private boolean checkName() {
         String name = etWalletName.getEditText().getText().toString();
         boolean ok = true;
diff --git a/app/src/main/res/layout/layout_fabmenu.xml b/app/src/main/res/layout/layout_fabmenu.xml
index 826c4d9c..35de8eec 100644
--- a/app/src/main/res/layout/layout_fabmenu.xml
+++ b/app/src/main/res/layout/layout_fabmenu.xml
@@ -113,7 +113,8 @@
             android:layout_height="wrap_content"
             android:layout_gravity="bottom|end"
             android:layout_marginBottom="88dp"
-            android:layout_marginEnd="16dp">
+            android:layout_marginEnd="16dp"
+            android:background="?android:attr/selectableItemBackgroundBorderless">
 
             <TextView
                 android:id="@+id/fabSeedT"
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index ce523337..2e48bf1e 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -13,6 +13,12 @@
     <string name="menu_archive">Archivar</string>
     <string name="menu_backup">Copia de seguridad</string>
 
+    <string name="password_weak">Sigue escribiendo &#8230;</string>
+    <string name="password_fair">Mas o menos.</string>
+    <string name="password_good">Puedes hacerlo mejor.</string>
+    <string name="password_strong">Casi &#8230;</string>
+    <string name="password_very_strong">¡Bien ahí, hacker nivel 4!</string>
+
     <string name="label_login_wallets">Monederos</string>
     <string name="label_donate">Donar</string>
     <string name="label_ok">Aceptar</string>
@@ -126,7 +132,7 @@
 
     <string name="generate_title">Crear monedero</string>
     <string name="generate_name_hint">Nombre del monedero</string>
-    <string name="generate_password_hint">Contraseña del monedero</string>
+    <string name="generate_password_hint">Frase de Contraseña</string>
     <string name="generate_buttonGenerate">¡Házme ya un monedero!</string>
     <string name="generate_seed">Semilla Mnemotécnica</string>
     <string name="generate_button_accept">¡He apuntado estas 25 palabras!</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fd4e8191..6bf7e758 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -15,6 +15,12 @@
     <string name="menu_archive">Archive</string>
     <string name="menu_backup">Backup</string>
 
+    <string name="password_weak">Continue typing &#8230;</string>
+    <string name="password_fair">Meh &#8230;</string>
+    <string name="password_good">C\'mon, you can do better!</string>
+    <string name="password_strong">Getting there &#8230;</string>
+    <string name="password_very_strong">Yeah baby, h4x0r style!</string>
+
     <string name="label_login_wallets">Wallets</string>
     <string name="label_donate">Donate</string>
     <string name="label_ok">OK</string>
@@ -197,7 +203,7 @@
 
     <string name="generate_title">Create Wallet</string>
     <string name="generate_name_hint">Wallet Name</string>
-    <string name="generate_password_hint">Wallet Password</string>
+    <string name="generate_password_hint">Wallet Passphrase</string>
     <string name="generate_buttonGenerate">Make me a wallet already!</string>
     <string name="generate_seed">Mnemonic Seed</string>
     <string name="generate_button_accept">I have noted these 25 words!</string>