It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://share.hsforms.com/1h3ZgEAs7SAqRbknpXU4mygqsapp

  1. <!DOCTYPE html><html lang="en"><head><meta charSet="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><link rel="preconnect" href="https://static.hsappstatic.net" crossorigin="anonymous"/><title>Form</title><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="robots" content="noindex, nofollow"/><meta name="googlebot" content="noindex"/><link rel="dns-prefetch" href="https://fonts.gstatic.com"/><style>body{margin:0;background:#f4f8fa}.container{display:none;width:800px;margin:0 auto;margin-top:30px}.skip-to-form{left:-9999px;position:absolute}@media only screen and (max-width:800px){.container{width:100%}}.container.error,.container.loaded{display:block}.container.loaded{background:#fff;box-shadow:0 4px 8px 0 rgba(53,105,128,.3),0 6px 20px 0 rgba(165,200,213,.41)}#form-target{padding:40px}.hs-form_free.hs-form__thankyou-message{font-size:38px;text-align:center}.hs-form_free.hs-form__thankyou-message .hs-form__virality__link{font-size:18px;margin-top:240px;line-height:60px}.hs-form_free.hs-form__thankyou-message .hs-form__virality__link__sproket{width:60px;height:60px}.hs-form_free.hs-form__thankyou-message:before{display:block;content:url(https://js.hsformsqa.net/success-green.svg);width:130px;height:201px;padding-top:28px;margin:0 auto}</style><script>
  2.        var isQa = false;
  3.        window.hsFormsOnReady = [];
  4.        window._hsq = window._hsq || [];
  5.        window.disabledHsPopups = ['ADS', 'LEADFLOW', 'LIVE_CHAT', 'FEEDBACK', 'CALLS_TO_ACTION'];
  6.        window.isQa = isQa;
  7.        window.isLocal = window.location.hostname.split('.')[0] === 'local';
  8.      </script><script>
  9.      (function (isQa, isLocal) {
  10.        var getHubletSuffixFromUrl = function () {
  11.          var host = window.location.hostname;
  12.          return host.indexOf('-') !== -1
  13.            ? host.split('.')[0].substring(host.indexOf('-'))
  14.            : '';
  15.        };
  16.  
  17.        var protocol = 'https://';
  18.        var hubletSuffix = getHubletSuffixFromUrl();
  19.        var qaSuffix = isQa ? 'qa' : '';
  20.  
  21.        var domainBuilders = {
  22.          'js.hsforms.net': function () {
  23.            return protocol + 'js' + hubletSuffix + '.hsforms' + qaSuffix + '.net';
  24.          },
  25.          'forms.hsforms.com': function () {
  26.            return protocol + 'forms' + hubletSuffix + '.hsforms' + qaSuffix + '.com';
  27.          },
  28.          'js.hs-scripts.com': function () {
  29.            return protocol + 'js' + hubletSuffix + '.hs-scripts' + qaSuffix + '.com';
  30.          },
  31.          'api.hubspot.com': function () {
  32.            return protocol + 'api' + hubletSuffix + '.hubspot' + qaSuffix + '.com';
  33.          },
  34.          'local.hsformsqa.com': function () {
  35.            return 'https://local.hsappstatic.net/forms-embed/static/bundles/project-v3.js'
  36.          }
  37.        };
  38.  
  39.        window.apiHubspotUrl = domainBuilders['api.hubspot.com']();
  40.        window.formsHsFormsUrl = domainBuilders['forms.hsforms.com']();
  41.        window.jsHsFormsUrl = domainBuilders[ isLocal ? 'local.hsformsqa.com' : 'js.hsforms.net']();
  42.        window.jsHsScriptsUrl = domainBuilders['js.hs-scripts.com']();
  43.      })(window.isQa, window.isLocal);
  44.    </script><script>
  45.      (function (jsHsFormsUrl, formsHsFormsUrl, isLocal) {
  46.        var dnsPrefetchJs = document.createElement('link');
  47.        var dnsPrefetchForms = document.createElement('link');
  48.        var preconnectJs = document.createElement('link');
  49.        var preconnectForms = document.createElement('link');
  50.        var scriptJs = document.createElement('script');
  51.  
  52.        var hsVersion =
  53.          (window.location.search.match(/[?&]{1}_hsVersion=([^&#]*)/) || [])[1] ||
  54.          'v3';
  55.  
  56.        dnsPrefetchJs.rel = 'dns-prefetch';
  57.        dnsPrefetchForms.rel = 'dns-prefetch';
  58.        preconnectJs.rel = 'preconnect';
  59.        preconnectForms.rel = 'preconnect';
  60.        dnsPrefetchJs.href = jsHsFormsUrl;
  61.        preconnectJs.href = jsHsFormsUrl;
  62.        dnsPrefetchForms.href = formsHsFormsUrl;
  63.        preconnectForms.href = formsHsFormsUrl;
  64.        scriptJs.type = 'text/javascript';
  65.        scriptJs.src = isLocal ? jsHsFormsUrl :  jsHsFormsUrl + '/forms/embed/' + hsVersion + '.js';
  66.        scriptJs.async = true;
  67.        scriptJs.defer = true;
  68.  
  69.        document.head.appendChild(dnsPrefetchJs);
  70.        document.head.appendChild(dnsPrefetchForms);
  71.        document.head.appendChild(preconnectJs);
  72.        document.head.appendChild(preconnectForms);
  73.        document.head.appendChild(scriptJs);
  74.      })(window.jsHsFormsUrl, window.formsHsFormsUrl, window.isLocal);
  75.    </script><script>
  76.      (function () {
  77.        function isSupportedBrowser() {
  78.          return (
  79.            typeof window.WeakMap === 'function' &&
  80.            typeof window.requestAnimationFrame === 'function'
  81.          );
  82.        }
  83.  
  84.        function setUrlQueryParamSupportedBrowser() {
  85.          var url;
  86.          var separator;
  87.          var urlToGoTo;
  88.          var hasHref = Object.prototype.hasOwnProperty.call(window.location, 'href');
  89.          var supportedBrowser = isSupportedBrowser();
  90.  
  91.          if (!supportedBrowser) {
  92.            if (hasHref) {
  93.              url = window.location.href;
  94.            } else {
  95.              url = window.location;
  96.            }
  97.  
  98.            if (url.indexOf('isSupportedBrowser') === -1) {
  99.              separator = url.indexOf('?') === -1 ? '?' : '&';
  100.              urlToGoTo = url + separator + 'isSupportedBrowser=' + supportedBrowser;
  101.              if (supportedBrowser === false) {
  102.                if (hasHref) {
  103.                  window.location.href = urlToGoTo;
  104.                } else {
  105.                  window.location = urlToGoTo;
  106.                }
  107.              }
  108.            }
  109.          }
  110.        }
  111.  
  112.        setUrlQueryParamSupportedBrowser();
  113.      })();
  114.    </script><script>window.hs_RequestParams = {}</script><script>
  115.      /*
  116.      This parses the portalId and the formId from the hash in the url and then makes the request
  117.      for form embed response.
  118.      Make sure to minify when making changes
  119.      npx uglify-js --compress --mangle -o <RESULT_PATH> <PATH_TO_THIS_FILE>
  120.    */
  121.    (function (RequestParams) {
  122.      var LEGACY_UUID_IDENTIFIER = '-';
  123.      var BYTE_TO_HEX_MAP = [];
  124.      var BASE64_URL_SAFE_MAP = [
  125.        ['+', '-'],
  126.        ['/', '_'],
  127.      ];
  128.      var requestObj;
  129.  
  130.      function generateHexMap() {
  131.        var result = [];
  132.        var index;
  133.        for (index = 0; index < 256; index++) {
  134.          result.push((index + 0x100).toString(16).substr(1));
  135.        }
  136.        return result;
  137.      }
  138.  
  139.      BYTE_TO_HEX_MAP = generateHexMap();
  140.  
  141.      function base64ToArrayBuffer(base64) {
  142.        var binaryString = window.atob(base64);
  143.        var result = [];
  144.        var index;
  145.        for (index = 0; index < binaryString.length; index++) {
  146.          result.push(binaryString.charCodeAt(index));
  147.        }
  148.        return new window.Uint8Array(result);
  149.      }
  150.  
  151.      function getVersionFromSymbol(symbol) {
  152.        return (
  153.          parseInt(symbol, 36) +
  154.          (isNaN(symbol * 1) && symbol === symbol.toUpperCase() ? 26 : 0)
  155.        );
  156.      }
  157.  
  158.      function bytesToUuid(buf, offset) {
  159.        var i = offset || 0;
  160.        return [
  161.          BYTE_TO_HEX_MAP[buf[i++]],
  162.          BYTE_TO_HEX_MAP[buf[i++]],
  163.          BYTE_TO_HEX_MAP[buf[i++]],
  164.          BYTE_TO_HEX_MAP[buf[i++]],
  165.          '-',
  166.          BYTE_TO_HEX_MAP[buf[i++]],
  167.          BYTE_TO_HEX_MAP[buf[i++]],
  168.          '-',
  169.          BYTE_TO_HEX_MAP[buf[i++]],
  170.          BYTE_TO_HEX_MAP[buf[i++]],
  171.          '-',
  172.          BYTE_TO_HEX_MAP[buf[i++]],
  173.          BYTE_TO_HEX_MAP[buf[i++]],
  174.          '-',
  175.          BYTE_TO_HEX_MAP[buf[i++]],
  176.          BYTE_TO_HEX_MAP[buf[i++]],
  177.          BYTE_TO_HEX_MAP[buf[i++]],
  178.          BYTE_TO_HEX_MAP[buf[i++]],
  179.          BYTE_TO_HEX_MAP[buf[i++]],
  180.          BYTE_TO_HEX_MAP[buf[i++]],
  181.        ].join('');
  182.      }
  183.  
  184.      function unescapeBase64(b64) {
  185.        return BASE64_URL_SAFE_MAP.reduce(function (t, v) {
  186.          return t.split('').map(c => c === v[1] ? v[0] : c).join('');
  187.        }, b64);
  188.      }
  189.  
  190.      function B64ToUuid(b64) {
  191.        return bytesToUuid(base64ToArrayBuffer(b64));
  192.      }
  193.  
  194.      function decodeFormToken(encodedString) {
  195.        var legacyUuid = encodedString.charAt(0) === LEGACY_UUID_IDENTIFIER;
  196.        var offset = legacyUuid ? 2 : 1;
  197.        var formGuid = B64ToUuid(
  198.          unescapeBase64(encodedString.substring(offset, 22 + offset))
  199.        );
  200.        return {
  201.          formId: legacyUuid ? formGuid.replace(/-/g, '') : formGuid,
  202.          portalId: parseInt(encodedString.substring(22 + offset), 36),
  203.          version: getVersionFromSymbol(encodedString.charAt(offset - 1)),
  204.        };
  205.      }
  206.  
  207.      function getHubletFromUrl() {
  208.        var subdomain = window.location.hostname.split('.')[0];
  209.        var hublet = subdomain.split('-')[1];
  210.        return hublet || '';
  211.      }
  212.  
  213.      function getPathParams() {
  214.        var pathParams = window.location.pathname.split('/');
  215.        return pathParams.filter(function (param) {
  216.          return param !== '' && param.indexOf('test-') === -1;
  217.        });
  218.      }
  219.  
  220.      function parseRequestParamsFromUrl() {
  221.        var pathParams = getPathParams();
  222.        var token = pathParams[0];
  223.        var isPortalAndFormUrl = pathParams.length === 2;
  224.        var requestParams;
  225.  
  226.        if (isPortalAndFormUrl) {
  227.          return {
  228.            region: getHubletFromUrl(),
  229.            portalId: pathParams[0],
  230.            formId: pathParams[1],
  231.          };
  232.        }
  233.  
  234.        requestParams = decodeFormToken(token);
  235.        requestParams.region = getHubletFromUrl();
  236.  
  237.        return requestParams;
  238.      }
  239.  
  240.      // Get Form request params hash from url
  241.      requestObj = parseRequestParamsFromUrl();
  242.  
  243.      // Set to global
  244.      RequestParams.portalId = requestObj.portalId;
  245.      RequestParams.formId = requestObj.formId;
  246.      RequestParams.region = requestObj.region;
  247.      RequestParams.version = requestObj.version;
  248.    })(window.hs_RequestParams);
  249.    </script><script>
  250.  (function (requestParams, formsReadyQueue, isQa) {
  251.    var context;
  252.    var create;
  253.    var instance;
  254.    const versionMap = new Map([[1, "1.0"], [2, "2.0"]])
  255.    const { url, formId, portalId, region, version } = requestParams
  256.  
  257.    context = {
  258.      embedDefinitionUrl: url,
  259.      formId: formId,
  260.      portalId: portalId,
  261.      region: region,
  262.      target: '#form-target',
  263.      ...(version && versionMap.get(version) && {
  264.        __INTERNAL__CONTEXT: {
  265.          editorVersion: versionMap.get(version)
  266.        }
  267.      }),
  268.    };
  269.  
  270.    if (isQa) {
  271.      context['env'] = 'qa';
  272.    }
  273.  
  274.    function updateHtmlLang() {
  275.      var form = document.querySelector('.hs-form-' + context.formId);
  276.      var formLang = form.lang;
  277.  
  278.      if (formLang) {
  279.        document.documentElement.setAttribute('lang', formLang);
  280.      }
  281.    }
  282.  
  283.    function scrollToTop() {
  284.      try {
  285.        window.scrollTo({ top: 0, behavior: 'smooth' });
  286.      } catch (e) {
  287.        window.scrollTo(0, 0);
  288.      }
  289.    }
  290.  
  291.    create = function () {
  292.      instance = window.hbspt.forms.create(context);
  293.      instance.on('onFormReady', updateHtmlLang);
  294.      instance.on('onPageChange', scrollToTop);
  295.      window.HubSpotForms.currentForm = instance;
  296.    };
  297.  
  298.    formsReadyQueue.push(create);
  299.  })(window.hs_RequestParams, window.hsFormsOnReady, window.isQa);
  300.  
  301.  </script><script type="text/javascript" src="//static.hsappstatic.net/forms-submission-pages/static-1.6604/bundles/share-legacy.js" crossorigin="anonymous" defer=""></script><meta name="author" content="HubSpot, Inc."/><link rel="apple-touch-icon" sizes="180x180" href="//static.hsappstatic.net/StyleGuideUI/static-3.434/img/sprocket/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="//static.hsappstatic.net/StyleGuideUI/static-3.434/img/sprocket/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="//static.hsappstatic.net/StyleGuideUI/static-3.434/img/sprocket/favicon-16x16.png"/><link rel="mask-icon" href="//static.hsappstatic.net/StyleGuideUI/static-3.434/img/sprocket/safari-pinned-tab.svg" color="#FF7A59"/><meta name="msapplication-TileColor" content="#2b5797"/></head><body><a class="skip-to-form" href="#main">Skip to form</a><main id="main"><div class="container"><div id="form-target"></div></div></main><script>
  302.      (function (requestParams, jsHsScriptsUrl) {
  303.        var script = document.createElement('script');
  304.        var shouldSkipScriptLoader;
  305.        var regex;
  306.        var results;
  307.  
  308.        function getParameterByName(name, url) {
  309.          if (!url) {
  310.            url = window.location.href;
  311.          }
  312.          name = name.replace(/[[]]/g, '$&');
  313.          regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
  314.          results = regex.exec(url);
  315.          if (!results) return null;
  316.          if (!results[2]) return '';
  317.          return decodeURIComponent(results[2].replace(/\+/g, ' '));
  318.        }
  319.  
  320.        shouldSkipScriptLoader = getParameterByName('hs_skipScriptLoader');
  321.        if (!shouldSkipScriptLoader) {
  322.          script.type = 'text/javascript';
  323.          script.id = 'hs-script-loader';
  324.          script.async = true;
  325.          script.defer = true;
  326.          script.src = jsHsScriptsUrl + '/' + requestParams.portalId + '.js';
  327.          document.body.appendChild(script);
  328.        }
  329.      })(window.hs_RequestParams, window.jsHsScriptsUrl);
  330.    </script></body></html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda