CINXE.COM
Cast Feed Validator
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"> <head> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-3490580-33"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-3490580-33'); </script> <meta name="application-name" content="CastFeedValidator"> <meta name="msapplication-tooltip" content="Blubrry"> <meta name="msapplication-TileImage" content="/images/icons/android-icon-114x114.png"> <meta name="msapplication-TileColor" content="#003366"> <meta name="msapplication-starturl" content="https://castfeedvalidator.com/"> <link rel="SHORTCUT ICON" href="/favicon.ico" /> <link rel="apple-touch-icon" href="/images/icons/apple-touch-icon.png" /> <link rel="apple-touch-icon" sizes="57x57" href="/images/icons/apple-touch-icon-57x57.png" /> <link rel="apple-touch-icon" sizes="72x72" href="/images/icons/apple-touch-icon-72x72.png" /> <link rel="apple-touch-icon" sizes="76x76" href="/images/icons/apple-touch-icon-76x76.png" /> <link rel="apple-touch-icon" sizes="114x114" href="/images/icons/apple-touch-icon-114x114.png" /> <link rel="apple-touch-icon" sizes="120x120" href="/images/icons/apple-touch-icon-120x120.png" /> <link rel="apple-touch-icon" sizes="144x144" href="/images/icons/apple-touch-icon-144x144.png" /> <link rel="apple-touch-icon" sizes="152x152" href="/images/icons/apple-touch-icon-152x152.png" /> <link rel="apple-touch-icon" sizes="180x180" href="/images/icons/apple-touch-icon-180x180.png" /> <link rel="apple-touch-icon-precomposed" href="/images/icons/apple-touch-icon.png" /> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="/images/icons/android-icon-57x57.png" /> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/images/icons/android-icon-72x72.png" /> <link rel="apple-touch-icon-precomposed" sizes="76x76" href="/images/icons/android-icon-76x76.png" /> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/images/icons/android-icon-114x114.png" /> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="/images/icons/android-icon-120x120.png" /> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/images/icons/android-icon-144x144.png" /> <link rel="apple-touch-icon-precomposed" sizes="152x152" href="/images/icons/android-icon-152x152.png" /> <link rel="apple-touch-icon-precomposed" sizes="180x180" href="/images/icons/android-icon-180x180.png" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Cast Feed Validator" /> <meta id="twit_desc" name="twitter:description" content="Submit your podcast RSS feed for analysis and get notified if there are issues with your feed, server, media, or artwork." /> <meta name="twitter:site" content="@blubrry" /> <meta name="twitter:url" content="https://www.castfeedvalidator.com/" /> <meta id="twimage" name="twitter:image" content="https://castfeedvalidator.com/images/validatorscreenshot.png" /> <meta name="robots" content="noodp" /> <meta id="site_desc" name="description" content="Submit your podcast RSS feed for analysis and get notified if there are issues with your feed, server, media, or artwork." /> <meta property="og:type" content="website" /> <meta property="og:title" content="Cast Feed Validator" /> <meta id="og_desc" property="og:description" content="Submit your podcast RSS feed for analysis and get notified if there are issues with your feed, server, media, or artwork." /> <meta property="og:url" content="https://www.castfeedvalidator.com/" /> <meta property="og:site_name" content="Podcast Feed Validator - Validate Your Podcast Feed" /> <meta id="ogimage" property="og:image" content="https://castfeedvalidator.com/images/validatorscreenshot.png" /> <meta name="google-site-verification" content="tni4-EzTVodaAoRc4Pt28ZEWHhIEu9QIkZQ5Nf_YBsk"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <link rel="stylesheet" href="https://assets2.blubrry.com/css/paperstrap.css" media="screen"> <link href="https://assets2.blubrry.com/css/network.css" rel="stylesheet" type="text/css"/> <link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet"> <link href="/css/validator.css" rel="stylesheet" type="text/css"/> <link href="/css/featherlight.min.css" rel="stylesheet" type="text/css" /> <title>Cast Feed Validator</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script> <script src="/js/featherlight.min.js"></script> <script> $(document).ready(function() { //If a URL is given in the query string, fill the input and start the validation var search_params = new URLSearchParams(window.location.search); if (search_params.has("url")) { var url = window.location.href; var array = url.split("?url="); try { var url_decode = decodeURIComponent(array[1]); } catch (error) { console.log(error); url_decode = url; } if (url_decode != '') { $("#validate-input").val(url_decode); $("#hidden-button").click(); } } //Allows users to hit "enter" rather than clicking "Validate" $("#validate-input").on("keyup", function(event) { if (event.which === 13) { event.preventDefault(); document.getElementById("validate-button").click(); } }); //Also allow users to hit "enter" rather than clicking "Search Apple Podcasts" $("#name").on("keyup", function(event) { if (event.which === 13) { event.preventDefault(); document.getElementById("find-button").click(); } }); //Starts the test validation by putting the geeknews URL in the query string $("#test-button").on("click", function(event) { var url = "https://feeds.podcastmirror.com/geeknews"; window.location = '/validate.php?url=' + url; }); }); function openBlubrry() { window.open("https://blubrry.com/"); } //Starts the validation by putting the URL in the query string function goToValidation() { var url = document.getElementById('validate-input').value; window.location = '/validate.php?url=' + url; } //Hides the rest of the validation results function cancel() { $(".phase").each(function(index) { if ($(this).children(".warnings").text().trim() === "") { $(this).remove(); } }); var validate = $("#validate-button"); validate.html("Cancelling validation..."); validate.attr("disabled", true); validate.off("click"); validate.on("click", reload); } function reload() { window.location = '/'; } //Show more/Show less function for validation details function toggleInfo(el) { var button_id = "#" + el.id; var div_id = button_id.replace("button", "results"); $(div_id).toggleClass('hidden-info'); $(div_id).toggleClass('displayed-info'); $(button_id).toggleClass("less"); let current_state = $(button_id).text(); if (current_state.includes("Show more")) { $(button_id).html("Show less ▴"); } else if (current_state.includes("Show less")) { $(button_id).html("Show more ▾"); } } </script> </head> <body> <nav class="navbar navbar-light bg-white navbar-expand-xl"> <div class="navbar-brand" style="display: flex; flex-direction: row; justify-content: center; align-items: center;"> <a class="text-white" title="Cast Feed Validator" href="https://castfeedvalidator.com/"><img id="navbar-logo" src="images/CFV-logo.svg" style="height: 40px;" alt="CastFeedValidator"></a> <h2 class="navbar-header-text"> Powered by <a href="https://blubrry.com/" target="_blank" style="text-decoration: underline;">Blubrry Podcasting</a> </h2> </div> <button class="navbar-toggler ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav ml-auto mt-2 mt-lg-0"> <li class="nav-item"> <a class="nav-link" href="FindCast.php" style="font-weight: bold;">Find Your RSS Feed</a> </li> <li class="nav-item"> <a class="nav-link" href="about.php" style="font-weight: bold;">About</a> </li> <li class="nav-item"> <a class="nav-link" href="https://blubrry.com/about/contact-form/#validator" style="font-weight: bold;">Contact Us</a> </li> </ul> </div> </nav> <div id="container" class="center"> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <div class="home-page-banner" id="validator"> <div class="container"> <div class="col form-group-lg" style="height: 100%; width: 100%;" align="center"> <h2 class="home-page-banner-text">Check the Health of Your Podcast</h2> <div class="input-group input-group-lg"> <div class="input-group-prepend"> <!-- <i class="fa fa-search"></i>--> <span class="input-group-text" style="background-color: white;"><i class="fa fa-search" style="color: #808080;"></i></span> </div> <input type="text" class="form-control" name="url" id="validate-input" placeholder="Enter your RSS feed or Apple Podcast link"> <!-- <input class="form-control border-end-0 border" type="search" value="search" id="example-search-input">--> </div> <!-- <input type="text" placeholder="Enter your RSS feed or Apple Podcast preview" name="url" id="validate-input" required>--> <br> <button id="validate-button" type="button" onclick="goToValidation()" class="btn text-capitalize w-50">START VALIDATION</button> </div> </div> </div> <br><br><br> <div class="container"> <div class="col" style="background: white;"> <div class="row info-row"> <div class="col-lg" align="center"> <h6 style="font-weight: bold; color: #39B44A; text-align: left;">WHY VALIDATE?</h6> <br> <h1 style="font-weight: bold; text-align: left;">Podcast <span style="color: #005EC2;">distribution and syndication</span> rely on your RSS feed</h1> <br> <p style="text-align: left;">It鈥檚 more than just Apple Podcasts. Similar to how your website needs to be browser compatible, your podcast feed needs to be compatible with services (platforms) that read podcast RSS feeds. If your feed can鈥檛 be read, it will most likely be skipped and not be included in other podcast apps and sites.</p> </div> <div class="col-lg d-flex justify-content-center align-items-center"> <img src="images/migration_ads_square-06.jpg" class="img-fluid"> </div> </div> <br><br> <div class="row d-flex justify-content-center align-items-center"> <img src="images/separator.svg" style="max-height: 53px;" class="img-fluid"> </div> <br><br> <div class="row info-row" style="width: 90%; margin-left: 5%;"> <div class="col-lg d-flex justify-content-center align-items-center"> <img src="images/CFV_example.png" class="img-fluid"> </div> <div class="col-lg" align="center"> <h6 style="font-weight: bold; color: #39B44A; text-align: left;">FOR SEASONED PODCASTERS</h6> <br> <h1 style="font-weight: bold; text-align: left;">Podcast feeds have <span style="color: #005EC2;">more requirements</span> than traditional RSS feeds</h1> <br> <p style="text-align: left;">Things can change over time as you add more episodes, requirements evolve, etc. Even warnings can cause problems for RSS readers. Cast Feed Validator will check and notify you of any warnings and errors found. However, it is your responsibility to solve any problems.</p> </div> </div> <br><br> <div class="row d-flex justify-content-center align-items-center"> <img src="images/separator.svg" style="max-height: 53px;" class="img-fluid"> </div> <br><br> <div class="row info-row"> <div class="col-lg" align="center" style="margin-bottom: 10px;"> <h6 style="font-weight: bold; color: #39B44A; text-align: left;">GIVE IT A TRY</h6> <br> <h1 style="font-weight: bold; text-align: left;">Ready for a test drive?</h1> <br> <p style="text-align: left;">See Cast Feed Validator in action. See how it works and try out our test feed.</p> <button id="test-button" type="button" onclick="" class="btn text-capitalize footer-and-body-button" style="height: 20%;">TEST THIS FEED </button> <br> <br> </div> <div class="col-lg d-flex justify-content-center align-items-center"> <img src="images/GNC-artwork.jpg" class="img-fluid"> </div> </div> <br><br> </div> </div> <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/jaxon-php/jaxon-js@3.3/dist/jaxon.core.js" charset="UTF-8"></script> <script type="text/javascript" charset="UTF-8"> /* <![CDATA[ */ try { if(typeof jaxon.config == undefined) jaxon.config = {}; } catch(e) { jaxon = {}; jaxon.config = {}; }; jaxon.config.requestURI = "ajax.php"; jaxon.config.statusMessages = false; jaxon.config.waitCursor = true; jaxon.config.version = "Jaxon 4.x"; jaxon.config.defaultMode = "asynchronous"; jaxon.config.defaultMethod = "POST"; jaxon.config.responseType = "JSON"; JaxonFVFeedPhase = {}; JaxonFVFeedPhase.getNextURL = function() { return jaxon.request({ jxncls: 'FVFeedPhase', jxnmthd: 'getNextURL' }, { parameters: arguments }); }; JaxonFVFeedPhase.startPhase = function() { return jaxon.request({ jxncls: 'FVFeedPhase', jxnmthd: 'startPhase' }, { parameters: arguments }); }; JaxonFVFeedPhase.continuePhase = function() { return jaxon.request({ jxncls: 'FVFeedPhase', jxnmthd: 'continuePhase' }, { parameters: arguments }); }; JaxonFVFeedPhase.finishPhase = function() { return jaxon.request({ jxncls: 'FVFeedPhase', jxnmthd: 'finishPhase' }, { parameters: arguments }); }; JaxonFVMediaPhase = {}; JaxonFVMediaPhase.getNextURL = function() { return jaxon.request({ jxncls: 'FVMediaPhase', jxnmthd: 'getNextURL' }, { parameters: arguments }); }; JaxonFVMediaPhase.startPhase = function() { return jaxon.request({ jxncls: 'FVMediaPhase', jxnmthd: 'startPhase' }, { parameters: arguments }); }; JaxonFVMediaPhase.continuePhase = function() { return jaxon.request({ jxncls: 'FVMediaPhase', jxnmthd: 'continuePhase' }, { parameters: arguments }); }; JaxonFVMediaPhase.finishPhase = function() { return jaxon.request({ jxncls: 'FVMediaPhase', jxnmthd: 'finishPhase' }, { parameters: arguments }); }; JaxonFVServerPhase = {}; JaxonFVServerPhase.getNextURL = function() { return jaxon.request({ jxncls: 'FVServerPhase', jxnmthd: 'getNextURL' }, { parameters: arguments }); }; JaxonFVServerPhase.startPhase = function() { return jaxon.request({ jxncls: 'FVServerPhase', jxnmthd: 'startPhase' }, { parameters: arguments }); }; JaxonFVServerPhase.continuePhase = function() { return jaxon.request({ jxncls: 'FVServerPhase', jxnmthd: 'continuePhase' }, { parameters: arguments }); }; JaxonFVServerPhase.finishPhase = function() { return jaxon.request({ jxncls: 'FVServerPhase', jxnmthd: 'finishPhase' }, { parameters: arguments }); }; JaxonFVArtworkPhase = {}; JaxonFVArtworkPhase.getNextURL = function() { return jaxon.request({ jxncls: 'FVArtworkPhase', jxnmthd: 'getNextURL' }, { parameters: arguments }); }; JaxonFVArtworkPhase.startPhase = function() { return jaxon.request({ jxncls: 'FVArtworkPhase', jxnmthd: 'startPhase' }, { parameters: arguments }); }; JaxonFVArtworkPhase.continuePhase = function() { return jaxon.request({ jxncls: 'FVArtworkPhase', jxnmthd: 'continuePhase' }, { parameters: arguments }); }; JaxonFVArtworkPhase.finishPhase = function() { return jaxon.request({ jxncls: 'FVArtworkPhase', jxnmthd: 'finishPhase' }, { parameters: arguments }); }; JaxonFVWebsitePhase = {}; JaxonFVWebsitePhase.startPhase = function() { return jaxon.request({ jxncls: 'FVWebsitePhase', jxnmthd: 'startPhase' }, { parameters: arguments }); }; JaxonFVWebsitePhase.continuePhase = function() { return jaxon.request({ jxncls: 'FVWebsitePhase', jxnmthd: 'continuePhase' }, { parameters: arguments }); }; JaxonFVWebsitePhase.getNextURL = function() { return jaxon.request({ jxncls: 'FVWebsitePhase', jxnmthd: 'getNextURL' }, { parameters: arguments }); }; JaxonFVWebsitePhase.finishPhase = function() { return jaxon.request({ jxncls: 'FVWebsitePhase', jxnmthd: 'finishPhase' }, { parameters: arguments }); }; jaxon.dialogs = {}; jaxon.dom.ready(function() { jaxon.command.handler.register("jquery", (args) => jaxon.cmd.script.execute(args)); jaxon.command.handler.register("bags.set", (args) => { for (const bag in args.data) { jaxon.ajax.parameters.bags[bag] = args.data[bag]; } }); }); jaxon.command.handler.register("rd", (command) => { const { data: sUrl, delay: nDelay } = command; if (nDelay <= 0) { window.location = sUrl; return true; } window.setTimeout(() => window.location = sUrl, nDelay * 1000); return true; }); /* ]]> */ </script> <div style="background-image: url('images/CFV_background-2-02.jpg'); background-size: cover; width: 100%; background-repeat: no-repeat; background-position: center;"> <div class="container" style="padding-top: 55px; padding-bottom: 55px;"> <div class="row" style="width: 80%; margin-left: 10%;"> <div class="col-lg" style="padding-right: 9%; padding-left: 3%; margin-bottom: 20px;"> <div class="text-left"> <img src="images/Blubrry2022Logo.svg" class="img-fluid text-left" style="max-height: 40px;" alt="Blubrry Podcasting"> </div> <br> <h1 style="font-weight: bold; text-align: left;"><span style="color: #1976D2">Bursting with tools</span> for podcasters, such as...</h1> <br> <p style="text-align: left;"> hosting, advanced statistics, monetization opportunities, help with websites, producing, promoting, and more. </p> <br> <button type="button" class="btn text-capitalize footer-and-body-button" onclick="openBlubrry()">GET STARTED HERE </button> <br> <br> </div> <div class="col-lg-6 d-flex justify-content-center align-items-center" style="padding: 0;"> <img src="images/retention-graph.jpg" class="img-fluid" style="max-height: 284px;"> </div> </div> </div> </div> <div id="footer" class="d-flex justify-content-around bg-black pt-4 pb-4"> <div class="p-2 align-items-center" style="width: 35%;"> <div class="navbar-brand mb-2 ml-0" style="display: flex; flex-direction: row; justify-content: center; align-items: center;"> <a class="text-white" title="Cast Feed Validator" href="https://castfeedvalidator.com/"><img id="navbar-logo" src="images/CVF_logo_dark.svg" style="height: 40px;" alt="CastFeedValidator"></a> </div> <p class="white-text row col"> By Blubrry Podcasting </p> <p class="font-weight-normal mb-5"> <a class="btn btn-primary btn-lg col-sm-5 mb-5" style="background-color: green; border-color: green" href="https://blubrry.com/support/media-hosting-documentation/what-is-my-podcast-rss-feed-url/" target="_blank"> Find your RSS feed </a> <span class="col-sm-1"></span> <a class="btn btn-primary btn-lg col-sm-5 mb-5" href="https://blubrry.com/support/migrate-to-blubrry/" target="_blank"> Migrate to blubrry </a> </p> <div class="row col"> <p class="font-weight-light text-white" style="font-size:18px">© 2025 <a href="https://blubrry.com" class="white-text" target="_blank">Blubrry Podcasting</a> </p> </div> </div> <div class="p-2 mt-3" style="text-align: left;"> <h3 class="font-weight-bold text-white mb-3">Resources</h3> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://www.castfeedvalidator.com/about.php" class="white-text" target="_blank">About</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/about/contact-form/#validator" class="white-text" target="_blank">Contact Us</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://www.castfeedvalidator.com/FindCast.php" class="white-text" target="_blank">Find your Feed</a> </p> </div> <div class="p-2 mt-3" style="text-align: left;"> <h3 class="font-weight-bold text-white mb-3">Services</h3> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/services/podcast-hosting/" class="white-text" target="_blank">Blubrry Podcast Hosting</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/services/podcast-statistics/" class="white-text" target="_blank">Blubrry Podcast Stats</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://www.podcastmirror.com/" class="white-text" target="_blank">Podcast Mirror</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://www.subscribeonandroid.com/" class="white-text" target="_blank">Subscribe on Android</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://www.subscribebyemail.com/" class="white-text" target="_blank">Subscribe by Email</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/services/powerpress-plugin/" class="white-text" target="_blank">PowerPress Podcast Plugin</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/services/podcast-ai/" class="white-text" target="_blank">Podcast AI Assistant</a> </p> </div> <div class="p-2 mt-3" style="text-align: left;"> <h3 class="font-weight-bold text-white mb-3">Company</h3> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://www.podcastmirror.com/about/" class="white-text" target="_blank">About</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/" class="white-text" target="_blank">Blubrry Podcasting</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/about" class="white-text" target="_blank">About Blubrry</a> </p> <p class="font-weight-light text-white no-margin" style="font-size:18px"> <a href="https://blubrry.com/services/blubrry-affiliate-program/" class="white-text" target="_blank">Affiliate Program</a> </p> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> </body> </html>