diff --git a/bip39-standalone.html b/bip39-standalone.html
index 43b588a..6be3415 100644
--- a/bip39-standalone.html
+++ b/bip39-standalone.html
@@ -39133,10 +39133,11 @@ var Mnemonic = function(language) {
self.toSeed = function(mnemonic, passphrase) {
passphrase = passphrase || '';
- mnemonic = self.joinWords(self.splitWords(self.normalizeString(mnemonic))); // removes blanks
+ mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
+ var mnemonicNormalized = self.normalizeString(mnemonic);
passphrase = self.normalizeString(passphrase)
passphrase = "mnemonic" + passphrase;
- var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonic);
+ var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
var hashHex = sjcl.codec.hex.fromBits(result);
diff --git a/src/js/jsbip39.js b/src/js/jsbip39.js
index 67ba5a7..025f625 100644
--- a/src/js/jsbip39.js
+++ b/src/js/jsbip39.js
@@ -130,10 +130,11 @@ var Mnemonic = function(language) {
self.toSeed = function(mnemonic, passphrase) {
passphrase = passphrase || '';
- mnemonic = self.joinWords(self.splitWords(self.normalizeString(mnemonic))); // removes blanks
+ mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
+ var mnemonicNormalized = self.normalizeString(mnemonic);
passphrase = self.normalizeString(passphrase)
passphrase = "mnemonic" + passphrase;
- var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonic);
+ var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
var hashHex = sjcl.codec.hex.fromBits(result);