diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py
index 583db4472d4b3472d5db116090a8776484ba56f0..5406b11fccb4a52f1fd04c42d4407d92b1bc57d0 100644
--- a/homeassistant/components/tts/__init__.py
+++ b/homeassistant/components/tts/__init__.py
@@ -1086,6 +1086,7 @@ def websocket_list_engines(
     language = msg.get("language")
     providers = []
     provider_info: dict[str, Any]
+    entity_domains: set[str] = set()
 
     for entity in component.entities:
         provider_info = {
@@ -1097,6 +1098,8 @@ def websocket_list_engines(
                 language, entity.supported_languages, country
             )
         providers.append(provider_info)
+        if entity.platform:
+            entity_domains.add(entity.platform.platform_name)
     for engine_id, provider in manager.providers.items():
         provider_info = {
             "engine_id": engine_id,
@@ -1106,6 +1109,8 @@ def websocket_list_engines(
             provider_info["supported_languages"] = language_util.matches(
                 language, provider.supported_languages, country
             )
+        if engine_id in entity_domains:
+            provider_info["deprecated"] = True
         providers.append(provider_info)
 
     connection.send_message(
diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py
index 05c19622e84c8093d6b652943d4d3daf16f0bd29..dbbcdbd40f64353af12b85ec502dd7ddd7247fd3 100644
--- a/tests/components/tts/test_init.py
+++ b/tests/components/tts/test_init.py
@@ -31,6 +31,7 @@ from .common import (
     SUPPORT_LANGUAGES,
     TEST_DOMAIN,
     MockProvider,
+    MockTTS,
     MockTTSEntity,
     get_media_source_url,
     mock_config_entry_setup,
@@ -38,7 +39,13 @@ from .common import (
     retrieve_media,
 )
 
-from tests.common import async_mock_service, mock_restore_cache
+from tests.common import (
+    MockModule,
+    async_mock_service,
+    mock_integration,
+    mock_platform,
+    mock_restore_cache,
+)
 from tests.typing import ClientSessionGenerator, WebSocketGenerator
 
 ORIG_WRITE_TAGS = tts.SpeechManager.write_tags
@@ -1635,6 +1642,53 @@ async def test_ws_list_engines(
     }
 
 
+async def test_ws_list_engines_deprecated(
+    hass: HomeAssistant,
+    hass_ws_client: WebSocketGenerator,
+    mock_tts_entity: MockTTSEntity,
+) -> None:
+    """Test listing tts engines.
+
+    This test asserts the deprecated flag is set on a legacy engine whose integration
+    also provides tts entities.
+    """
+
+    mock_provider = MockProvider(DEFAULT_LANG)
+    mock_provider_2 = MockProvider(DEFAULT_LANG)
+    mock_integration(hass, MockModule(domain="test"))
+    mock_platform(hass, "test.tts", MockTTS(mock_provider))
+    mock_integration(hass, MockModule(domain="test_2"))
+    mock_platform(hass, "test_2.tts", MockTTS(mock_provider_2))
+    await async_setup_component(
+        hass, "tts", {"tts": [{"platform": "test"}, {"platform": "test_2"}]}
+    )
+    await mock_config_entry_setup(hass, mock_tts_entity)
+
+    client = await hass_ws_client()
+
+    await client.send_json_auto_id({"type": "tts/engine/list"})
+
+    msg = await client.receive_json()
+    assert msg["success"]
+    assert msg["result"] == {
+        "providers": [
+            {
+                "engine_id": "tts.test",
+                "supported_languages": ["de_CH", "de_DE", "en_GB", "en_US"],
+            },
+            {
+                "deprecated": True,
+                "engine_id": "test",
+                "supported_languages": ["de_CH", "de_DE", "en_GB", "en_US"],
+            },
+            {
+                "engine_id": "test_2",
+                "supported_languages": ["de_CH", "de_DE", "en_GB", "en_US"],
+            },
+        ]
+    }
+
+
 @pytest.mark.parametrize(
     ("setup", "engine_id"),
     [