VoD Archiving Guide (For Twitch Streams)

This guide was created to make VoD archiving as simple and clear as possible, so anyone who wants to archive VoDs can do so. I had previous information about VoD archiving in pastebins, but I wanted to create a guide that could serve as a starting point for anyone looking to archive VoDs.

An important note to any Vtuber/Content Creator that may be reading this:

If you happen to accidentally show any sensitive information on stream, and you want to make sure the content is gone and cant be accessed with 3rd party tools, make sure to actually DELETE the vod from your Twitch Dashboard. If you only unlist the Vod 3rd Party Tools exist to access unlisted twitch vods (I wont cover these in this guide for obvious reasons).

Below is a list of the topics that will be covered in this guide to VoD Archival on Twitch:


Here is a list of archiving programs that are commonly used to archive VODs:

FFmpeg: Link — Mirror

Streamlink: Link  — Mega Mirror

Twitch Stream Recorder: Link — Mega Mirror

Yt Archive: Link — Mega Mirror

YT-DLP: Link 

Twitch Recover: Link — Mega Mirror

Vod Recovery: Link — Mega Mirror

Twitch Leecher: Link — Mega Mirror

Twitch Downloader: Link — Mega Mirror

Chat Downloader: Link — Mega Mirror

Windows Terminal: Link

                             




Streamlink (Basic Tool for Twitch Recording):

You can download Streamlink from here: Link

Mirror for Streamlink: Mega 

Streamlink supports many other websites. All of the supported websites can be found here: Link

Recording streams using Streamlink is relatively easy, and it follows this specific format:

streamlink [URL] [QUALITY] -o [OUTPUTNAME].mp4

Here is one example of Streamlink running while recording a Twitch stream:

For this example, I've used the following command:

streamlink https://www.twitch.tv/projektmelody best -o insertvodnamehere.mp4

Here is an easy to understand example as how to make a command for Streamlink yourself:

streamlink [URL] [QUALITY] -o [OUTPUTNAME].mp4 --[Options]

streamlink https://www.twitch.tv/nyanners 1080p60 -o nyannersvod.mp4 --retry-streams 15

The [URL] should be self explanatory -  but for the [QUALITY], I’ve used 1080p60, for the  [OUTPUTNAME] I've chosen nyannersvod.mp4, and as an --[Option] I've used the --retry-streams 15 option.

Streamlink accepts many options for QUALITY for Twitch streams:

audio_only, 160p, 360p , 720p,720p60, 1080p, 1080p60, as well as 'best' to automatically select the best quality version of the stream.

As for the available options ,it would take too much space to put them all into this guide  - so here's the link to the Streamlink documentation, with all the options listed: Link




Twitch Stream Recorder (24/7 Recording Script):

This Python script is similar to Streamlink, but it runs continuously and doesn't stop after the livestream ends. This is what you want to use if you want to record a stream 24/7, or even a channel 24/7. It's what I used to use to record Nyanners VoDs, and it works great!

You can download Twitch Stream Recorder from here: Link

Mirror for Twitch Stream recorder (this includes the 2022-12-26 line fix): Mega 

You will need all of the following installed for this to work:

Python: Link

Streamlink: Link

Requests module: Link

 

You also need to have FFmpeg installed for Twitch stream recorder to be able to mux the final file. Simply check google for an installation guide, or check out the following video on how to install FFmpeg: Link  Mirror

 

"Installing" Twitch Stream Recorder:

Basically, this is the easiest part of this - just put the "twitch recorder.py" and the "config.py" files into your "c:/Users/Username/" folder and edit the "config.py" file.

  

Editing the Config File:

Root Path = C:/Streams - default path where Recorded VODs will be saved you can change C:/ to whatever drive letter you want to save recorded VODs to.

Username = Twitch channel name of the person you want to record.

Client_id = You can get this from here after registering an application: Link

Client_secret = You can also get this from here after registering an application: Link

 

To make it easier to understand how to get the Client ID and Secret ID, let me add the following:

Into the "Name", just type whatever you want to name this thing.

In the "OAuth Redirect URLs", just put in the following:  https://localhost

For the category, I used "Application Integration"

Then you click on create:

After that, click on the captcha, confirm you are not a robot, and click on "create".

After, that click on "Verify", and after that, in the "Developer Applications" window, click "manage" on the new application you just registered:

There, you will find the "client ID" that you need. Under Client Secret you can generate the "Client Secret" by clicking on "New Secret":

Press OK on the popup window, and after that is done, click on "Save".  You now have both the "client ID" and "Secret client id" you need to input into your "config.py" file of Twitch stream recorder for it to work.

 

Using Twitch Stream Recorder:

 

To use Twitch recorder simply copy and paste any of these and put them into a terminal/CMD Window and press enter

and it should start checking if your desired channel goes live every 15 seconds:

 

To make it easy here the command line command that you can just copy and paste into a command line window:

 

python twitch-recorder.py -u Insert_Twitch_Channel_Name_Here

 

Simply replace the "Insert_Twitch_Channel_Name_Here" with your desired Twitch channel you wish to record.

As this also uses streamlink you can basically use options from the streamlink page: Link

—-------------------------

-2022-12-26 - Update:

Since Twitch started to embed ads, You will need to change the following line in the script to add your oauth token to the above mentioned script. You will not have to do so with the version in the section below as with that one you simply need to add your oauth key in the config file.

To make it simple all you have to do is add the following line:

"--twitch-api-header=Authorization=OAuth abcdefghijklmnopqrstuvwxyz123456"

You need to replace the OAuth Token (abcdefghijklmnopqrstuvwxyz123456) with your own OAuth Token (ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890).

If you don't wish to edit the line yourself, you can use the linked script containing the updated OAuth Token instead.

Please note that the “--twitch-disable-ads” line no longer prevents advertisements from being recorded during streams to my knowledge."

Chat GPT Edited version of Twitch Stream Recorder:

This is an Chat GPT 4 Edited version of the recording script. This edited version wasnt created by me:

The Options should be self explanatory for what you need to replace them with, but for completion's sake (make sure to remove the brackets [ + ] when adding your stuff there):

Check Interval = the time it "pings" if a channel is live

Wait  before processing = the time the script is supposed to wait until it starts processing the vod in seconds.

Check interval while awaiting processing = Seems to be some additional waiting time before the vod gets processed after the waiting period is over.

Root Path is basically the folder where you want the recorded vods to be stored in. Some examples of the script running:

Other than that it's basically the same as the old script just with an option to set the OAuth Key in the config file instead of the script itself.

Overall this is the script to go to, as it adds some very useful Quality of life options.


Links:
Mega Mirror — Ms Onedrive Mirror




Getting the OAuth Token (to Avoid ad breaks in recordings):

This Is just a simplified version of the Streamlink page about this to make this a bit easier to understand to people that have absolutely no idea about this: Link

First off you need to log into your twitch account after that you either Press F12 or Ctrl+Shift+I which opens the Console window:

In that window you have to run the following JavaScript snippet:

document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1]

And you will get the Authorization Key:

Now that you have the Authorization key you can either use it with Streamlink with the following command:

streamlink https://www.twitch.tv/Twitch_Channel  1080p60 -o Vod_Name_Here.mp4 --retry-streams 15 "--twitch-api-header=Authorization=OAuth abcdefghijklmnopqrstuvwxyz123"

And it will start recording the stream using your cookies:

The goal of this method, as stated previously, is to avoid ads in your recording.

Optionally, you could disable ads via a Twitch Link (which is an alternative link for the stream that only works for subscribers).

You can also create a config file (to find this in windows, use the key combination: Windows key + R, paste the path and press Enter) and paste the following into it:

Windows

  • %APPDATA%\streamlink\

Deprecated:

  • %APPDATA%\streamlink\

Linux, BSD

  • ${XDG_CONFIG_HOME:-${HOME}/.config}/streamlink/config.pluginname

Deprecated:

  • ${HOME}/.streamlinkrc.pluginname

You can just open the config file with the windows Text editor and add the Authorization key to the config file:

Save it and it should use your cookies by default.




TwitchArchiverWPF (Windows only):

You Can Download TwitchArchiverWPF here: Link — Mega Mirror: Link

TwitchArchiverWPF is a nice alternative to Streamlink, as it offers a GUI (Graphical User Interface) instead of the Command Line Interface (CLI) of Streamlink. The main interface of the software looks like this.

You can easily add a streamer by using the add a streamer button in the lower right corner.

The settings page for this software is relatively simple, and it has options such as:

You can add your OAuth Token in the settings. This will help prevent the video from the stream from having ads added while it's being recorded.

Another alternative option would be to use the “Use TTV.LOL” option, which allows you to avoid having to input the OAuth Token yourself.

According to the creator of this software, the use of this option provides the following advantages:

TTV.LOL is an adblocking extension for Twitch. If this option is selected it will use TTV.LOL servers which proxy the stream playlist request to a region where ads aren't served. This breaks occasionally and I cannot control it, use at your own risk. If you're subbed to the streamer you want to archive, use a Live OAuth instead. This option overrides Live OAuth.

As the creator of this program said this might break occasionally so i wouldn't use it myself but i thought this was worth mentioning at least as it is an option, but i'd recommend using a sub for the streamer you want to record or twitch turbo instead of you want to make sure to not have any ads in your recordings using this program to record Streams.

Now that this is covered let me continue if you click on “add streamer” the following window opens:

This is pretty self explanatory but all you have to do is add the streamers name, edit your preferred options and click on “add” and the steamer will be added to your default recording list:

While there is no major downside to using this program, if you are familiar with Command Line Interfaces, then Streamlink may still be a better option for you.

However, if you would prefer a Graphic User Interface (GUI), this program is a great alternative to Streamlink for Windows users. This software allows you to have a similar experience to Streamlink without having to deal with the CLI.




TwitchLink (Windows Only):

You can download Twitchlink here: Link — Mega Mirror: Link

So first off this is an easy way to record live streams if you want to use something that has an UI and don't want to bother setting up Streamlink/Twitch Stream recorder, the thing about twitch link is that that you can't schedule stuff unlike with streamlink, but it does have a good use for casual users that just wants to record an currently ongoing stream.

So to start off with this is the first window that pops up after you installed Twitch Link:

You can either record using a channel id, a video/clip id (basically Vods) and using an streamer URL as in https://www.twitch.tv/Username to record an ongoing live stream, for this example we are using a Twitch url, the following window will open:

Into that field you enter your link and click on “ok”, after this the following window shows up:

Press on “Live Download” and you will get the following message:

If you want to avoid ads in recording just log into your account with TwitchLink if you have a subscription to the channel you want to record or are using Twitch turbo it won't have any ad breaks in your recordings, but you can just click on “ok” to continue. After that the following window opens:

And you can choose the file format (either .mp4 or.ts) and choose your desired resolution, after youre done click on “ok” and it should start the recording:

Overall I can recommend this if you just want to record a stream you know you will be there to record it as you can schedule things with twitch link, but for casual users or one time downloads this is perfect.




YTarchive (For YouTube streams)

This is likely very outdated as i dont usually archive youtube streams and wont be updated anymore. Check this guide instead for youtube: https://aysra.github.io/archive/

You can Download YTarchive from here: Link Mirror: Mega

You also need to have FFmpeg installed (Link), here's a short video on youtube on how to install FFmpeg: Link Mirror of the video: Catbox  /// Mega 

Installing:

After downloading YTarchive, simply make a seperate folder in the same folder you installed FFmpeg into (in my case I installed it into C:/) and make a seperate folder called YTarchive:

Place the ytarchive.exe file there (This is also where you place the cookies.txt file that you need to record age restricted and membership YouTube live streams - more about that at the end of this section):

Running:

After you’ve installed it, you can simply open YTarchive by opening a command line window. You can simply do that by using the windows key + r, then typing cmd, and hitting enter. This opens a command line window into which you type:

cd C:\ffmpeg\yt archive

To open ytarchive in a command line window:

After you do this, you can input your options of what you want to do with it  As an example, to start archiving a YouTube stream, you simply use the following command:

ytarchive https://www.youtube.com/watch?v=qKjKUSZHrcA best --- and it starts downloading the stream:

If the stream didn't start yet, or is scheduled to start at a later date, you can poll for a stream (meaning it basically checks if the channel goes live and if it does it starts the recording):

Here is an easy to understand example as how to make an command for YTarchive yourself:

ytarchive [insert option here] [Insert YouTube URL here] [Insert the desired quality here]

ytarchive --retry-stream 60 https://www.youtube.com/watch?v=K--bc2nM-JM 1080p

In this example, as an option, I chose the "--retry stream 60". As for the URL, this should be self explanatory, and for the quality i've used 1080p.

The available video qualities for YTarchive are the following:

audio_only, 144p, 240p, 360p, 480p, 720p, 720p60, 1080p, 1080p60, 1440p, 1440p60, 2160p, 2160p60, best

As for the available options, it would take too much space to put them all into this guide. Here's the link to the github page of YTarchive, with all options listed: Link

Using Cookies:

To Download membership or age restricted streams you need to feed YTarchive your cookies you can get the cookies.txt file with the following browser extensions (put the cookies.txt file into the directory where you have YTarchive installed as i've described in the beginning of this section):

Chrome: Link 

Firefox: Link

Example of an command to use the cookies.txt file:

ytarchive --retry-stream 60 --cookies COOKIES.txt https://www.youtube.com/watch?v=K--bc2nM-JM best

Basically all you need to do is add “--cookies COOKIES.txt'' to your command that you want to use and it uses your cookies from that text file.

Standalone Use:

(On windows) You can also open YTarchive by just running ytarchive.exe, which opens this window. Here, you can just enter any YouTube livestream link:

After you open it, you simply paste the url of the livestream, choose the desired video quality, press enter and it starts recording the live stream:

If you want to record a live stream that is scheduled to start at a later point in time, you can do the same process I explained and poll for a stream. In this example, I used a 15 sec interval to check:

This is easier to use than using it over a command line window, but you cannot use all options - so using YTarchive over a command line window is preferred for the archiving process of YouTube streams.




Downloading Twitch VODs:

To directly download VODs directly from Twitch, you have several options. The ones I use, I will be putting here into this as an example:

TwitchLink:

I already covered live recording with twitchlink here: Link , but you can also use it to download vods. I used to use twitch Leecher for it, but since twitch leecher is dead now i thought i might as well include it in here as a way to download vods: Link

The UI itself looks pretty similar to Twitch Leecher:

You do however have a few more options using twitchlink when downloading a vod. You choose between .ts or .mp4 format:

And of course you can also choose video quality including audio only:

You can also download specific timestamps if you dont want to save the full vod:

I did not test the “unmute Video” option so i can't tell if it works to actually unmute parts that were muted due to copyrighted audio which is unlikely to work as from my experience live recording is the only way to prevent muted parts.

You can also download multipe vods at once which Twitch downloader cant do so if you want to download several twitch vods at once Twitchlink is the way to go

Twitch Downloader :

As you can see, Twitch Downloader can also download the chat, clips and render the chat.json file into a video. You can download TwitchDownloader from here: Link

Simply open Twitch Downloader, click on ‘VOD Downloader’, and input the VOD link that you can get from the ‘Recent Broadcasts’ tab:

Put that link into the "VOD/Link ID" tab, click on "get info" then press download, select where to save the VOD and it starts downloading the VOD:

To archive a karaoke stream and prevent muted parts, here is what I personally do.

I start up Streamlink/Twitch Recordings, then get what I missed of that stream with Twitch Downloader. To merge these files, I use FFmpeg.

However, recording the VOD live is always the best option, as it ensures that no muted parts will be present in the recorded stream.

That said, with VODs that have been muted, my method can also be considered as one way to prevent muted parts from occurring.




Downloading YouTube VODs:

To download YouTube VODs, there are several options. To name the programs I use:

4k Video Downloader: Link

YT-DLP: Link

4k Video Downloader:

This is pretty straight forward as to how to use it, but since it sometimes makes problems, I’m currently using YT-DLP instead.

YT-DLP - (Command Line Interface):

YT-DLP is an offshoot of youtube-dl. It features better support for more websites, but is otherwise interchangeable with youtube-dl, besides the program name itself.

You can download YT-DLP from here: Link

For YT-DLP, the following command works - just copy and paste this into a command line window (windows key +r then enter cmd and press enter to open it) after installing YT-DLP:

yt-dlp -f mp4 Insert-Youtube-URL-here -o OUTPUTNAME

Example of it downloading a video:

To change the format, just change the "mp4" to your desired output format; to change the output name, simply change “OUTPUTNAME” into the desired name you want to use for the VOD.

To Download a Playlist use the following Command:

yt-dlp --download-archive archive.txt -f mp4 -o 'G:/%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' "https://www.youtube.com/watch/_Insert_Playslist_URL_Here"

Change the drive letter from “G:/” to wherever you want to save the vod to.

YT-DLP Interface(Graphical User Interface):

Yt-DLP interface (Link) - Mega Mirror is useful if you want to download youtube vods or playlists and dont want to bother setting up the CLI version of it and is useful if you dont have the command for the CLI version on hand:

It has several options you can choose from if you want to download a VoD and it's easy to set up as all you have to do is unzip the download and its ready to go.




FFMPEG:

You can Download FFMPEG from here: Link

FFmpeg is able to do many things. Among those it can do the following:

  • Decode, encode and transcode
  • Mux and demux
  • stream
  • filter
  • play pretty much anything

As this guide is mainly focused on VOD archiving, I will mainly cover the uses it has for archiving of VODs. If you wish to know more about everything FFmpeg is able to do, the FFmpeg wiki goes into every detail that I can't cover all in this guide: Link

Here is a quick video about how to install FFmpeg on windows:

Link  --- Mirror of the video: Catbox  /// Mega 

Here are a few things that FFmpeg commands that I frequently use myself for archiving related purposes:

How to Merge two seperate video files:

Alternative guide for this from google: Link PDF Mirror: Mega GDrive

This is useful if you have a split recording that you want to merge into a single VOD. You can change the file format from .mp4 to whatever format your files are - I just used these as an example.

Here are the commands you need to use for this:

ffmpeg -i example1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts

ffmpeg -i example2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts

ffmpeg -i "concat:input1.ts|input2.ts" -c copy MergedVideo.mp4

In this example, I renamed the first video to "example1" and the second video to "Example2":

As for the output name, I simply used "mergedvideo.mp4". Of course, you can change the naming of these videos, but to make it easier to understand, I used those for these examples.

So basically what these commands do is re-encode the first two videos and then merge those files:

After you’ve made sure the merged video works as intended without any issues, you can delete everything besides the merged video if you wish to do so.


Remove audio from an Video and overlay it with an new audio file:

This is useful if you have a VOD with muted parts and an unmuted audio file - basically, if you are recording streams as audio only, you could use the audio file of that to fix muted parts of a VOD. However, make sure the audio and video file have the exact same runtime, otherwise the audio and video will be out of sync. You can change the file format from .mp4/.mp3 to whatever format your files are - I just used these as an example.

Here is the command you need to use for this:

ffmpeg -i example1.mp4 -i exampleaudio.mp3 -map 0:v -map 1:a -c:v copy -shortest FixedunmutedVOD.mp4

In this example, I renamed the video file to "example1.mp4", and I renamed the audio into “exampleaudio.mp3”:

After FFmpeg finishes, you should have the Video with the new audio overlayed:


How to Convert an MP4 file into MP3:

This is useful for the method I explained above - if you want to share the audio of a VOD you have so someone else can fix the muted parts of their muted VOD, you can simply run this over your VOD and then share the mp3. You can change the file format from .mp4 to whatever format your input files are - I just used these as an example.

Here is the command you need for this:

ffmpeg -vn -sn -dn -i example1.mp4 -codec:a libmp3lame -qscale:a 4 audioonly.mp3

In this example, I renamed the video file to "example1.mp4" and set the output name as "audioonly.mp3". After you run this command, you will have the ripped audio from the video file that you can share if you want

to do so:

This command is also useful if you just want to convert a clip of a karaoke VOD, for example, into an mp3 file.

How to Trim a Video:

This is a quick guide i found on google which explains it better than i ever could so here's a link for the guide: Link PDF Mirror: Mega GDrive


Encoding with FFmpeg (Provided by AR)

You may find that your 12-hour VOD is simply too big to store well. Video is incredibly space-consuming, sometimes filling up a megabyte in 8 seconds. In this case, you may want to look into re-encoding your video.

Video files are not stored raw, even in the best quality. They use what's called a video encoding or video codec to compress the ludicrous bitrate of raw video into something that's merely excessive. The same thing applies to audio - so it shouldn't surprise you that, in a given MP4, there's a video codec and an audio codec. There are many video and audio codecs out there - the most supported combination, and the one used by Twitch, being h264 video and AAC audio. As a general rule, the newer a codec is, the better it is at compressing files down. However, newer codecs might lack support and require more computing power to encode and decode.

To re-encode, simply do the following:

  1. Get FFmpeg from wherever FFmpeg comes from.
  2. Run this command, replacing NEWCODEC with a suitable better codec:

ffmpeg -i INFILE -c:v NEWCODEC -c:a copy OUTFILE.mp4 

  1. Find something better to do, because depending on your computer, it could take anywhere from 1/3rd the length of the VOD to less than 1 minute of VOD per minute of processing

For Twitch VODs, h265 is recommended for re-encoding - but re-encoding is not recommended, due to the large amount of time it may take. Not only that, but it's not just codec that matters - you may also want to choose a quality setting. The default is good, but it could be better.

Here are two shortcuts to the Encode/H.264 and Encode/H.265 pages of the FFmpeg wiki:

H.264: Link 

H.265: Link

If you want to know about all the other encoding settings it can use, check out the "Encoding" section of the FFmpeg wiki: Link




Ways to share Vods (File Hosting services/Websites):

If you want to share VODs, there are several options you can use. To name a few:

Microsoft 365 Family:

With Microsoft 365, you get 1TB of cloud storage space for 6 users (you have to make 6 individual Microsoft accounts for this method to work).

You will be able to make separate folders on these other accounts, and share those folders with your main account, accessing them from your main account. This allows you to create a shared cloud storage space for multiple accounts, with a total of 1TB of storage space.

I have been utilising this method for my Nyanners archive on Microsoft OneDrive accounts:

Microsoft 365 Family's MSRP is 99,99$ per year. If you divide that by 12, you come to around 8,33$ per month. However, it can be found for even cheaper during sales on many retailers, like Amazon.

This is a powerful and cost-effective way to backup files and share them with others, especially for those who have a lot of data. It may have the minor inconvenience of having to split files into 1 TB sections, but in terms of cost, it is an excellent alternative.

Mega:

Free users get up to 20 GB, and there are also paid plans:

While Mega can provide a large amount of storage space, their services are somewhat limited for free users. Free users are limited to 5 GB of downloads per day, but there are workarounds to this limitation which can be easily googled. Although it may be a good option for sharing large files, there are some annoying restrictions for free users, so keep this in mind.


Google Drive:

Free users get up to 15 GB, and there are also paid plans:

Google Drive does not have any download limits, so there really aren't any downsides for free users.


GoFile:

Gofile.io is the best option you have for free users, as there are no upload limits - but uploaded files won't be stored for an unlimited amount of time:

There are also paid plans, but if you plan to pay, I'd recommend mega over gofile.io:

That's it for DDL options. Of course, there are several other websites, but I listed a selection of a few websites I used. Torrents is another way to share VODs, but I will be covering that in the next section.


Archive.org

Archive.org is yet another useful website to share vods:

I personally didn't use this one much for sharing vods, but i wanted to include it as well. While the upload speed may be limited which may be an issue if you try to upload big archives, for daily uploads it would be a very good option. It may not be the best website for streaming as long streams are often laggy, it does indeed work.

It's more of a “Cold storage” option but for sharing vods it works well enough and streaming of content works as well, not the best option for streaming but it's free so you can't exactly complain. You will also have less issues due to blocked vods with copyrighted music and it may also be a good option to share vods with copyrighted content, like movie watchalong etc. that may cause problems for other platforms. While archive.org does take content down if requested, it's one way to share those vods in a more permanent way.

One example if you upload big archives (this is my Hime hajime vod archive i uploaded there to test it: Link) All of the vods will get added into one page:

And you are able to access all vods from the same page as well:

And other people will be able to download them directly from the page as well as from a torrent, so it gives you several options. I'd still recommend uploading vods individually as it makes it easier to find content. I would recommend adding the streamers name, date as well as the vod title to make it easier to find. Adding the vods content is useful as well to make it easier for users to find specific content.

That is all I'm able to say about archive.org, overall while it's not the best option to upload vods it's free so considering that fact its very useful despite some limitations regarding the upload speed.