diff --git a/src/main/java/org/htmlunit/javascript/host/Storage.java b/src/main/java/org/htmlunit/javascript/host/Storage.java
index 6fac8864d8..7077db25dc 100644
--- a/src/main/java/org/htmlunit/javascript/host/Storage.java
+++ b/src/main/java/org/htmlunit/javascript/host/Storage.java
@@ -35,6 +35,7 @@
* @author Ahmed Ashour
* @author Marc Guillemot
* @author Ronald Brill
+ * @author Kanoko Yamamoto
*/
@JsxClass
public class Storage extends HtmlUnitScriptable {
@@ -164,7 +165,8 @@ public Object getItem(final String key) {
*/
@JsxFunction
public void setItem(final String key, final String data) {
- final long storeSize = storeSize_ + data.length();
+ final String existingData = store_.get(key);
+ final long storeSize = storeSize_ + data.length() - (existingData != null ? existingData.length() : 0);
if (storeSize > STORE_SIZE_KIMIT) {
throw JavaScriptEngine.throwAsScriptRuntimeEx(
new DOMException((short) 22, "QuotaExceededError: Failed to execute 'setItem' on 'Storage': "