diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 12e9793ed2eea7a2b197f1075fb1d9086c7ad6d5..75440a51f64516ec8b509fc412ddfeffc6553f93 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -358,7 +358,7 @@ class UsersController < ApplicationController
   # Return the user websites that pass validation (only).
   def validated_profile_websites(profile_params)
     sites = profile_params[:user_websites_attributes]
-
+    
     websites = sites.select { |_, v| v[:url].present? &&  v[:url] != ''}
                  .transform_values { |w| w.merge({ url: ensure_protocol(w[:url]) }) }    
 
@@ -377,6 +377,17 @@ class UsersController < ApplicationController
     websites.reject { |_, w| w[:url].nil? }
   end
 
+  def cleaned_profile_websites(profile_params)
+    sites = profile_params[:user_websites_attributes]
+
+    sites.transform_values do |w|
+      w.merge({
+                label: w[:label].present? ? w[:label] : nil,
+                url: w[:url].present? ? w[:url] : nil
+              })
+    end
+  end
+
   # Ensure that a "naked" URL like example.com gets a protocol.
   def ensure_protocol(uri)
     # URI::Generic indicates the user didn't include a protocol
@@ -397,10 +408,9 @@ class UsersController < ApplicationController
                                                   :twitter,
                                                   user_websites_attributes: [:id, :label, :url])
 
-    # Ensure that all user-supplied URLs are valid (strip ones that aren't).
-#    if profile_params[:user_websites_attributes].present?
-#      profile_params[:user_websites_attributes] = validated_profile_websites(profile_params)
-#    end
+    if profile_params[:user_websites_attributes].present?
+      profile_params[:user_websites_attributes] = cleaned_profile_websites(profile_params)
+    end
 
     @user = current_user
 
diff --git a/app/tasks/maintenance/initialize_user_websites_task.rb b/app/tasks/maintenance/initialize_user_websites_task.rb
index 09bc77bddb71b25e1825cbd55459b59b27db246e..0a0b578ef61bd77a8218681ee09366563b19c17f 100644
--- a/app/tasks/maintenance/initialize_user_websites_task.rb
+++ b/app/tasks/maintenance/initialize_user_websites_task.rb
@@ -13,24 +13,23 @@ module Maintenance
       # This should be idempotent, as the same element may be processed more
       # than once if the task is interrupted and resumed.
       unless user.user_websites.where(user_id: user.id, position: 1).size.positive?
-        if user.website
+        if user.website.present?
           UserWebsite.create!(user_id: user.id, position: 1, label: 'website', url: user.website)
         else
-          # Need label for uniqueness constraint; won't show in UI without URL
-          UserWebsite.create!(user_id: user.id, position: 1, label: '1')
+          UserWebsite.create!(user_id: user.id, position: 1)
         end
       end
       unless user.user_websites.where(user_id: user.id, position: 2).size.positive?
-        if user.twitter
+        if user.twitter.present?
           UserWebsite.create!(user_id: user.id, position: 2, label: 'Twitter',
                               url: "https://twitter.com/#{user.twitter}")
         else
-          UserWebsite.create!(user_id: user.id, position: 2, label: '2')
+          UserWebsite.create!(user_id: user.id, position: 2)
         end
       end
       # This check *should* be superfluous, but just in case...
       unless user.user_websites.where(user_id: user.id, position: 3).size.positive?
-        UserWebsite.create!(user_id: user.id, position: 3, label: '3')
+        UserWebsite.create!(user_id: user.id, position: 3)
       end
     end