Vue Video Player and Video Gallery
<!-- VideoGallery.vue -->
<script setup lang="ts">
import { onMounted } from "vue";
const props = defineProps<{ id: string }>();
const SRC = "https://elfsightcdn.com/platform.js";
onMounted(() => {
if (document.querySelector(`script[src="${SRC}"]`)) return;
const s = document.createElement("script");
s.src = SRC;
s.async = true;
document.body.appendChild(s);
});
</script>
<template>
<div :class="`elfsight-app-${props.id}`" data-elfsight-app-lazy />
</template>Trusted by over 3,000,000 small businesses, agencies and top global brands worldwide
Configure it visually — drop it into your Vue app
- 1. Choose a template
- 2. Connect your videos
- 3. Add to website
Why build a video gallery in Vue from scratch?
What building it yourself really takes
Fetching and caching
Player and popup
Vertical video
Layouts
SEO and analytics
Maintenance
Client edits
With Elfsight Video Gallery
<VideoGallery id="YOUR-ID" />No API keys or quotas in your app
Feeds from YouTube, Vimeo, TikTok, Instagram Reels, Twitch and any link
7 layouts, popup player, CTA card
Schema.org markup and Google Analytics
Maintained by Elfsight when platforms change
Drop-in integration for Vue
The Vue component
Vue 3 and Nuxt. In Nuxt, the script is added in onMounted, so it only runs on the client.
Composition API. A tiny single-file component with one prop.
Multiple instances. Use the component as many times as you need; the loader is shared.
<!-- VideoGallery.vue -->
<script setup lang="ts">
import { onMounted } from "vue";
const props = defineProps<{ id: string }>();
const SRC = "https://elfsightcdn.com/platform.js";
onMounted(() => {
if (document.querySelector(`script[src="${SRC}"]`)) return;
const s = document.createElement("script");
s.src = SRC;
s.async = true;
document.body.appendChild(s);
});
</script>
<template>
<div :class="`elfsight-app-${props.id}`" data-elfsight-app-lazy />
</template>Performance and security
Async and lazy
No dependencies
No keys in your code
Works with strict security policies
Customize it like code — or don’t write any
Custom CSS
Custom JS
Visual editor
Filters and sorting
Hand off to clients
No redeploys
Everything the widget does for you

YouTube

TikTok

Instagram Reels

Vimeo

Twitch

Any video link

Popup player

CTA after the video

Schema.org markup

Channel header

Analytics events
Elfsight vs. building with Vue libraries
Time to ship
Video Gallery
Build with player libraries
Sources
Video Gallery
Build with player libraries
API keys in your app
Video Gallery
Build with player libraries
Feeds update automatically
Video Gallery
Build with player libraries
Layouts, popup, CTA card
Video Gallery
Build with player libraries
Schema.org and Google Analytics
Video Gallery
Build with player libraries
Custom styling and behavior
Video Gallery
Build with player libraries
Clients edit content without you
Video Gallery
Build with player libraries
Maintenance when APIs change
Video Gallery
Build with player libraries
Need DRM, custom analytics pipelines or a fully bespoke player? Build it — start with our Video.js vs react-player vs hls.js comparison.