404s

Craft Beautiful 404 Pages with AI

Describe what you want, and we'll generate custom 404 pages for your website. Get both HTML/CSS and Next.js component versions instantly.

Your 404 Pages

404 Page • 4 minutes ago
"use client";
import Image from 'next/image';

export default function Custom404() {
  return (
    <div className="flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-sky-100 to-blue-100">
      <div className="text-center p-10 bg-white rounded-lg shadow-lg">
          <Image src="/may-month-illustration.svg" alt="May Month Illustration" width={200} height={200} className="mb-4"/> {/* Placeholder for illustration */}
        <h1 className="text-5xl font-bold text-blue-500 mb-4">404</h1>
        <p className="text-lg text-gray-600 mb-6">Oops! The page you're looking for doesn't exist.</p>
        <button className="px-6 py-3 bg-blue-500 text-white rounded-lg hover:bg-blue-700">
          Go Home
        </button>
      </div>
    </div>
  );
}

may month data

404 Page • 10 minutes ago
// use client directive is needed because of the use of animation
"use client"

import Image from 'next/image'
import Link from 'next/link'

export default function Custom404() {
  return (
    <div className="flex flex-col items-center justify-center min-h-screen bg-gradient-to-r from-[#28343b] to-[#191e23] text-white">
      <div className="p-8 rounded-lg bg-white/10 shadow-lg">
        {/* Image: Replace with actual image.  Consider a celebratory New Year's image/illustration here */}
        <Image src="/newyear.svg" width={200} height={200} alt="404 illustration" className="mb-4" />

        <h1 className="text-4xl font-bold mb-4">Oops! Page Not Found</h1>
        <p className="text-lg mb-8">It seems like you've stumbled upon a page that's gone missing. Happy New Year!</p>

        <Link href="/" className="inline-block px-6 py-3 bg-blue-500 text-white font-medium rounded-md hover:bg-blue-700 transition duration-300">
          Go back to Home
        </Link>
      </div>
    </div>
  )
}

new year

404 Page • 44 minutes ago
"use client";
import Link from 'next/link';

export default function Custom404() {
  return (
    <div className="flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-emerald-200 to-teal-100">
      <div className="bg-white p-10 rounded-lg shadow-lg w-96">
        {/* Image of a friendly frog here.  Replace with <img src="/frog.png" alt="Frog"/>  */}
        <h1 className="text-4xl font-bold text-emerald-600 mb-4">404 - Page Not Found!</h1>
        <p className="text-lg text-gray-700 mb-8">Oops! Looks like you've hopped onto a page that doesn't exist. Ribbit!</p>
        <Link href="/" className="bg-emerald-500 hover:bg-emerald-700 text-white font-bold py-2 px-4 rounded">Go back home</Link>
      </div>
    </div>
  )
}

new frog theme

404 Page • about 1 hour ago
'use client';
import Image from 'next/image';
import Link from 'next/link';


export default function Custom404() {
  return (
    <div className="flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-[#66ccff] to-[#3399cc]">
      <Image
        src="/forest-background.jpg"  // Replace with actual image path
        alt="Forest Background"
        width={1920}
        height={1080}
        className="absolute inset-0 object-cover opacity-20 z-[-1]"
      />
      <div className="bg-white/10 p-10 rounded-lg shadow-lg w-full max-w-md text-white">
          <div className="animate-bounce mb-4"> {/*simple animation*/}
            <Image
              src="/bird.png"  // Replace with actual image path
              alt="Bird"
              width={100}
              height={100}
            />
          </div>
        <h1 className="text-4xl font-bold mb-4">Oops! Page Not Found</h1>
        <p className="text-lg mb-8">Looks like you've taken a wrong turn in the forest. Don't worry, we'll guide you back.</p>
        <Link href="/" className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Return Home</Link>
      </div>
    </div>
  );
}

forest and bird themed

404 Page • about 1 hour ago
"use client";
import Image from 'next/image';

export default function Custom404() {
  return (
    <div className="flex flex-col items-center justify-center min-h-screen bg-gradient-to-r from-yellow-400 to-orange-500 text-white">
      <div className="p-10 bg-white/10 rounded-lg shadow-lg">
        <h1 className="text-4xl font-bold mb-4">Oops! Page Not Found</h1>
        <p className="text-lg mb-8">The page you're looking for might have moved or doesn't exist.</p>
        {/* Add an Image here.  Replace with your actual image path. */}
        {/* <Image src="/sun.png" alt="June themed sun" width={200} height={200} className="mb-4 rounded-full"/> */}
        <a href="/" className="bg-white px-6 py-3 rounded-lg text-orange-500 font-medium hover:bg-yellow-400 hover:text-white transition-all">Go back to Home</a>
      </div>
    </div>
  );
}

a june themed

404 Page • 1 day ago
'use client'
import Link from 'next/link';
import { useEffect } from 'react';

export default function NotFound() {

  useEffect(() => {
    const createStar = () => {
      const star = document.createElement('div');
      star.classList.add('star', 'absolute', 'bg-white', 'rounded-full', 'animate-twinkle');
      star.style.width = `${Math.random() * 3}px`;
      star.style.height = `${Math.random() * 3}px`;
      star.style.top = `${Math.random() * 100}vh`;
      star.style.left = `${Math.random() * 100}vw`;
      star.style.animationDelay = `${Math.random() * 2}s`;
      document.body.appendChild(star);
    };

    const numberOfStars = 50;
    for (let i = 0; i < numberOfStars; i++) {
      createStar();
    }

    return () => {
      // Cleanup: Remove stars when the component unmounts
      const stars = document.querySelectorAll('.star');
      stars.forEach(star => star.remove());
    };
  }, []);

  return (
    <div className="flex items-center justify-center h-screen bg-gradient-to-b from-pink-500 to-pink-200 overflow-hidden">
      <div className="container text-center text-white shadow-lg">
        <h1 className="text-5xl font-bold mb-2 animate-glow">404</h1>
        <p className="text-xl mb-8">Oops! The page you're looking for can't be found.</p>
        <Link href="/" className="inline-block px-8 py-4 bg-white bg-opacity-20 rounded-md transition-colors hover:bg-opacity-40">
          Go back home
        </Link>
      </div>
      <style jsx global>{`
        .animate-glow {
          animation: glow 2s ease-in-out infinite alternate;
        }
        @keyframes glow {
          from {
            text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #e60073, 0 0 40px #e60073, 0 0 50px #e60073, 0 0 60px #e60073, 0 0 70px #e60073;
          }
          to {
            text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 15px #e60073, 0 0 20px #e60073, 0 0 25px #e60073, 0 0 30px #e60073, 0 0 35px #e60073;
          }
        }

        .animate-twinkle {
          animation: twinkle 2s infinite;
        }

        @keyframes twinkle {
          0% { opacity: 0.2; }
          50% { opacity: 1; }
          100% { opacity: 0.2; }
        }
      `}</style>
    </div>
  );
}

new pink

404 Page • 1 day ago
'use client'
import React from 'react';
import Link from 'next/link';

const NotFound = () => {
  return (
    <div className="min-h-screen flex items-center justify-center bg-gradient-to-b from-pink-500 to-pink-300 text-white">
      <div className="container mx-auto px-4 py-8 rounded-lg shadow-xl bg-opacity-10 backdrop-blur-md">
        {/* Animated Heart Icon */}
        <div className="text-6xl mb-4 animate-pulse">💖</div>
        <h1 className="text-5xl md:text-7xl font-bold mb-4 text-shadow">404</h1>
        <p className="text-xl md:text-2xl mb-8">Oops! The page you are looking for could not be found.</p>
        <Link href="/" className="bg-white text-pink-500 px-6 py-3 rounded-full font-semibold hover:bg-pink-100 transition-colors">
          Go Home
        </Link>
      </div>
    </div>
  );
};

export default NotFound;

new pink themed

404 Page • 1 day ago
'use client'

import Link from 'next/link';

export default function NotFound() {
  return (
    <div className="flex flex-col items-center justify-center h-screen bg-gradient-to-b from-teal-100 to-blue-100 overflow-hidden">
      <div className="text-center">
        <h1 className="text-6xl font-extrabold text-gray-800 mb-4">404</h1>
        <p className="text-xl text-gray-600 mb-8">
          Oops! The page you're looking for isn't here.
        </p>
        <Link href="/" className="inline-block px-6 py-3 bg-red-500 text-white font-semibold rounded-md shadow-md hover:bg-red-600 transition-colors duration-300">
          Go Home
        </Link>
      </div>

        {/* Ocean waves animation using Tailwind CSS classes for styling */}
      <div className="absolute bottom-0 left-0 w-full h-1/12 bg-blue-500 overflow-hidden">
        <div className="absolute w-[6400px] h-48 bg-[url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/85486/wave.svg)] animate-wave" style={{top: '-198px'}}></div>
        <div className="absolute w-[6400px] h-48 bg-[url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/85486/wave.svg)] animate-wave2" style={{top: '-175px'}}></div>
      </div>
    </div>
  );
}

ocean type themed

404 Page • 2 days ago
'use client'
import Link from 'next/link';
import { useEffect } from 'react';

export default function NotFound() {
  useEffect(() => {
    // Optional: Add some client-side logic here, like logging or analytics
    console.log('404 Page Not Found');
  }, []);

  return (
    <div className="min-h-screen flex flex-col items-center justify-center bg-gradient-to-b from-yellow-200 to-brown-700 text-white overflow-hidden">
      {/* Animated Sun/Circle */}
      <div className="absolute w-40 h-40 bg-yellow-400 rounded-full top-1/10 left-1/10 animate-pulse shadow-lg"></div>

      {/* Animated Leaves */}
      <div className="absolute w-7 h-7 bg-brown-700 rounded-sm rotate-45 animate-fall top-1/10 left-1/5 animation-delay-0"></div>
      <div className="absolute w-7 h-7 bg-brown-700 rounded-sm rotate-45 animate-fall top-3/10 left-4/5 animation-delay-500"></div>
      <div className="absolute w-7 h-7 bg-brown-700 rounded-sm rotate-45 animate-fall top-1/2 left-1/3 animation-delay-1000"></div>

      <style jsx global>{`
        @keyframes fall {
            0% {
                transform: translateY(0) rotate(45deg);
                opacity: 1;
            }
            100% {
                transform: translateY(100vh) rotate(45deg);
                opacity: 0;
            }
        }

        .animate-fall {
          animation: fall 7s linear infinite;
        }

      `}</style>

      <div className="container p-8">
        <h1 className="text-6xl font-bold mb-4 text-shadow">404</h1>
        <p className="text-2xl mb-8">Oops! The page you're looking for can't be found.</p>
        <Link href="/" className="inline-block px-6 py-3 bg-brown-700 hover:bg-brown-800 text-white font-bold rounded-md transition-colors">
          Go back home
        </Link>
      </div>
    </div>
  );
}

find and pick brown and yellow theme

404 Page • 2 days ago
'use client'

import Link from 'next/link';
import React from 'react';

export default function NotFound() {
  return (
    <div className="min-h-screen flex items-center justify-center bg-gradient-to-b from-pink-200 to-pink-100 overflow-hidden relative">
      {/* Cloud animations */}
      <div className="absolute top-1/4 left-1/4 w-40 opacity-50 animate-drift">
        <img src="https://www.svgrepo.com/show/510987/cloud-weather-clouds.svg" alt="Cloud" />
      </div>
      <div className="absolute top-1/3 right-1/4 w-52 opacity-50 animate-drift animation-delay-3">
        <img src="https://www.svgrepo.com/show/510987/cloud-weather-clouds.svg" alt="Cloud" />
      </div>
      <div className="absolute bottom-1/4 left-1/3 w-32 opacity-50 animate-drift animation-delay-6">
        <img src="https://www.svgrepo.com/show/510987/cloud-weather-clouds.svg" alt="Cloud" />
      </div>


      <div className="bg-white bg-opacity-80 rounded-xl shadow-lg p-8 text-center relative z-10">
        <h1 className="text-6xl font-bold text-pink-500 mb-4 drop-shadow-md">404</h1>
        <p className="text-lg text-purple-600 mb-6">Oops! You seem to have wandered into a land of fluffy dreams.</p>
        <Link href="/" className="inline-block px-6 py-3 bg-pink-400 text-white font-semibold rounded-md hover:bg-pink-500 transition-colors">
          Go back home
        </Link>
      </div>

      <style jsx global>{`
        @keyframes drift {
          0% {
            transform: translateX(0);
          }
          100% {
            transform: translateX(calc(100vw + 150px));
          }
        }

        .animate-drift {
          animation: drift 20s linear infinite;
        }

        .animation-delay-3 {
          animation-delay: 3s;
        }

        .animation-delay-6 {
          animation-delay: 6s;
        }
      `}</style>
    </div>
  );
}

create pink themed cute childish one

404 Page • 2 days ago
'use client'

import { useEffect, useState } from 'react';

export default function NotFound() {
  const [opacity, setOpacity] = useState(0.3);

  useEffect(() => {
    const intervalId = setInterval(() => {
      setOpacity(prev => (Math.random() > 0.5 ? 0.1 : 0.3));
    }, 500);

    return () => clearInterval(intervalId);
  }, []);

  return (
    <div className="flex items-center justify-center h-screen bg-black text-white font-sans overflow-hidden relative">
      <div
        className="absolute top-0 left-0 w-full h-full bg-cover bg-center z-[-1]"
        style={{
          backgroundImage: "url('https://images.unsplash.com/photo-1519682337118-d549ea413684?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D')",
          opacity: opacity,
          transition: 'opacity 0.3s ease'
        }}
      ></div>
      <div className="text-center">
        <h1 className="text-6xl md:text-8xl font-bold mb-4 text-red-500 shadow-lg">404</h1>
        <p className="text-lg md:text-xl mb-6 text-gray-300">You've stumbled into the darkness.</p>
        <p className="text-lg md:text-xl mb-6 text-gray-300">This page is lost... just like you're about to be.</p>
        <a href="/" className="text-red-400 hover:text-white transition-colors duration-300 border-b border-red-400 hover:border-white pb-1">
          Escape back to safety
        </a>
      </div>
    </div>
  );
}

create a horror themed one

404 Page • 2 days ago
'use client'

import React from 'react';
import Image from 'next/image';

const NotFound = () => {
  return (
    <div className="relative h-screen bg-black text-white flex flex-col justify-center items-center overflow-hidden">
      {/* Background Image */}
      <div className="absolute inset-0 z-0">
        <Image
          src="https://images.unsplash.com/photo-1506318137072-c5a3efc80807?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" // Replace with your space image
          alt="Space Background"
          layout="fill"
          objectFit="cover"
          className="opacity-30 animate-pan"
        />
      </div>

      {/* Content */}
      <div className="relative z-10 text-center">
        <h1 className="text-6xl md:text-8xl font-bold mb-4 text-shadow">404</h1>
        <p className="text-xl md:text-2xl mb-8 text-shadow">Houston, we have a problem. The page you're looking for seems to have drifted off into the cosmos.</p>
        <a href="/" className="inline-block bg-transparent hover:bg-sky-500 text-sky-500 font-semibold py-2 px-4 border border-sky-500 hover:border-transparent rounded text-lg transition-colors duration-300">
          Return to Earth
        </a>
      </div>
    </div>
  );
};

export default NotFound;

A space themed 404 page