• DELETE FROM KEYWORDS WHERE ID_DOMAINE=34004958
  • DoneDoneDone

    URL:www.synthesia.io

    Connection: keep-alive
    Date: Thu, 23 Jan 2025 21:34:27 GMT
    Content-Length: 166
    Content-Type: text/html
    Location: https://www.synthesia.io/
    X-Cluster-Name: eu-south-1-prod-hosting-red
    
    
    Location => https://www.synthesia.io/
    Status => 301
    <html>
    <head><title>301 Moved Permanently</title></head>
    

    (vide) Tentative en https

    https://www.synthesia.io/

    <!DOCTYPE html><!-- Last Published: Thu Jan 23 2025 12:47:57 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="www.synthesia.io" data-wf-page="65e89895c5a4b8d764c0d712" data-wf-site="65e89895c5a4b8d764c0d710" lang="en" data-wf-locale="en"><head><meta charset="utf-8"/><title>Free AI Video Generator - Create AI Videos in 140 Languages</title><link rel="alternate" hrefLang="x-default" href="https://www.synthesia.io/"/><link rel="alternate" hrefLang="en" href="https://www.synthesia.io/"/><link rel="alternate" hrefLang="fr" href="https://www.synthesia.io/fr"/><link rel="alternate" hrefLang="de" href="https://www.synthesia.io/de"/><link rel="alternate" hrefLang="es" href="https://www.synthesia.io/es"/><meta content="Create AI generated videos from text with the most advanced AI avatars and voiceovers in 140+ languages. Try our free AI video generator now!" name="description"/><meta content="Free AI Video Generator - Create AI Videos in 140 Languages" property="og:title"/><meta content="Create AI generated videos from text with the most advanced AI avatars and voiceovers in 140+ languages. Try our free AI video generator now!" property="og:description"/><meta content="https://cdn.prod.website-files.com/65e89895c5a4b8d764c0d710/664dff84b972812764843b0f_NEW_OG.gif" property="og:image"/><meta content="Free AI Video Generator - Create AI Videos in 140 Languages" property="twitter:title"/><meta content="Create AI generated videos from text with the most advanced AI avatars and voiceovers in 140+ languages. Try our free AI video generator now!" property="twitter:description"/><meta content="https://cdn.prod.website-files.com/65e89895c5a4b8d764c0d710/664dff84b972812764843b0f_NEW_OG.gif" property="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="7sMogLnbmd8UrJm5RvESdRARC-sZv9geJ5autb-YMO0" name="google-site-verification"/><link href="https://cdn.prod.website-files.com/65e89895c5a4b8d764c0d710/css/synthesia-staging-eaffee4c3a254eec5b5e4.2047a13b4.min.css" rel="stylesheet" type="text/css"/><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/65e89895c5a4b8d764c0d710/664f0f482fa5a4d527d892bc_Favicon-Web-Security%201.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/65e89895c5a4b8d764c0d710/6618fd69d436784c0bba5e9e_webclip.png" rel="apple-touch-icon"/><link href="https://www.synthesia.io/" rel="canonical"/><meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
    
    <!-- Preload and Preconnect -->
    <link rel="preconnect" href="https://www.googletagmanager.com">
    <link rel="preconnect" href="https://www.google-analytics.com">
    
    <link rel="preload" href="https://cdn.optimizely.com/js/5314775840718848.js" as="script" />
    <link rel="preconnect" href="https://logx.optimizely.com" />
    
    <!-- Google Tag Manager -->
    <script defer>(function (w, d, s, l, i) {
            w[l] = w[l] || []; w[l].push({
                'gtm.start':
                    new Date().getTime(), event: 'gtm.js'
            }); var f = d.getElementsByTagName(s)[0],
                j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
                    'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
        })(window, document, 'script', 'dataLayer', 'GTM-PS8FQR6');</script>
    <!-- End Google Tag Manager -->
    
    
    <!-- Optimizely Opt-Out Configuration (Set Before Script Loads) -->
    <script>
        // Opt out by default
        window.optimizely = window.optimizely || [];
        window.optimizely.push({ type: "holdEvents" });
    </script>
    
    <!-- Load Optimizely Script -->
    <script src="https://cdn.optimizely.com/js/5314775840718848.js"></script>
    
    <!-- Optimizely event checks -->
    <script>
        (function () {
            // Global variables for checks
            let isUsVisitor = false;
            let hasAnalyticsConsent = false;
            let isInExperiment = false;
    
            const userCountryKey = "countryCode";
            const experimentKey = "inExperiment";
    
            // Utility: Evaluate conditions and send events if all conditions are met
            function evaluateConditionsAndSendEvents() {
                console.log(
                    `Evaluating conditions: ` +
                    `isUsVisitor=${isUsVisitor}, ` +
                    `hasAnalyticsConsent=${hasAnalyticsConsent}, ` +
                    `isInExperiment=${isInExperiment}`
                );
    
                if (isUsVisitor && hasAnalyticsConsent && isInExperiment) {
                    console.log("All conditions met. Sending events...");
                    window.optimizely.push({ type: "sendEvents" });
                } else {
                    console.log("Conditions not met. Events not sent yet.");
                }
            }
    
            // Check 1: Visitor Country
            async function checkVisitorCountry() {
                try {
                    let countryCode = sessionStorage.getItem(userCountryKey);
    
                    if (!countryCode) {
                        const response = await fetch("https://get.geojs.io/v1/ip/country.json");
                        if (response.ok) {
                            const data = await response.json();
                            countryCode = (data.country || "").toUpperCase();
                            sessionStorage.setItem(userCountryKey, countryCode);
                        } else {
                            console.warn("GeoJS API returned an error:", response.statusText);
                            countryCode = "";
                        }
                    }
    
                    isUsVisitor = countryCode === "US";
                    console.log(`Visitor is ${isUsVisitor ? "from the US" : `not from the US (${countryCode})`}`);
                } catch (error) {
                    console.error("Error detecting visitor country:", error);
                } finally {
                    evaluateConditionsAndSendEvents();
                }
            }
    
            // Check 2: Analytics Consent
            function initializeConsentListener(retries = 10, delay = 300) {
                if (window._hsp && typeof window._hsp.push === "function") {
                    const _hsp = window._hsp;
    
                    _hsp.push([
                        "addPrivacyConsentListener",
                        (consent) => {
                            hasAnalyticsConsent = consent?.categories?.analytics || false;
                            console.log(`Analytics consent: ${hasAnalyticsConsent}`);
                            evaluateConditionsAndSendEvents();
                        },
                    ]);
    
                    console.log("Consent listener initialized.");
                } else {
                    if (retries > 0) {
                        console.log(`_hsp not defined yet. Retrying in ${delay}ms...`);
                        setTimeout(() => initializeConsentListener(retries - 1, delay), delay);
                    } else {
                        console.warn("Could not initialize consent listener after multiple retries.");
                        evaluateConditionsAndSendEvents();
                    }
                }
            }
    
            // Check 3: In Experiment - including a synchronous check
            function checkInExperiment() {
                try {
                    // First, do a synchronous check using Optimizely's state object
                    if (typeof window.optimizely?.get === 'function') {
                        const variationMap = window.optimizely.get('state').getVariationMap();
                        if (variationMap && Object.keys(variationMap).length > 0) {
                            // User is already in an experiment
                            localStorage.setItem(experimentKey, "true");
                            isInExperiment = true;
                            console.log("User is already in an experiment (synchronous check).");
                        }
                    }
    
                    const alreadyInExperiment = !!localStorage.getItem(experimentKey);
                    if (!alreadyInExperiment) {
                        // If not already recorded, listen for the campaignDecided event
                        window.optimizely.push({
                            type: "addListener",
                            filter: { type: "lifecycle", name: "campaignDecided" },
                            handler: function (event) {
                                if (event.data?.decision?.variationId !== null) {
                                    localStorage.setItem(experimentKey, "true");
                                    isInExperiment = true;
                                    console.log("User bucketed into an experiment (event listener).");
                                    evaluateConditionsAndSendEvents();
                                }
                            },
                        });
                    } else {
                        // If already in experiment, isInExperiment = true set above
                        console.log("User already marked as inExperiment (localStorage check).");
                    }
                } catch (error) {
                    console.error("Error checking inExperiment:", error);
                } finally {
                    evaluateConditionsAndSendEvents();
                }
            }
    
            document.addEventListener("DOMContentLoaded", async function () {
                await checkVisitorCountry();
                checkInExperiment();
                initializeConsentListener();
    
                // Final evaluation in case all conditions are already met
                evaluateConditionsAndSendEvents();
            });
        })();
    </script>
    
    <script>
        (function () {
            const IP_STORAGE_KEY = 'userIP';
            const storedIP = sessionStorage.getItem(IP_STORAGE_KEY);
    
            if (storedIP) {
                // IP is already stored, push to dataLayer
                window.dataLayer = window.dataLayer || [];
                window.dataLayer.push({
                    'event': 'userIPRetrieved',
                    'userIP': storedIP // This is the plain IP
                });
            } else {
                fetch('https://get.geojs.io/v1/ip.json')
                    .then(response => response.json())
                    .then((data) => {
                        const userIP = data.ip;
                        sessionStorage.setItem(IP_STORAGE_KEY, userIP);
                        window.dataLayer = window.dataLayer || [];
                        window.dataLayer.push({
                            'event': 'userIPRetrieved',
                            'userIP': userIP
                        });
                    });
            }
        })();
    </script>
    
    
    
    
    
    <script>
    
        /* Global variables,functions and script */
    
    
        // FREE DEMO - Removes popular Free Email Providers
        const regEXBusiness =
            /^^([a-zA-Z0-9_\.+-]+@(gmail.*|yahoo.*|hotmail.*|aol.com|abc.com|yahoo.*|xyz.com|pqr.com|rediffmail.com|live.com|outlook.*|me.com|msn.com|ymail.com|mail.ru|protonmail.*|yopmail.*|icloud.*|gmx.*|vodamail.*|hostvn.net|email.com|yandex.*|kyriake.*))?$/;
    
        // FREE DEMO - Email validation && Common mistakes
        const regEXinvalidEmail =
            /^^([a-zA-Z0-9_\.+-]+@(gmil.com|gamil.*|gmial.*|icould.com|gmaail.*|gemail.*|gnail.*|gmai.com|gmaii.*|gmaik.*|gmsil.*|iclaud.*|hormail.*|kyriake.*))?$/;
    
        const synthesiaData = {
            // G2 data
            g2Score: 4.7,
            g2ReviewCount: 1246,
    
            // Platform data
            numberOfAvatars: 160,
            numberOfLanguages: 130,
            numberOfTemplates: 60,
            numberOfCustomers: 50000
        };
        const g2Score = 4.7;
        const g2ReviewCount = 4.7;
    
    
        // Global functions
    
        function debounce(func, wait, immediate) {
            var timeout;
            return function () {
                var context = this,
                    args = arguments;
                var later = function () {
                    timeout = null;
                    if (!immediate) func.apply(context, args);
                };
                var callNow = immediate && !timeout;
                clearTimeout(timeout);
                timeout = setTimeout(later, wait);
                if (callNow) func.apply(context, args);
            };
        }
    
        function throttle(func, limit) {
            let lastFunc;
            let lastRan;
            return function () {
                const context = this;
                const args = arguments;
                if (!lastRan) {
                    func.apply(context, args);
                    lastRan = Date.now();
                } else {
                    clearTimeout(lastFunc);
                    lastFunc = setTimeout(function () {
                        if ((Date.now() - lastRan) >= limit) {
                            func.apply(context, args);
                            lastRan = Date.now();
                        }
                    }, limit - (Date.now() - lastRan));
                }
            };
        }
    
    </script>
    
    
    <style>
        /*Hover effects for buttons*/
        .button.is-hover {
            background-color: var(--indigo-700);
            box-shadow: 0 6px 20px 0 var(--shadow);
        }
    
        .button-secondary.is-hover {
            background-color: var(--grey-200);
            box-shadow: 0 0 0 1px var(--grey-300), 0 6px 20px 0 var(--shadow);
        }
    
        .button-tertiary.is-hover {
            color: var(--indigo-700);
            text-decoration: underline;
        }
    
        .button-dark.is-hover {
            background-color: var(--indigo-300);
            box-shadow: 0 6px 20px 0 var(--shadow);
        }
    
        .button-secondary-dark.is-hover {
            background-color: var(--indigo-700);
            box-shadow: 0 0 0 1px var(--grey-300), 0 6px 20px 0 var(--shadow);
        }
    
        .button-tertiary-dark.is-hover {
            color: var(--indigo-100);
            text-decoration: underline;
        }
    
        /*Trailing icon animation for buttons*/
        .button.is-hover .w-embed:last-of-type,
        .button-secondary.is-hover .w-embed:last-of-type,
        .button-tertiary.is-hover .w-embed:last-of-type,
        .button-dark.is-hover .w-embed:last-of-type,
        .button-secondary-dark.is-hover .w-embed:last-of-type,
        .button-tertiary-dark.is-hover .w-embed:last-of-type {
            transform: translateX(.25rem);
        }
    
        /*Ability to select text on linkblock cards*/
        a[linkblock-card="true"] {
            -webkit-user-drag: none;
            user-select: text;
        }
    </style>
    <!-- END - Convert cards to linkblock -->
    
    <script>
        (function (global) { const SYN = {}; SYN.debug = false; function getTimestamp() { return new Date().toISOString() } SYN.log = function (...args) { if (SYN.debug) { console.log(`[${getTimestamp()}]`, ...args) } }; global.SYN = SYN })(typeof window !== 'undefined' ? window : global);
    </script><!-- Additional hreflang link -->
    <link rel="alternate" hreflang="sv" href="https://www.synthesia.io/sv">
    <link rel="alternate" hreflang="pt-br" href="https://www.synthesia.io/pt-br" /> 
    <link rel="alternate" hreflang="it" href="https://www.synthesia.io/it" />
    <link rel="alternate" hreflang="nl" href="https://www.synthesia.io/nl" /> 
    <link rel="alternate" hreflang="ja" href="https://www.synthesia.io/ja" /> 
    <!-- Script to add additional language selector item -->
    
    <script>
    // Get the preferred browser language
    const userLanguage = window.navigator.language.toLowerCase(); // Ensure it's lowercase for consistency
    
    // Define language redirects
    const languageRedirects = {
      'sv': '/sv',
      'it': '/it',
      'pt-br': '/pt-br',
      'nl': '/nl',
      'ja': '/ja'
    };
    
    // Check if the URL has no parameters
    if (!window.location.search && (window.location.href === 'https://synthesia-staging-eaffee4c3a254eec5b5e4.webflow.io/' || window.location.href === 'https://www.synthesia.io/')) {
      // Check if the user's language matches any in the redirects
      if (languageRedirects[userLanguage]) {
        window.location.href = languageRedirects[userLanguage];
      }
    }
    
    
    </script>
    
    <script>
    function runLocaleScript() {
      // Define function to clone and modify a language item
      function cloneAndModifyLanguageItem(wrapperSelector, languageOptions) {
        const localeItems = document.querySelectorAll(`${wrapperSelector} .w-locales-item`);
        if (localeItems.length === 0) return;
    
        const templateItem = localeItems[localeItems.length - 1];
    
        languageOptions.forEach(({ hreflang, href, languageCode, languageName }) => {
          const newItem = templateItem.cloneNode(true);
          const link = newItem.querySelector("a");
          if (link) {
            link.setAttribute("hreflang", hreflang);
            link.href = href;
            link.classList.remove("w--current");
          }
    
          const codeDiv = newItem.querySelector("div[lang-code]");
          if (codeDiv) {
            codeDiv.textContent = languageCode;
          }
    
          const nameDiv = newItem.querySelector("div[lang-name]");
          if (nameDiv) {
            nameDiv.textContent = languageName;
          }
    
          templateItem.insertAdjacentElement("afterend", newItem);
        });
      }
    
      const newLanguages = [
      	{ hreflang: "pt-br", href: "/pt-br", languageCode: "pt br", languageName: "Portuguese" },
        { hreflang: "ja", href: "/ja", languageCode: "ja", languageName: "日本語" },
        { hreflang: "nl", href: "/nl", languageCode: "nl", languageName: "Nederlands" },
        { hreflang: "it", href: "/it", languageCode: "it", languageName: "Italiano" },
        { hreflang: "sv", href: "/sv", languageCode: "sv", languageName: "Svenska" },
      ];
    
      cloneAndModifyLanguageItem(".navbar_dropdown-locale-list-wrapper", newLanguages);
      cloneAndModifyLanguageItem(".footer_dropdown-locale-list-wrapper", newLanguages);
    
    
      const navbarDropdownListCollection = document.querySelector("nav.navbar_dropdown-locale-list-container");
      const navbarLangCodeEl = navbarDropdownListCollection.querySelectorAll('div[lang-code=""]');
    
      const footerDropdownListCollection = document.querySelector(".footer_dropdown-locale-list-wrapper");
      const footerLangCodeEl = footerDropdownListCollection.querySelectorAll('div[lang-code=""]');
      
      navbarLangCodeEl.forEach((element) => {
        if (element.innerHTML.trim().toLowerCase() === "pt br") {
          element.innerHTML = element.innerHTML.replace(
            "br",
            '<span class="ptbr-lang-code-nav">br</span>'
          );
        }
      });
    
      footerLangCodeEl.forEach((element) => {
        if (element.innerHTML.trim().toLowerCase() === "pt br") {
          element.innerHTML = element.innerHTML.replace(
            "br",
            '<span class="ptbr-lang-code-footer">br</span>'
          );
        }
      });
    }
    
    const fallbackTimeout = setTimeout(runLocaleScript, 3000);
    
    document.addEventListener("localeProcessingComplete", function () {
      clearTimeout(fallbackTimeout);
      runLocaleScript();
    });
    </script>
    
    <link
      rel="preload"
      href="https://cdn.prod.website-files.com/65e89895c5a4b8d764c0d710/66436f06a1016be8fae136f3_Hero-Module.svg"
      as="image"
      type="image/svg+xml"
    />
    
    
    <script>
    document.addEventListener("DOMContentLoaded", function () {
      // List of country codes to redirect
      const redirectCountries = [
        "GB", "NZ", "AU", "CA", "AT", "BE", "BG", "CY", "CZ", "DE", "DK", "EE", "ES", "FI", 
        "FR", "GR", "HR", "HU", "IE", "IT", "LT", "LU", "LV", "MT", "NL", "PL", "PT", "RO", 
        "SE", "SI", "SK", "AL", "AD", "AM", "BY", "BA", "FO", "GE", "GI", "IS", "IM", "XK", 
        "LI", "MK", "MD", "MC", "ME", "NO", "SM", "TR", "UA", "RS", "CH", "VA", "US", "JP", 
        "KR", "HK", "SG", "BH", "KW", "OM", "QA", "SA", "AE", "IL", "MX", "BR", "ZA",
      ];
    
      const freeDemoBtn = document.querySelector("#free-demo-btn");
    
      // Function to check if the user is on a mobile device
      function isMobileDevice() {
        return /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
      }
    
      // Immediately fetch user's country code and update button href if necessary
      (async function checkAndSetButton() {
        try {
          // Get user's country code using the geojs API
          const response = await fetch("https://get.geojs.io/v1/ip/country.json");
          const data = await response.json();
          const countryCode = data.country.toUpperCase(); // Convert to uppercase
    
          // Log the country code
          // console.log("Country Code:", countryCode);
    
          // Update href attribute of #free-demo-btn if the user is from one of the specified countries and not on a mobile device
          if (redirectCountries.includes(countryCode) && !isMobileDevice()) {
            freeDemoBtn.setAttribute("href", "/pricing"); // Update href attribute
            freeDemoBtn.querySelector("div").innerText = "Get started for FREE";
            // French
            if (document.documentElement.lang === "fr") {
              freeDemoBtn.setAttribute("href", "/fr/tarifs"); // Update href attribute
              freeDemoBtn.querySelector("div").innerText =
                "Commencez gratuitement";
            }
            // German
            if (document.documentElement.lang === "de") {
              freeDemoBtn.setAttribute("href", "/de/preise"); // Update href attribute
              freeDemoBtn.querySelector("div").innerText =
                "Jetzt kostenlos loslegen";
            }
            // Spanish
            if (document.documentElement.lang === "es") {
              freeDemoBtn.setAttribute("href", "/es/precios"); // Update href attribute
              freeDemoBtn.querySelector("div").innerText =
                "Comienza gratis";
            } 
    
            return; // Stop further execution after updating href
          }
    
    
        } catch (error) {
          console.error("Error fetching country code:", error);
        }
      })();
    });
    </script>
    <style>
    /* No intercom on tablet/mobile */
    @media only screen and (max-width: 991px) {
      iframe#intercom-frame,
      .intercom-lightweight-app,
      div#intercom-facade-btn {
        display: none !important;
      }
    }
    header .muxplayer-core-placeholder {
      aspect-ratio: 16/9;
    }
    </style></head>

    Free AI Video Generator - Create AI Videos in 140 Languages

    Recherche META Description de la page

    Create AI generated videos from text with the most advanced AI avatars and voiceovers in 140+ languages. Try our free AI video generator now!

    Recherche META Keywords de la page

    UPDATE DOMAINES SET server='',redirection='https://www.synthesia.io/',Status='200',err='',[TITRE]=N'Free AI Video Generator - Create AI Videos in 140 Languages',[DESCRIPTION]=N'Create AI generated videos from text with the most advanced AI avatars and voiceovers in 140+ languages. Try our free AI video generator now!',[KEYWORDS]=N'' WHERE id=34004958
  • 0

    Free AI Video Generator - Create AI Videos in 140 Languages Create AI generated videos from text with the most advanced AI avatars and voiceovers in 140+ languages. Try our free AI video generator now

  • 0. Free (4)
  • --------->0
  • 1. AI (2)
  • --------->0
  • 2. Video (5)
  • --------->0
  • 3. Generator (9)
  • --------->0
  • 4. - (1)
  • --------->0
  • 5. Create (6)
  • --------->0
  • 7. Videos (6)
  • --------->0
  • 8. in (2)
  • --------->0
  • 9. 140 (3)
  • --------->0
  • 10. Languages (9)
  • --------->0
  • 13. generated (9)
  • --------->0
  • 15. from (4)
  • --------->0
  • 16. text (4)
  • --------->0
  • 17. with (4)
  • --------->0
  • 18. the (3)
  • --------->0
  • 19. most (4)
  • --------->0
  • 20. advanced (8)
  • --------->0
  • 22. avatars (7)
  • --------->0
  • 23. and (3)
  • --------->0
  • 24. voiceovers (10)
  • --------->0
  • 26. 140+ (4)
  • --------->0
  • 28. Try (3)
  • --------->0
  • 29. our (3)
  • --------->0
  • 34. now (3)
  • --------->0
    INSERT INTO KEYWORDS (keyword,id_domaine) VALUES (N'Free',34004958),(N'AI',34004958),(N'Video',34004958),(N'Generator',34004958),(N'-',34004958),(N'Create',34004958),(N'Videos',34004958),(N'in',34004958),(N'140',34004958),(N'Languages',34004958),(N'generated',34004958),(N'from',34004958),(N'text',34004958),(N'with',34004958),(N'the',34004958),(N'most',34004958),(N'advanced',34004958),(N'avatars',34004958),(N'and',34004958),(N'voiceovers',34004958),(N'140+',34004958),(N'Try',34004958),(N'our',34004958),(N'now',34004958)