# libvideo wraps YouTube video downloading in a small .NET library

> libvideo, published on NuGet as VideoLibrary, is a .NET library whose whole surface is a YouTube entry point, a Video object and a byte fetch, and it targets everything from .NET Core 2.0 to Unity and Xamarin. It suits a C# developer who needs a video download inside an existing application, and it ships no GitHub releases, so there is no versioned upgrade path beyond the NuGet package.

**omansak/libvideo** — A lightweight .NET library to download YouTube videos.

- Repository: https://github.com/omansak/libvideo
- Stars: 581 · Forks: 159
- Language: C#
- License: BSD-2-Clause
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/omansak-libvideo

## The whole API is a YouTube entry point and a Video object

The surface area is what makes this library easy to judge. The readme describes libvideo, also known as VideoLibrary, as a modern .NET library for downloading YouTube videos that is portable to most platforms and very lightweight, and the sample in the readme is the entire usage story. You reach the library through a static entry point, YouTube.Default, described in the code comment as the starting point for YouTube actions, you call GetVideo with a link to get a Video object with info about the video, and you write the bytes to disk with video.GetBytes.

```csharp
using VideoLibrary;

void SaveVideoToDisk(string link)
{
    var youTube = YouTube.Default; // starting point for YouTube actions
    var video = youTube.GetVideo(link); // gets a Video object with info about the video
    File.WriteAllBytes(@"C:\" + video.FullName, video.GetBytes());
}
```

Three calls, one of them a factory that returns a Video carrying both metadata and content. There is no playlist abstraction, no progress event and no cancellation token in this sample, which is worth noting because it tells you the library is aimed at the simple case, and the richer paths are the ones documented in the docs directory rather than the ones shown up front.

## The platform table is the real feature list for a .NET library

A library that has to run everywhere spends most of its compatibility budget on the target frameworks, and libvideo publishes that budget as a table. .NET and .NET Core are supported from .NET Core 2.0 and .NET 5 upwards with full support for .NET Standard 2.0 libraries. .NET Framework is supported from 4.6.1, and the notes are specific that it supports .NET Standard 2.0 and does not support 2.1. Mono is supported from 5.4 with official support for .NET Standard 2.0. Unity is supported from 2018.1 with a requirement that the scripting runtime be set to .NET 4.x Equivalent. The Xamarin targets are Xamarin.iOS from 10.14, Xamarin.Android from 8.0 and Xamarin.Mac from 3.8, all supporting .NET Standard 2.0 libraries. Universal Windows Platform is supported from 10.0.16299, which is stated as the version this support starts from. For a library this small, that list is the substance, because each entry is a promise about a runtime you have to test on.

## Install from NuGet, or build the repo when you want fresh assemblies

Installation is a package reference, and the readme notes that you can try building the repo if you like your assemblies extra-fresh.

```bash
    Install-Package VideoLibrary
```

The package id is VideoLibrary even though the project is called libvideo, which is a small trap for anyone searching the NuGet gallery by project name. The repository layout is conventional for a .NET library, with src, tests, docs and samples directories, an icons directory, a changelog.md and a .gitattributes file. There is no separate build script to learn, because the project is a normal .NET build, and the source of truth for the API is the XML documentation in src rather than a hand-written document. The samples directory holds a single example project, named Valks, and the readme is candid about the name being silly, which is a good sign about the tone of the project. There is also a Discord linked from the readme for support, which is where the questions about a YouTube library realistically go.

## Chunked downloading exists for the large files

The documentation list includes a Fast Downloader with Chunks, and the readme points at the file in the source tree, src/libvideo.debug/CustomYoutubeClient.cs, which is where you would look to see how a custom client is wired in. The name tells you the intent, which is that the default path of get everything then write it to disk is not what you want for a large file, and a chunked approach lets you pull the bytes in pieces. The placement of that file matters, because it lives under a directory named libvideo.debug, so it is presented as a worked example rather than a shipped API surface, and it doubles as the reference for extending the client. This is the one area where the library is more than a thin wrapper, and it is the area a developer building an application with a progress bar or a resumable transfer will need. The rest of the readme is a two-call sample, so the division between what is documented in the readme and what is in the docs directory is worth noticing before you plan around the library.

## The Visual Basic sample confirms the API shape

There is a Visual Basic version of the same sample, and it is useful because it shows the API without the C# syntax getting in the way. The imports line is VideoLibrary, the call chain is YouTube.Default.GetVideo(link) returning a video object, and the write is File.WriteAllBytes with the video's FullName concatenated onto a path.

```vbnet
Imports VideoLibrary

Sub SaveVideoToDisk(ByVal link As String)
     Dim video = YouTube.Default.GetVideo(link)
     File.WriteAllBytes("C:\" & video.FullName, video.GetBytes())
End Sub
```

The library is published as a NuGet package with both download and version badges pointing at the same package id, VideoLibrary, and a Discord community link beside the licence badge. The licence is the BSD 2-clause license, which is a permissive choice for a library that people embed in applications. For a C# developer, the practical read of the whole readme is that this is a NuGet package you reference, a static YouTube entry point you call, and a Video object you write to disk, with the more advanced paths documented elsewhere in the repository.

## Where libvideo is the wrong choice

The first wrong case is a service that has to keep working over time. The library is a wrapper around YouTube's own endpoints, and it is maintained by a small project, so when YouTube changes something the person who has to fix it is whoever depends on it. A pipeline that is a deliverable for a customer needs a supported dependency or a fork you control, and the readme points at a Discord rather than at a support contract. The second wrong case is anything with DRM, since the library downloads video and the documentation does not describe any handling of protected streams. The third is a large-scale downloader, because the readme shows a synchronous get-bytes-and-write-it pattern with no mention of rate limiting, retries or parallel fetching, and a bulk download is exactly where those details decide whether the request works or gets you blocked. The fourth is a project on .NET Standard 2.1 or a modern runtime where the package is not listed as supported, and the fifth is anyone who needs the metadata without the video, since the API is built around fetching bytes.

## Conclusion

C# developers who need a YouTube download inside an existing desktop, mobile or Unity application, and who want a library rather than a command line tool, are the people libvideo is for, and the fact that it targets .NET Standard 2.0 and runs on Unity and Xamarin is unusual reach for a library this small. It is the wrong tool for a server-side pipeline that has to survive YouTube changing its player, since the library is a thin wrapper whose maintenance burden lands on whoever depends on it, and it is the wrong tool for anyone who needs DRM-protected or licensed content, which is outside what the library does. Check three things before you adopt it: that the NuGet package version you would pin still works against the YouTube endpoints it expects, since the repository publishes no releases and the last push was on 2026-09-24, that your target framework is on the support list, noting the .NET Framework 4.6.1 requirement and the explicit statement that .NET Standard 2.1 is not supported, and that downloading YouTube video is permitted for the content you intend to fetch. The licence is BSD 2-clause, and the project points to a Discord for support.

## FAQ

### What is the NuGet package name for libvideo?

The package id is VideoLibrary, and the readme gives the install command as Install-Package VideoLibrary. The project itself is called libvideo, also known as VideoLibrary, and the repository is not published as GitHub releases.

### How do I download a YouTube video with libvideo?

Get the library through YouTube.Default, call GetVideo with the link to get a Video object with information about the video, and write the bytes to disk with video.GetBytes. The readme shows this in both C# and Visual Basic.

### Which frameworks does libvideo support?

The table lists .NET Core 2.0 and .NET 5 or later, .NET Framework 4.6.1 and later with .NET Standard 2.0 and explicitly not 2.1, Mono 5.4 and later, Unity 2018.1 and later with the .NET 4.x Equivalent scripting runtime, Xamarin.iOS 10.14, Xamarin.Android 8.0, Xamarin.Mac 3.8, and UWP from 10.0.16299.

### Does libvideo support chunked or fast downloading?

The documentation lists a Fast Downloader with Chunks, and the readme links the source file src/libvideo.debug/CustomYoutubeClient.cs where a custom client is implemented. That file sits under a debug directory, so it is presented as a worked example rather than a shipped API.

### What licence is libvideo released under?

The BSD 2-clause license, as stated in the readme and pointed to by the LICENSE file in the repository root. The last push was on 2026-09-24.

## Sources

- [Issues](https://github.com/omansak/libvideo/issues)
- [License: BSD-2-Clause](https://github.com/omansak/libvideo/blob/master/LICENSE)
- [omansak/libvideo on GitHub](https://github.com/omansak/libvideo)
- [README](https://github.com/omansak/libvideo/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/omansak-libvideo
