AllTechnologyProgrammingWeb DevelopmentAI
    CODING IS POWERFUL!
    Back to Blog

    Fixing Invalid Src Prop Error - A Next.js Image Optimization Guide

    26 min read
    April 20, 2025
    Fixing Invalid Src Prop Error - A Next.js Image Optimization Guide

    Table of Contents

    • Invalid Src Prop Error
    • Understanding the Error
    • Why It Actually Happens
    • Configuring Next.config.js
    • Step-by-Step Fix Guide
    • Handling External Images
    • Optimize Images in Next.js
    • Advanced Optimization Tips
    • Troubleshooting Steps
    • Best Practices Summary
    • People Also Ask for

    Invalid Src Prop Error

    If you're developing a Next.js application and utilizing the next/image component, you might encounter the "Invalid src prop" error when dealing with images, especially external ones. This error typically manifests as:

                    
    Error: Invalid src prop (....) on <next/image>, hostname "example.com" is not configured under images in your next.config.js
                    
              

    This error message indicates that Next.js image optimization is encountering a problem because the hostname of the image source is not recognized as allowed in your Next.js configuration. Let's understand why this happens.

    Understanding the Error

    The next/image component in Next.js is designed for performance and security. It automatically optimizes images, resizes them for different devices, and serves them in modern formats like WebP whenever possible. To maintain security and efficiency, Next.js enforces restrictions on image sources. By default, it only allows images from domains that are explicitly defined in your next.config.js file.

    When you attempt to use an image from a domain that is not in the allowed list, Next.js throws the "Invalid src prop" error, preventing the image from loading. This mechanism is in place to protect your application from potential security vulnerabilities and to ensure that the image optimization process is applied only to trusted sources.

    Why It Actually Happens

    The core reason for this error is Next.js's security feature combined with its image optimization pipeline. When you use next/image, Next.js needs to process the image, potentially resizing and optimizing it. For external images, Next.js needs to know that it's safe to fetch and process images from the specified domain.

    If you are linking to an image hosted on a third-party service, or even on a different subdomain of your own, and you haven't explicitly told Next.js to trust that domain, you'll encounter this error. This is a deliberate design choice to enhance security and control over image sources in Next.js applications.


    Understanding the Error

    When working with images in Next.js, especially using the next/image component, you might encounter the "Invalid src prop" error. This error typically arises when you attempt to load images from external websites or services. Let's break down what this error means and why it happens.

    The error message usually looks something like this:

            
    Error: Invalid src prop (image URL) on `next/image`, hostname "domain.com" is not configured under images in your `next.config.js`
            
        

    This message is Next.js's way of telling you that it doesn't trust the domain from which you're trying to load the image. By default, for security and optimization reasons, Next.js restricts image loading to explicitly allowed domains. This restriction is a core part of Next.js's image optimization strategy.

    The next/image component is designed to automatically optimize images. It resizes them, serves them in modern formats like WebP (if supported by the browser), and can even lazy load them. To perform these optimizations efficiently and securely, Next.js needs to know which external image sources are safe to interact with.

    Therefore, when you see the "Invalid src prop" error, it means you are trying to use an image from a domain that hasn't been explicitly listed in your next.config.js file under the images configuration. This configuration is where you tell Next.js which external domains are permitted for image loading and optimization.

    In essence, Next.js is proactively preventing potential security risks and ensuring efficient image processing by requiring you to declare authorized image sources. Understanding this security measure is the first step in resolving the "Invalid src prop" error and properly configuring image handling in your Next.js application.


    Why It Actually Happens

    Encountering the "Invalid src prop" error in Next.js when working with images, especially external ones, can be a common roadblock. Let's understand why this error occurs.

    Next.js's Image component is designed for efficient image optimization. It automatically optimizes, resizes, and serves images in modern formats to enhance your application's performance. To maintain security and efficiency, Next.js enforces a restriction: it only loads images from domains that are explicitly listed as trusted in your next.config.js file. [1]

    Therefore, if you attempt to load an image from a domain that is not included in the allowed image domains within your Next.js configuration, you will encounter the "Invalid src prop" error. [1] This mechanism is in place to prevent potential security risks and ensure that Next.js can properly optimize images from known and trusted sources.

    For instance, if you are trying to display an image hosted on a platform like "utfs.io" and this domain is not specified in your next.config.js, Next.js will throw the error. [1] This is Next.js's way of telling you, "Hey, I don't recognize this domain as a safe image source, please tell me if it's okay to load images from here."


    Configuring Next.config.js

    To fix the Invalid src prop error, you need to configure your next.config.{} file. This file tells Next.js which domains are allowed to serve images when using the <Image> component.

    Next.js optimizes images for performance and security. By default, it only allows images from your own domain or domains you explicitly trust. This prevents unauthorized image loading and ensures efficient image processing. To load images from external sources, you must add those domains to the images section in your next.config.{} file.

    Step-by-step configuration

    Open your next.config.{} file at the root of your Next.js project. If you don't have one, create it. Then, add or modify the module.exports to include the images configuration.

    Inside the images object, use the domains array to list the hostnames of the external image providers you want to use. For example, if you need to load images from example.com and another-example.net, your configuration should look like this:

            
    module.exports = {
      images: {
        domains: ['example.com', 'another-example.net'],
      },
    };
            
        

    Replace 'example.com' and 'another-example.net' with the actual domains you need to allow. After updating next.config.{}, restart your Next.js development server for the changes to take effect.


    Step-by-Step Fix Guide

    Encountering the Invalid src prop error in your Next.js application when working with images? This usually happens when you're trying to load images from external sources using Next.js's <Image component. Let's walk through a step-by-step solution to resolve this.

    Understanding the Cause

    The Invalid src prop error arises because Next.js, for security and optimization reasons, requires you to explicitly define the allowed image hostnames in your next.config.js file. This ensures that Next.js only optimizes images from trusted sources.

    The Fix: Configuring next.config.js

    To fix this, you need to tell Next.js which external image hostnames are permitted. Here’s how to do it:

    1. Open your next.config.js file in the root of your Next.js project. If you don't have one, create it.
    2. Add or modify the images property within the configuration object.
    3. Inside the images property, define the domains array. This array should contain the hostnames of the external image providers you want to use.

    Here’s an example of how your next.config.js should look:

            
    // next.config.js
    const nextConfig = {
      images: {
        domains: ['example.com', 'another-domain.com', 'your-image-provider.com'],
      },
    }
    
    module.exports = nextConfig
            
        

    Replace 'example.com', 'another-domain.com', and 'your-image-provider.com' with the actual domain names from where you are fetching your images. For example, if your image URL is https://utfs.io/images/image1.jpg, you would add 'utfs.io' to the domains array.

    Handling Subdomains and Protocols

    Note that you only need to specify the root domain (e.g., 'utfs.io', not 'images.utfs.io'). Next.js will allow images from all subdomains of the listed domains. You also don't need to specify the protocol ('http://' or 'https://').

    Restart Your Development Server

    After updating next.config.js, make sure to restart your Next.js development server for the changes to take effect. Usually, stopping and running npm run dev or yarn dev again will do the trick.

    By following these steps, you should be able to successfully resolve the Invalid src prop error and display external images in your Next.js application using the <Image component.


    Handling External Images

    When working with Next.js and using the <Image> component, you might encounter issues when trying to display images hosted on external domains. Next.js, by default, optimizes images for performance and security. To ensure this, it needs to know which external domains are trusted sources for images.

    This is where configuring external image domains in your next.config.js file becomes crucial. By specifying the allowed domains, you're telling Next.js that it's safe to fetch and optimize images from these sources.

    Configuring next.config.js

    To allow images from external domains, you need to modify your next.config.js file. Inside this file, you'll find an images property where you can define the domains array.

    Here's how you can configure it:

            
    module.exports = {
      images: {
        domains: ['example.com', 'another-domain.net', 'your-image-provider.org'],
      },
    };
            
          

    In this example, we've added three domains: example.com, another-domain.net, and your-image-provider.org. Replace these with the actual domains where your external images are hosted.

    Step-by-Step Guide

    1. Locate next.config.js: Find the next.config.js file in the root of your Next.js project. If it doesn't exist, create one.
    2. Open for Editing: Open next.config.js in your code editor.
    3. Add images Configuration: Ensure you have the images property within module.exports. If not, add it as shown in the example above.
    4. Specify Domains: Inside the domains array, list all the external domains from which you intend to load images. Use the format ['domain1.com', 'domain2.net'].
    5. Save and Restart: Save the next.config.js file and restart your Next.js development server for the changes to take effect.

    After these steps, Next.js will now allow and optimize images from the domains you've specified in your configuration.

    By correctly configuring allowed domains, you can seamlessly integrate external images into your Next.js application while benefiting from Next.js's image optimization features.


    Optimize Images in Next.js

    Invalid Src Prop Error

    When working with images in Next.js, especially external ones, you might encounter the dreaded "Invalid src prop" error. This error typically looks like this:

          
    Error: Invalid src prop (...) on `next/image`, hostname "..." is not configured under images in your `next.config.js`
          
        

    This error indicates that Next.js is preventing images from loading from domains that are not explicitly allowed in your next.config.js file. [1]

    Understanding the Error

    Next.js utilizes the <Image> component for image optimization. This component automatically optimizes images, resizes them for different devices, and serves them in modern formats like WebP. To ensure security and optimize performance, Next.js enforces a policy of only loading images from trusted domains. [1]

    By default, Next.js only allows images from your own domain. If you attempt to load an image from an external source without explicitly permitting it, you will encounter the "Invalid src prop" error.

    Why It Actually Happens

    The error arises because Next.js needs to know which external image domains are safe to load from. This is a security measure to prevent potential malicious image loading and to enable Next.js's image optimization features to work correctly with external images. [1]

    When you use the <Image> component with an src attribute pointing to an external URL, Next.js checks if the hostname of that URL is in the allowed list in your next.config.js. If it's not, the error is thrown.

    Configuring next.config.js

    To resolve the "Invalid src prop" error and allow images from external domains, you need to configure the images property in your next.config.js file. You need to specify the domains array within the images configuration.

    Here's how you can modify your next.config.js:

          
    module.exports = {
      images: {
        domains: ['example.com', 'another-domain.com', 'utfs.io'], // Add your domains here
      },
    };
          
        

    Replace 'example.com', 'another-domain.com', and 'utfs.io' with the actual domains from which you intend to load images. [1]

    Step-by-Step Fix Guide

    1. Identify the Image Domain: Determine the domain (hostname) of the external image URL causing the error. For example, if the image URL is https://utfs.io/images/image.jpg, the domain is utfs.io.
    2. Open next.config.js: Navigate to your Next.js project's root directory and open the next.config.js file. If it doesn't exist, create one.
    3. Configure images.domains: Add or modify the images configuration to include the domains array with the identified domain(s).
    4. Restart Your Development Server: After modifying next.config.js, restart your Next.js development server for the changes to take effect.
    5. Verify the Fix: Refresh your application and check if the "Invalid src prop" error is resolved and the external images are loading correctly.

    Handling External Images

    Besides configuring allowed domains, consider these points when handling external images:

    • Image Optimization: Next.js optimizes images from allowed external domains. Ensure that your external image provider also optimizes images for web delivery.
    • Performance: Loading external images can sometimes be slower than loading local images. Consider the performance implications, especially for large numbers of external images.
    • Security: Only allow images from domains you trust to prevent security risks.

    Optimize Images in Next.js

    Next.js offers several built-in features and best practices for image optimization:

    • <Image> Component: Use the <Image> component instead of the standard <img> tag. It provides automatic optimization, resizing, and format conversion.
    • Lazy Loading: Implement lazy loading for images that are not immediately visible in the viewport. This can be achieved using the loading="lazy" attribute for standard <img> tags or by default in Next.js <Image> component. [3]
    • Image Size Optimization: Ensure your images are appropriately sized for their display dimensions. Avoid serving unnecessarily large images. You can use tools to compress and optimize images before uploading them.
    • Modern Image Formats: Serve images in modern formats like WebP, which offer better compression and quality compared to older formats like JPEG and PNG. Next.js <Image> component can automatically serve images in WebP when supported by the browser.

    Advanced Optimization Tips

    • Content Delivery Network (CDN): For production applications, consider using a CDN to serve your images. CDNs can significantly improve image loading times by caching images closer to users geographically.
    • Image Optimization Libraries: Explore libraries like Sharp or Imagemin for more advanced image processing and optimization during your build process.
    • Placeholder Images: Use placeholder images or blur-up effect while the actual image is loading to improve perceived performance and user experience. Next.js <Image> component supports placeholder functionality.

    Troubleshooting Steps

    • Double-Check Domain Configuration: Ensure that you have correctly added the image domain to the domains array in next.config.js and that there are no typos.
    • Clear Cache: Sometimes, browser or Next.js cache can cause issues. Try clearing your browser cache and restarting the Next.js development server.
    • Check Image URL: Verify that the image URL is correct and accessible. Try opening the URL directly in your browser to ensure the image exists and is served correctly.
    • Next.js Version: Ensure you are using a compatible version of Next.js and next/image. Refer to the Next.js documentation for version-specific instructions.

    Best Practices Summary

    • Always use the Next.js <Image> component for image optimization.
    • Configure allowed domains in next.config.js for external images.
    • Implement lazy loading for off-screen images.
    • Optimize image sizes and formats.
    • Consider advanced optimization techniques like CDNs and image optimization libraries for production.

    Advanced Optimization Tips

    Beyond the basic setup for handling the "Invalid src prop" error, Next.js offers several advanced techniques to further optimize your images. Let's explore some of these to ensure your images are not just loading, but loading efficiently and enhancing user experience.

    Lazy Loading

    Lazy loading is a powerful technique to defer the loading of images until they are actually needed, typically when they are about to enter the viewport. This significantly improves initial page load time and reduces unnecessary data transfer. Next.js, and modern browsers, make implementing lazy loading straightforward.

    To lazy load images in Next.js, you can utilize the loading="lazy" attribute directly within the <img> tag if you are not using the <Image> component. However, if you are using Next.js's <Image> component, lazy loading is enabled by default and is handled automatically for optimized performance. [3]

    Example of native lazy loading with a standard <img> tag:

            
    <img src="/path/to/your/image.jpg" alt="Descriptive alt text" loading="lazy" />
            
        

    Optimal Image Sizing

    Serving images that are much larger than their display size is a common but easily avoidable performance bottleneck. Next.js's <Image> component helps in automatically serving appropriately sized images. However, understanding how to control image sizing and aspect ratios is still important for advanced optimization.

    If you have images of unknown sizes and want to constrain them within a maximum width and height while maintaining aspect ratio, CSS max-width and max-height properties are invaluable. Paired with object-contain, you ensure the image fits within the bounds without distortion.

    Example of constraining image size using CSS classes:

            
    <Image
        className="max-w-[512px] max-h-[512px] object-contain rounded-2xl"
        src={post.imageUrl}
        width={512}
        height={512}
        alt="Post Image"
    />
            
        

    In this example, max-w-[512px] and max-h-[512px] set the maximum dimensions, and object-contain ensures the image scales down to fit within these dimensions while preserving its aspect ratio. rounded-2xl adds rounded corners, enhancing visual appeal. [2]

    Choosing the Right Image Format

    Modern image formats like WebP offer superior compression and quality compared to older formats like JPEG and PNG. Next.js automatically serves images in WebP format if the browser supports it, further optimizing image delivery without you having to manually convert images.

    By default, Next.js optimizes images to WebP when possible. Ensuring your original images are of good quality allows Next.js to produce optimized WebP versions that provide the best balance between file size and visual fidelity.

    Leveraging Browser Caching

    Browser caching is crucial for performance. When a browser caches an image, it doesn't need to download it again on subsequent visits, leading to faster page loads. Next.js, when configured correctly with your hosting provider or CDN, automatically sets up efficient caching headers for your images.

    Ensure your server or hosting environment is set up to serve images with appropriate cache headers (like Cache-Control) to maximize the benefits of browser caching. This is usually handled by default in most Next.js hosting solutions like Vercel or Netlify.

    Using a CDN for Image Optimization

    For production applications, consider using a Content Delivery Network (CDN) specifically designed for images. These CDNs, like Cloudinary or Imgix, offer advanced image optimization features such as on-the-fly resizing, format conversion, and global content delivery, taking your image optimization strategy to the next level.

    While Next.js provides excellent built-in image optimization, a dedicated image CDN can further enhance performance, especially for websites with a large number of images or high traffic volumes. Integrating a CDN often involves updating your next.config.js to point to your CDN provider for image optimization.

    By implementing these advanced optimization tips, you can ensure your Next.js application delivers images that are not only correctly loaded but also highly performant, contributing to a faster and more enjoyable user experience.


    Troubleshooting Steps

    Encountering the "Invalid src prop" error in Next.js can be frustrating, but it's usually straightforward to resolve. Here’s a systematic approach to troubleshoot and fix this issue:

    1. Verify next.config.js Configuration

    The most common cause of this error is an incorrect or missing configuration in your next.config.js file. Next.js needs to know which domains are allowed to serve images when using the next/image component, especially for external images.

    • Check images property: Open your next.config.js file and ensure you have the images property defined. If it's missing or commented out, this could be the problem.
    • domains array: Inside the images property, look for the domains array. This array should list all the external hostnames from which you are trying to load images.
    • Hostname accuracy: Double-check that the hostname in your error message exactly matches the domain listed in your next.config.js. Even a slight typo can cause issues. For example, utfs.io is different from www.utfs.io.

    Example of correct configuration in next.config.js:

            
    module.exports = {
      images: {
        domains: ['utfs.io', 'another-domain.com'],
      },
    };
            
        

    2. Clear Cache and Restart Server

    After updating next.config.js, sometimes the changes are not immediately reflected. Try these steps:

    • Clear Next.js cache: Stop your development server and run rm -rf .next in your project directory to clear the Next.js build cache.
    • Restart development server: Run npm run dev or yarn dev to restart your Next.js development server. This ensures that Next.js re-reads your configuration file.

    3. Verify Image src Path

    Small errors in the image src path can also lead to issues.

    • Check for typos: Ensure there are no typos in the image URL you are using in your Image component's src prop.
    • Correct domain: Confirm that the domain in the src URL matches exactly with what you've configured in next.config.js.
    • Accessible URL: Open the image URL directly in your browser to make sure it is publicly accessible and that the URL itself is correct and working.

    4. Handling Protocol (HTTPS/HTTP)

    While less common now, sometimes protocol mismatches can cause issues. Ensure:

    • Consistent protocol: If your site is served over HTTPS, ensure your images are also loaded over HTTPS. Mixed content (HTTPS site loading HTTP images) can sometimes cause issues or warnings.
    • Protocol in next.config.js: You generally don't need to specify the protocol in next.config.js, just the domain name. Next.js usually handles both HTTP and HTTPS for the listed domains.

    5. Image Optimization Issues (Less Likely for this Error)

    Although the "Invalid src prop" error is primarily related to domain configuration, issues with image optimization might sometimes surface indirectly. If the above steps don't work:

    • Check image format: Ensure the image format is supported by browsers (e.g., JPEG, PNG, WebP, GIF).
    • Image corruption: In rare cases, a corrupted image file might cause unexpected errors. Try using a different image from the same domain to see if the issue persists.

    By systematically going through these troubleshooting steps, you should be able to identify and resolve the "Invalid src prop" error and successfully display your images in your Next.js application.


    Best Practices Summary

    To effectively manage images in your Next.js application and avoid the "Invalid src prop" error, consider these best practices:

    • Configure next.config.js Properly: Always define allowed hostnames or domains in your next.config.js file under the images section. This is crucial for Next.js to optimize and serve images from external sources securely. [1]
    • Use the Image Component: Employ Next.js's built-in Image component for image optimization, lazy loading, and format conversion. This component is designed to handle images efficiently. [1, 3]
    • Optimize Image Sizes: Resize images appropriately before serving them. While Next.js optimizes images, providing reasonably sized images initially can improve performance. [2]
    • Lazy Load Images: Implement lazy loading using loading="lazy" for images that are not immediately visible on page load. This defers loading until they are needed, enhancing initial page load time. [3]
    • Handle Image Aspect Ratios: Maintain image aspect ratios when resizing to prevent distortion. CSS properties like object-fit: contain; can be useful. [2]
    • Consider Image Formats: Serve images in modern formats like WebP, which offer better compression and quality compared to older formats like JPEG and PNG. Next.js can automatically handle format conversion.

    By following these practices, you can effectively prevent the "Invalid src prop" error and ensure optimal image handling in your Next.js applications.


    People Also Ask For

    • What does "Invalid src prop" mean in Next.js?

      This error in Next.js arises when you're using the <Image> component with an image URL from a domain that isn't explicitly allowed in your next.config.js file. [1]

    • Why am I getting "Invalid src prop" error?

      Next.js Image Optimization requires you to define allowed image sources for security and optimization purposes. If the domain of your image URL isn't in the allowed list, Next.js throws this error. [1]

    • How do I fix "Invalid src prop" error in Next.js?

      To resolve this, you need to edit your next.config.js file and add the hostname of your image source to the images configuration. For example:

                          
      module.exports = {
        images: {
          domains: ['example.com', 'another-domain.com'],
        },
      };
                          
                      

      Replace 'example.com' and 'another-domain.com' with your actual image hostnames.

    • Can I use external images with Next.js Image component?

      Yes, you can definitely use external images. You just need to configure the allowed domains in your next.config.js file as mentioned above to avoid the "Invalid src prop" error. [1]

    • What is the `<Image>` component in Next.js?

      The `<Image>` component is a built-in component in Next.js for image optimization. It automatically optimizes images, serves them in modern formats like WebP, and ensures optimal loading strategies like lazy loading. [1, 3]


    Join Our Newsletter

    Launching soon - be among our first 500 subscribers!

    Suggested Posts

    🤯 3 Surprising Facts - About PROGRAMMING
    PROGRAMMING

    🤯 3 Surprising Facts - About PROGRAMMING

    Explore surprising facts about programming, delving into its history, creativity, and problem-solving. 🤯
    14 min read
    6/11/2025
    Read More
    The Future of AI - Unlocking New Frontiers 🚀
    AI

    The Future of AI - Unlocking New Frontiers 🚀

    AI innovations are shaping humanity's future, driving big data, robotics, IoT, and generative AI. 🚀
    22 min read
    6/11/2025
    Read More
    The Digital Revolution - Reshaping Our World
    TECHNOLOGY

    The Digital Revolution - Reshaping Our World

    Digital transformation fundamentally rewires organizations, reshaping our world. 🚀
    16 min read
    6/11/2025
    Read More
    Developer X

    Muhammad Areeb (Developer X)

    Quick Links

    PortfolioBlog

    Get in Touch

    [email protected]+92 312 5362908

    Crafting digital experiences through code and creativity. Building the future of web, one pixel at a time.

    © 2025 Developer X. All rights reserved.