diff --git a/libs/web/luasrc/cbi.lua b/libs/web/luasrc/cbi.lua
index 6c9e7a544f..50b594b4ce 100644
--- a/libs/web/luasrc/cbi.lua
+++ b/libs/web/luasrc/cbi.lua
@@ -1662,7 +1662,9 @@ function DynamicList.write(self, section, value)
 	elseif self.cast == "table" and type(value) == "string" then
 		local x, t = { }
 		for x in value:gmatch("%S+") do
-			t[#t+1] = x
+			if #x > 0 then
+				t[#t+1] = x
+			end
 		end
 		value = t
 	end
@@ -1677,7 +1679,9 @@ function DynamicList.cfgvalue(self, section)
 		local x
 		local t = { }
 		for x in value:gmatch("%S+") do
-			t[#t+1] = x
+			if #x > 0 then
+				t[#t+1] = x
+			end
 		end
 		value = t
 	end
diff --git a/libs/web/luasrc/view/cbi/dynlist.htm b/libs/web/luasrc/view/cbi/dynlist.htm
index 5f57941b80..90f3f1e905 100644
--- a/libs/web/luasrc/view/cbi/dynlist.htm
+++ b/libs/web/luasrc/view/cbi/dynlist.htm
@@ -18,12 +18,13 @@ $Id$
 	local vals = self:cfgvalue(section) or {}
 	for i=1, #vals + 1 do
 		local val = vals[i]
+		if val and #val > 0 then
 %>
 	<input class="cbi-input-text" value="<%=pcdata(val)%>" onchange="cbi_d_update(this.id)" type="text"<%=
 		attr("id", cbid .. "." .. i) .. attr("name", cbid) .. ifattr(self.size, "size") ..
 		ifattr(i == 1 and self.placeholder, "placeholder", self.placeholder)
 	%> /><br />
-<% end %>
+<% end end %>
 </div>
 <script type="text/javascript">
 cbi_dynlist_init('<%=cbid%>');