diff --git a/homeassistant/helpers/entity_platform.py b/homeassistant/helpers/entity_platform.py
index 1864111c0ed19016257e3f4e0e83ce8a577c9575..c44eb96026d528492fa020b238fee299c4722f11 100644
--- a/homeassistant/helpers/entity_platform.py
+++ b/homeassistant/helpers/entity_platform.py
@@ -458,7 +458,9 @@ class EntityPlatform:
             device_id = None
 
             if config_entry_id is not None and device_info is not None:
-                processed_dev_info = {"config_entry_id": config_entry_id}
+                processed_dev_info: dict[str, str | None] = {
+                    "config_entry_id": config_entry_id
+                }
                 for key in (
                     "connections",
                     "default_manufacturer",
@@ -477,18 +479,21 @@ class EntityPlatform:
                         processed_dev_info[key] = device_info[key]  # type: ignore[misc]
 
                 if "configuration_url" in device_info:
-                    configuration_url = str(device_info["configuration_url"])
-                    if urlparse(configuration_url).scheme in [
-                        "http",
-                        "https",
-                        "homeassistant",
-                    ]:
-                        processed_dev_info["configuration_url"] = configuration_url
+                    if device_info["configuration_url"] is None:
+                        processed_dev_info["configuration_url"] = None
                     else:
-                        _LOGGER.warning(
-                            "Ignoring invalid device configuration_url '%s'",
-                            configuration_url,
-                        )
+                        configuration_url = str(device_info["configuration_url"])
+                        if urlparse(configuration_url).scheme in [
+                            "http",
+                            "https",
+                            "homeassistant",
+                        ]:
+                            processed_dev_info["configuration_url"] = configuration_url
+                        else:
+                            _LOGGER.warning(
+                                "Ignoring invalid device configuration_url '%s'",
+                                configuration_url,
+                            )
 
                 try:
                     device = device_registry.async_get_or_create(**processed_dev_info)  # type: ignore[arg-type]
diff --git a/tests/helpers/test_entity_platform.py b/tests/helpers/test_entity_platform.py
index 636ce7a764b9f578703b8102154735a8a6bfe23a..a151a3b7ef3839af5c14282434d0f651e5ac5fae 100644
--- a/tests/helpers/test_entity_platform.py
+++ b/tests/helpers/test_entity_platform.py
@@ -1011,6 +1011,51 @@ async def test_device_info_homeassistant_url(hass, caplog):
     assert device.configuration_url == "homeassistant://config/mqtt"
 
 
+async def test_device_info_change_to_no_url(hass, caplog):
+    """Test device info changes to no URL."""
+    registry = dr.async_get(hass)
+    registry.async_get_or_create(
+        config_entry_id="123",
+        connections=set(),
+        identifiers={("mqtt", "via-id")},
+        manufacturer="manufacturer",
+        model="via",
+        configuration_url="homeassistant://config/mqtt",
+    )
+
+    async def async_setup_entry(hass, config_entry, async_add_entities):
+        """Mock setup entry method."""
+        async_add_entities(
+            [
+                # Valid device info, with homeassistant url
+                MockEntity(
+                    unique_id="qwer",
+                    device_info={
+                        "identifiers": {("mqtt", "1234")},
+                        "configuration_url": None,
+                    },
+                ),
+            ]
+        )
+        return True
+
+    platform = MockPlatform(async_setup_entry=async_setup_entry)
+    config_entry = MockConfigEntry(entry_id="super-mock-id")
+    entity_platform = MockEntityPlatform(
+        hass, platform_name=config_entry.domain, platform=platform
+    )
+
+    assert await entity_platform.async_setup_entry(config_entry)
+    await hass.async_block_till_done()
+
+    assert len(hass.states.async_entity_ids()) == 1
+
+    device = registry.async_get_device({("mqtt", "1234")})
+    assert device is not None
+    assert device.identifiers == {("mqtt", "1234")}
+    assert device.configuration_url is None
+
+
 async def test_entity_disabled_by_integration(hass):
     """Test entity disabled by integration."""
     component = EntityComponent(_LOGGER, DOMAIN, hass, timedelta(seconds=20))