diff --git a/frontend/src/components/PlexBrowse.tsx b/frontend/src/components/PlexBrowse.tsx
index ab80ddb..02a32a7 100644
--- a/frontend/src/components/PlexBrowse.tsx
+++ b/frontend/src/components/PlexBrowse.tsx
@@ -2,7 +2,14 @@ import { lazy, Suspense, useEffect, useLayoutEffect, useRef, useState, type CSSP
import { useTranslation } from "react-i18next";
import { useInfiniteQuery, useQuery, useQueryClient } from "@tanstack/react-query";
import { ArrowLeft, CheckCircle2, Info, ListPlus, Play } from "lucide-react";
-import { api, type PlexCard, type PlexFilters, type PlexPerson } from "../lib/api";
+import {
+ api,
+ EMPTY_PLEX_FILTERS,
+ plexFilterCount,
+ type PlexCard,
+ type PlexFilters,
+ type PlexPerson,
+} from "../lib/api";
import { useDebounced } from "../lib/useDebounced";
import { useHistorySubview } from "../lib/history";
import PlexPlaylistAdd, { type PlexAddTarget } from "./PlexPlaylistAdd";
@@ -267,7 +274,21 @@ export default function PlexBrowse({
{browseQ.isLoading ? (
{t("plex.loading")}
) : items.length === 0 ? (
-
{dq ? t("plex.noMatches") : t("plex.empty")}
+ dq && plexFilterCount(filters) > 0 ? (
+ // A search that comes up empty WHILE filters are active is usually the filters, not the
+ // query — say so and offer a one-click escape, instead of a bare "No matches".
+