<!doctype html>
<html lang="en">
  <head>
    <style data-vite-theme="" data-inject-first="">:root {
      --background: 0 0% 100%;
--foreground: 20 14.3% 4.1%;
--muted: 60 4.8% 95.9%;
--muted-foreground: 25 5.3% 44.7%;
--popover: 0 0% 100%;
--popover-foreground: 20 14.3% 4.1%;
--card: 0 0% 100%;
--card-foreground: 20 14.3% 4.1%;
--border: 20 5.9% 90%;
--input: 20 5.9% 90%;
--primary: 178 70% 29%;
--primary-foreground: 175 23% 98%;
--secondary: 60 4.8% 95.9%;
--secondary-foreground: 24 9.8% 10%;
--accent: 60 4.8% 95.9%;
--accent-foreground: 24 9.8% 10%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 60 9.1% 97.8%;
--ring: 20 14.3% 4.1%;
--radius: 0.625rem;
  }
  .dark {
      --background: 240 10% 3.9%;
--foreground: 0 0% 98%;
--muted: 240 3.7% 15.9%;
--muted-foreground: 240 5% 64.9%;
--popover: 240 10% 3.9%;
--popover-foreground: 0 0% 98%;
--card: 240 10% 3.9%;
--card-foreground: 0 0% 98%;
--border: 240 3.7% 15.9%;
--input: 240 3.7% 15.9%;
--primary: 178 70% 29%;
--primary-foreground: 175 23% 98%;
--secondary: 240 3.7% 15.9%;
--secondary-foreground: 0 0% 98%;
--accent: 240 3.7% 15.9%;
--accent-foreground: 0 0% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 0 0% 98%;
--ring: 240 4.9% 83.9%;
--radius: 0.625rem;
  }</style>

    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta
      name="description"
      content="Simple, private, ad-free video hosting for your business. Drag, drop, done. Embed videos on your website, app, or help center, and see who watched. Start free."
    />
    <meta
      name="keywords"
      content="business video hosting, private video hosting, embed video website, ad-free video hosting, video hosting platform, secure video hosting, video analytics"
    />
    <meta property="og:title" content="Viddler - Simple Video Hosting" />
    <meta
      property="og:description"
      content="Simple, private, ad-free video hosting for your business. Embed videos on your website, app, or help center, and see who watched."
    />
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://viddler.com" />
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="Viddler - Simple Video Hosting" />
    <meta
      name="twitter:description"
      content="Simple, private, ad-free video hosting for your business. Embed videos anywhere and see who watched."
    />
    <title>Viddler - Simple Video Hosting</title>
    <!-- Favicon -->
    <link rel="icon" href="/favicon.svg?v=3" type="image/svg+xml" />
    <link rel="alternate icon" href="/favicon.ico?v=3" type="image/x-icon" />
    <link rel="shortcut icon" href="/favicon.ico?v=3" type="image/x-icon" />
    <link rel="apple-touch-icon" href="/apple-touch-icon.png?v=3" />
    <meta name="theme-color" content="#000000" />

    <!-- The server includes a useful no-JavaScript page inside #root for search
         crawlers. Hide that fallback before first paint when JavaScript is
         available so visitors never see it flash before React mounts. -->
    <style>
      html.js-enabled [data-seo-prerender] {
        display: none !important;
      }
    </style>

    <!-- Paint dark surfaces BEFORE first paint. Embeds are always black; Opus
         marketing pages are black only when the experiment flag is enabled. -->
    <script>
      document.documentElement.classList.add("js-enabled");
      if (location.hash.startsWith("#/embed")) {
        document.documentElement.style.backgroundColor = "#000";
        document.documentElement.style.colorScheme = "dark";
      } else if ("true" === "true") {
        document.documentElement.classList.add("opus-page");
        document.documentElement.style.backgroundColor = "#000";
      }
    </script>
    
    <!-- SEO is now handled server-side for video pages -->
    
    <!-- Keep heavy analytics runtimes outside the LCP window. Early PostHog
         events use the bounded, identity-scoped durable queue in the app. -->
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag() {
        dataLayer.push(arguments);
      }
      window.gtag = gtag;
      gtag("js", new Date());
      gtag("config", "G-Y04J5ZTJZL", {
        page_location: window.location.origin,
        page_path: "/",
      });

      var googleTagLoaded = false;
      var googleTagTimer;
      function loadGoogleTag() {
        if (googleTagLoaded) return;
        googleTagLoaded = true;
        clearTimeout(googleTagTimer);
        window.removeEventListener("pointerdown", loadGoogleTag);
        window.removeEventListener("keydown", loadGoogleTag);
        window.removeEventListener("touchstart", loadGoogleTag);
        var script = document.createElement("script");
        script.async = true;
        script.src = "https://www.googletagmanager.com/gtag/js?id=G-Y04J5ZTJZL";
        document.head.appendChild(script);
      }
      googleTagTimer = setTimeout(loadGoogleTag, 5000);
      window.addEventListener("pointerdown", loadGoogleTag, { once: true, passive: true });
      window.addEventListener("keydown", loadGoogleTag, { once: true });
      window.addEventListener("touchstart", loadGoogleTag, { once: true, passive: true });
    </script>

    <!-- Structured Data for Website -->
    <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "WebSite",
        "name": "Viddler",
        "url": "https://viddler.com",
        "description": "Private, ad-free video hosting. Upload once, embed anywhere, and see who actually watched."
      }
    </script>

    <!-- Structured Data for Organization -->
    <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Organization",
        "name": "Viddler",
        "url": "https://viddler.com",
        "logo": "https://viddler.com/apple-touch-icon.png",
        "contactPoint": {
          "@type": "ContactPoint",
          "contactType": "customer service",
          "email": "support@viddler.com"
        }
      }
    </script>
    <script type="module" crossorigin src="/assets/index-CrMOyx4u.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-CZ4hG-Ht.css">
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>
