npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

get-video-id

v4.1.7

Published

Get the YouTube, Vimeo, Vine, VideoPress, TikTok, Microsoft Stream, Loom or Dailymotion video id from a url or embed string.

Downloads

194,774

Readme

get-video-id codecov

Get the YouTube, Vimeo, Vine, VideoPress, TikTok, Microsoft Stream, Loom or Dailymotion video id from a url or embed string.

Pull Requests are welcome if you would like to see support for other video services or if you find an unsupported video url pattern.

Install

You can install with npm:

$ npm install --save get-video-id

or with yarn:

$ yarn add get-video-id

Import

You can use this module in Node.js or in the browser. See below for the different importing options.

CommonJS

const getVideoId = require('get-video-id');

ES Module

import getVideoId from 'get-video-id';

Browser

<script src="https://cdn.jsdelivr.net/npm/get-video-id/dist/get-video-id.umd.min.js"></script>
Download
CDN

Usage

Simply supply the module with a url or embed string matching any of the patterns known by this module and its metadata of id and service will be returned:

import getVideoId from 'get-video-id';

getVideoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
//=> { id: 'dQw4w9WgXcQ', service: 'youtube' }

const { id } = getVideoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
//=> 'dQw4w9WgXcQ'

get-video-id can also find the video buried in a Google redirection URL if it contains a reference to any of the supported URL patterns.

getVideoId('https://www.google.cz/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwj30L2MvpDVAhUFZVAKHb8CBaYQuAIIIjAA&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ');
//=> { id: 'dQw4w9WgXcQ', service: 'youtube' }

API

getVideoId(input)

Returns a metadata Object with the video id and service name:

{
  id: `String` | `undefined`,
  service: `String` | `undefined`
}

input

Type: String

The url (or embed code, or google redirect url) from which you want to find the video id. See the Patterns section to see the formats that can be supplied.

Patterns

This module works on the url / embed patterns below. (where * is the id and ? or & are parameter strings):

YouTube

YouTube Shortcodes

http://youtu.be/*?
https://youtu.be/*
http://youtu.be/*
http://y2u.be/*
youtube://

YouTube Shorts

https://youtube.com/shorts/*
https://www.youtube.com/shorts/*

YouTube /v/ or /vi/

http://www.youtube.com/v/*
http://youtube.com/vi/*?
http://youtube.com/v/*?

YouTube v= or vi=

http://www.youtube.com/ytscreeningroom?v=*
http://www.youtube.com/watch?v=*?&
https://www.youtube.com/watch?v=*
http://youtube.com/watch?vi=*&
http://youtube.com/?vi=*&
http://youtube.com/?v=*

YouTube /e/

https://www.youtube.com/e/*
https://www.youtube.com/e/*?
http://www.youtube.com/e/*
http://www.youtube.com/e/*?

YouTube image links /vi/*/ or /an_webp/*/

https://i.ytimg.com/vi/*/hqdefault.jpg
https://i.ytimg.com/an_webp/MYDcdp-VNmQ/mqdefault_6s.webp

YouTube embed

http://www.youtube.com/embed/*?
https://www.youtube.com/embed/*

YouTube user

http://www.youtube.com/user/username#p/a/u/2/*
http://www.youtube.com/user/username#p/u/1/*?
http://www.youtube.com/user/username#p/u/1/*

YouTube iframe

<iframe width="560" height="315" src="https://www.youtube.com/embed/*" frameborder="0" allowfullscreen></iframe>

YouTube -nocookie

www.youtube-nocookie.com/embed/*?

YouTube Attribution Link

http://www.youtube.com/attribution_link?u=%2Fwatch%3Fv%3D*%26
http://www.youtube.com/attribution_link?u=%2Fwatch%3Fv%3D
http://www.youtube.com/attribution_link?u=/watch?v=*&
http://www.youtube.com/attribution_link?u=/watch?v=*
http://www.youtube.com/attribution_link?/watch?v=*

YouTube live URLs

https://www.youtube.com/live/*
https://youtube.com/live/*
https://youtube.com/live/*?

Google Redirection to YouTube

https://google.cz/url?source=web&url=<YOUTUBE_URL>
https://google.com/image?url=<YOUTUBE_URL>

Vimeo

Vimeo urls

https://vimeo.com/*
https://vimeo.com/*?
https://player.vimeo.com/video/*
https://player.vimeo.com/video/*?
https://www.vimeo.com/*
https://www.vimeo.com/*?

Vimeo swf embed

http://vimeo.com/foo.swf?clip_id=1234

Vimeo events

https://vimeo.com/event/*

Vimeo iframe

<iframe src="https://player.vimeo.com/video/*" ...

Vimeo unlisted/private urls

https://vimeo.com/*/privateHash

⚠️ Please note: That get-video-id will extract the id from the private/unlisted URLs formats for Vimeo, but the private hash would still be required to rebuild the URL in order to make it reachable/sharable in a browser. If you use get-video-id to help you rebuild URLs, you will want to look for this pattern yourself and remember to include the privateHash in the url you want to share. get-video-id focuses on extracing video ids, and ignores any other special paramaters or formats at the moment.

Vine

Vine urls

https://vine.co/v/*

Vine iframe

<iframe src="https://vine.co/v/*/embed/simple" width="600" height="600" frameborder="0"></iframe>
<iframe src="https://vine.co/v/*/embed/postcard" width="600" height="600" frameborder="0"></iframe>

VideoPress

VideoPress urls

https://videopress.com/v/*
https://videopress.com/embed/*

VideoPress iframes

<iframe src="https://videopress.com/embed/zcnJVzQF" width="600" height="600"></iframe>

Microsoft Stream

Microsoft Stream urls

https://web.microsoftstream.com/video/*
https://web.microsoftstream.com/embed/video/*

Microsoft Stream iframes

<iframe src="https://web.microsoftstream.com/embed/video/*?&" width="640" height="360"></iframe>

TikTok

TikTok urls

https://www.tiktok.com/*/video/*
https://www.tiktok.com/*/video/*?

:warning: Unsupported TikTok urls

  • Shortlink URL (requires a fetch/redirect to find the real id) : https://vm.tiktok.com/shorLinkId/

Dailymotion

Dailymotion urls

http://www.dailymotion.com/video/*_text
http://www.dailymotion.com/video/*
http://www.dailymotion.com/fr/relevance/search/search+query/1#video=*
https://www.dailymotion.com/video/*?playlist=
http://dai.ly/*

Dailymotion iframes

<iframe src="https://www.dailymotion.com/embed/video/*" width="600" height="600"></iframe>

:warning: Unsupported Dailymotion urls

  • Channel id urls: http://www.dailymotion.com/hub/*_title

Loom

Loom urls

https://www.loom.com/share/*
https://www.loom.com/share/*?
https://www.loom.com/embed/*

Loom iframes

<iframe src="https://www.loom.com/embed/*" width="600" height="600"></iframe>

Contributing

If you discover a url pattern that is not covered by this module, please open an issue to report it, or submit a Pull Request. For any submitted pull requests, please ensure that you include unit test(s) to fully cover your code contribution(s).

License

MIT © Michael Wuergler