<!DOCTYPE html>
<html lang="fr" class="dark" translate="no">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<meta name="robots" content="index, follow, noarchive, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<meta name="google" content="notranslate">
<meta name="apple-mobile-web-app-title" content="VODIAX" />
<meta name="application-name" content="VODIAX" />
<meta name="msapplication-TileColor" content="#000000" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Regardez des milliers de films et séries en streaming HD sur VODIAX. Catalogue complet en VF et VOSTFR, live TV, collections et watch parties synchronisées entre amis." />
<!-- Prefetch -->
<link rel="dns-prefetch" href="//image.tmdb.org">
<link rel="preconnect" href="https://image.tmdb.org" crossorigin>
<link rel="dns-prefetch" href="//www.gstatic.com">
<link rel="dns-prefetch" href="//www.google.com">
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
<link rel="dns-prefetch" href="//www.googletagmanager.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Bootstrap Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<!-- Icons -->
<link rel="icon" href="/vodiax.png" />
<link rel="icon" type="image/png" href="/vodiax.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="/vodiax.png" />
<link rel="shortcut icon" href="/vodiax.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/vodiax.png" />
<link rel="manifest" href="/assets/manifest-T1D6qpuK.json" />
<title data-rh="true">VODIAX — Films et séries en streaming gratuit | VF, VOSTFR, HD</title>
<!-- JSON-LD -->
<script type="application/ld+json" data-rh="true">
[
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "VODIAX",
"alternateName": "VODIAX Streaming",
"url": "https://vodiax.com",
"description": "VODIAX est une plateforme française open-source (CC BY-NC 4.0) de streaming multimédia : films, séries, anime, TV en direct et Watch Parties synchronisées.",
"logo": {
"@type": "ImageObject",
"url": "https://vodiax.com/thumbnail.png",
"width": 512,
"height": 512
},
"sameAs": [
"https://t.me/vodiax"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "contact@vodiax.com",
"availableLanguage": ["French", "English"]
}
},
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "VODIAX",
"url": "https://vodiax.com",
"inLanguage": "fr",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://vodiax.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
]
</script>
<script>
// Object.hasOwn is ES2022 (Chrome 93+, Safari 15.4+, Firefox 92+). react-markdown
// calls it directly; older Chromium builds (e.g. Chrome 88 on armv7l) crash without this.
if (typeof Object.hasOwn !== 'function') {
Object.defineProperty(Object, 'hasOwn', {
value: function (obj, prop) {
if (obj === null || obj === undefined) {
throw new TypeError('Cannot convert undefined or null to object');
}
return Object.prototype.hasOwnProperty.call(Object(obj), prop);
},
configurable: true,
writable: true,
});
}
</script>
<script>
(() => {
const buildId = '2026-06-07T22:58:05.162Z';
const buildStorageKey = 'vodiax_build_id';
const recoveryStorageKey = `vodiax_build_recovery_${buildId}`;
const refreshSearchParam = 'vodiax_build_refresh';
const buildRecoveryUrl = () => {
const url = new URL(window.location.href);
url.searchParams.set(refreshSearchParam, `${buildId}-${Date.now()}`);
return url.toString();
};
const recoverClientCache = async () => {
try {
if ('serviceWorker' in navigator) {
const registrations = await navigator.serviceWorker.getRegistrations();
await Promise.all(registrations.map((registration) => registration.unregister()));
}
if ('caches' in window) {
const cacheKeys = await caches.keys();
await Promise.all(cacheKeys.map((cacheKey) => caches.delete(cacheKey)));
}
} catch {
// Ignore cleanup errors and continue with reload.
}
try {
localStorage.setItem(buildStorageKey, buildId);
sessionStorage.setItem(recoveryStorageKey, 'done');
} catch {
// Ignore storage errors.
}
window.location.replace(buildRecoveryUrl());
};
try {
const currentUrl = new URL(window.location.href);
const previousBuildId = localStorage.getItem(buildStorageKey);
const alreadyRecovered = sessionStorage.getItem(recoveryStorageKey) === 'done';
if (previousBuildId && previousBuildId !== buildId && !alreadyRecovered) {
window.__VODIAX_CACHE_RECOVERY__ = recoverClientCache();
return;
}
localStorage.setItem(buildStorageKey, buildId);
if (currentUrl.searchParams.has(refreshSearchParam)) {
currentUrl.searchParams.delete(refreshSearchParam);
window.history.replaceState({}, document.title, currentUrl.toString());
}
} catch {
// Ignore storage errors.
}
window.addEventListener('error', (event) => {
const target = event.target;
if (!(target instanceof HTMLScriptElement)) return;
if (target.type !== 'module') return;
if (!target.src.includes('/assets/')) return;
try {
if (sessionStorage.getItem(recoveryStorageKey) === 'done') {
return;
}
} catch {
// Ignore storage errors.
}
window.__VODIAX_CACHE_RECOVERY__ = recoverClientCache();
}, true);
})();
</script>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" async defer></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-6Q3B4D5KQL"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-6Q3B4D5KQL');
</script>
<script type="module" crossorigin src="/assets/index-1VynlW92.js"></script>
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-BM3Ffeng.js">
<link rel="modulepreload" crossorigin href="/assets/react-vendor-B2zTXonl.js">
<link rel="modulepreload" crossorigin href="/assets/preload-helper-D0Ht-rXe.js">
<link rel="modulepreload" crossorigin href="/assets/axios-Ck85Y7Ue.js">
<link rel="modulepreload" crossorigin href="/assets/embla-carousel-react.esm-IYrl0Hwr.js">
<link rel="modulepreload" crossorigin href="/assets/motion-CuQ1A4eW.js">
<link rel="modulepreload" crossorigin href="/assets/i18n-BCamVEs6.js">
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-CpkCjL1B.js">
<link rel="modulepreload" crossorigin href="/assets/calendar-vhkz3u-D.js">
<link rel="modulepreload" crossorigin href="/assets/check-DB7niP43.js">
<link rel="modulepreload" crossorigin href="/assets/chevron-down-CmTgdz7H.js">
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DX3Gk3Dm.js">
<link rel="modulepreload" crossorigin href="/assets/chevron-right-DCl2UxqU.js">
<link rel="modulepreload" crossorigin href="/assets/info-pAEvxhFN.js">
<link rel="modulepreload" crossorigin href="/assets/pause-BufUXqj_.js">
<link rel="modulepreload" crossorigin href="/assets/play-BaBcFX-M.js">
<link rel="modulepreload" crossorigin href="/assets/star-Bj1M4FCt.js">
<link rel="modulepreload" crossorigin href="/assets/trash-2-Bydk_aUP.js">
<link rel="modulepreload" crossorigin href="/assets/x-Br6SdusE.js">
<link rel="modulepreload" crossorigin href="/assets/radix-BL9W-jxC.js">
<link rel="modulepreload" crossorigin href="/assets/utils-Dr_D45xM.js">
<link rel="modulepreload" crossorigin href="/assets/lazyWithRetry-CO5UFAbj.js">
<link rel="modulepreload" crossorigin href="/assets/PrefetchLink-B2kgl7lr.js">
<link rel="modulepreload" crossorigin href="/assets/shiny-text-B1zEMptb.js">
<link rel="modulepreload" crossorigin href="/assets/i18n-hze2w9Bg.js">
<link rel="modulepreload" crossorigin href="/assets/syncStorage-CXs3Y8mL.js">
<link rel="modulepreload" crossorigin href="/assets/vipUtils-CJHCtwRp.js">
<link rel="modulepreload" crossorigin href="/assets/ProfileContext-CstFqmxm.js">
<link rel="modulepreload" crossorigin href="/assets/accountAuth-CBmVQedp.js">
<link rel="modulepreload" crossorigin href="/assets/idEncoder-CETPrrV5.js">
<link rel="modulepreload" crossorigin href="/assets/tmdbKeywords-B6G40cOz.js">
<link rel="stylesheet" crossorigin href="/assets/motion-fOJvfYOR.css">
<link rel="stylesheet" crossorigin href="/assets/PrefetchLink-CGmq9_dR.css">
<link rel="stylesheet" crossorigin href="/assets/index-D95GrcRM.css">
<meta property="og:url" content="https://vodiax.com/" />
<meta property="og:type" content="website" />
<meta property="og:title" content="VODIAX — Films et séries en streaming | VF, VOSTFR, HD" />
<meta property="og:description" content="Découvrez VODIAX, une plateforme de streaming en développement avec films, séries, VF, VOSTFR, HD et une expérience moderne pensée pour la communauté." />
<meta property="og:image" content="https://vodiax.com/thumbnail.png" />
<meta property="og:image:secure_url" content="https://vodiax.com/thumbnail.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:site_name" content="VODIAX" />
</head>
<body>
<div id="root"></div>
<script>
// Cache-bust the Cast SDK URL on every page load so a stale SDK never
// sticks around in the browser/SW cache (defensive — gstatic already
// sets sane Cache-Control, but cinepulse does this too).
(function loadCastSender() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1&cb=' + Date.now();
document.body.appendChild(s);
})();
</script>
</body>
</html>