diff --git a/frontend/app/feed/library/page.tsx b/frontend/app/feed/library/page.tsx
index df622f8..5e271b2 100644
--- a/frontend/app/feed/library/page.tsx
+++ b/frontend/app/feed/library/page.tsx
@@ -144,12 +144,16 @@ export default async function LibraryPage() {
}}
>
-

+

{
+ e.target.onError = null; // Prevent infinite loop
+ e.target.src = 'https://i.ytimg.com/vi/default/hqdefault.jpg'; // Fallback to YouTube's default thumbnail
+ }}
+ />
{video.duration && (
{video.duration}
)}
diff --git a/frontend/app/feed/subscriptions/page.tsx b/frontend/app/feed/subscriptions/page.tsx
index 272173c..9d114c9 100644
--- a/frontend/app/feed/subscriptions/page.tsx
+++ b/frontend/app/feed/subscriptions/page.tsx
@@ -119,11 +119,15 @@ export default async function SubscriptionsPage() {
className="card-hover-lift"
>
-

+

{
+ e.target.onError = null; // Prevent infinite loop
+ e.target.src = 'https://i.ytimg.com/vi/default/hqdefault.jpg'; // Fallback to YouTube's default thumbnail
+ }}
+ />
{video.duration && (
{video.duration}
)}
diff --git a/frontend/app/search/page.tsx b/frontend/app/search/page.tsx
index e196d27..15be355 100644
--- a/frontend/app/search/page.tsx
+++ b/frontend/app/search/page.tsx
@@ -82,12 +82,16 @@ async function SearchResults({ query }: { query: string }) {
{/* Thumbnail */}
{/* eslint-disable-next-line @next/next/no-img-element */}
-

+

{
+ e.target.onError = null; // Prevent infinite loop
+ e.target.src = 'https://i.ytimg.com/vi/default/hqdefault.jpg'; // Fallback to YouTube's default thumbnail
+ }}
+ />
{v.duration && (
{v.duration}
@@ -108,10 +112,18 @@ async function SearchResults({ query }: { query: string }) {
- {v.avatar_url ? (
- // eslint-disable-next-line @next/next/no-img-element
-

- ) : firstLetter}
+ {v.avatar_url ? (
+ // eslint-disable-next-line @next/next/no-img-element
+

{
+ e.target.onError = null; // Prevent infinite loop
+ e.target.src = 'https://i.ytimg.com/img/channels/c_ip_m_default.jpg'; // Fallback to YouTube's default channel avatar
+ }}
+ />
+ ) : firstLetter}
{v.uploader}
diff --git a/frontend/app/watch/Comments.tsx b/frontend/app/watch/Comments.tsx
index df329d1..b0aebcb 100644
--- a/frontend/app/watch/Comments.tsx
+++ b/frontend/app/watch/Comments.tsx
@@ -115,13 +115,17 @@ export default function Comments({ videoId }: CommentsProps) {
{comments.map((c) => (
-
+ {
+ e.target.onError = null; // Prevent infinite loop
+ e.target.src = 'https://i.ytimg.com/img/channels/c_ip_m_default.jpg'; // Fallback to YouTube's default channel avatar
+ }}
+ />
diff --git a/frontend/app/watch/PlaylistPanel.tsx b/frontend/app/watch/PlaylistPanel.tsx
index dfcad3f..a02bb5e 100644
--- a/frontend/app/watch/PlaylistPanel.tsx
+++ b/frontend/app/watch/PlaylistPanel.tsx
@@ -93,13 +93,17 @@ export default function PlaylistPanel({ videos, currentVideoId, listId, title }:
borderRadius: '8px',
overflow: 'hidden'
}}>
-
+
{
+ e.target.onError = null; // Prevent infinite loop
+ e.target.src = 'https://i.ytimg.com/vi/default/hqdefault.jpg'; // Fallback to YouTube's default thumbnail
+ }}
+ />
{video.duration && (
-

+

{
+ e.target.onError = null; // Prevent infinite loop
+ e.target.src = 'https://i.ytimg.com/vi/default/hqdefault.jpg'; // Fallback to YouTube's default thumbnail
+ }}
+ />
{video.duration && (
{video.duration}
diff --git a/frontend/app/watch/VideoPlayer.tsx b/frontend/app/watch/VideoPlayer.tsx
index bd4f389..de55024 100644
--- a/frontend/app/watch/VideoPlayer.tsx
+++ b/frontend/app/watch/VideoPlayer.tsx
@@ -557,18 +557,22 @@ export default function VideoPlayer({ videoId, title }: VideoPlayerProps) {
)}
-
+