QR codes for YouTube
Watch links, youtu.be, Shorts, handles, playlists, timestamps — every YouTube URL form, what it does when scanned, and which to commit to print.
Short answerUse the youtu.be/VIDEO_ID short link for a single video and youtube.com/@handle for a channel. Both are short, which keeps the QR code coarse and easy to scan, and both are stable enough to print. Strip the tracking parameters YouTube adds to share links first.
Every YouTube URL form
| Form | Opens | Length |
|---|---|---|
| youtu.be/VIDEO_ID | The video, in the standard player | Shortest |
| youtube.com/watch?v=VIDEO_ID | The same video | About 20 characters longer |
| youtube.com/shorts/VIDEO_ID | The vertical Shorts player | Short |
| youtube.com/@handle | A channel home page | Shortest for a channel |
| youtube.com/channel/UC… | The same channel | Much longer |
| youtube.com/playlist?list=ID | The playlist itself | Medium |
| watch?v=ID&list=ID | One video within a playlist | Long |
| youtu.be/VIDEO_ID?t=90 | The video, starting at 1:30 | Short |
| youtube.com/live/VIDEO_ID | A live stream or its recording | Short |
Length matters because it drives module count, and module count drives how large the printed code has to be. Choosing youtu.be over a full watch URL can drop the code a version or two, which is free legibility.
What to strip before encoding
YouTube’s Share button attaches parameters that identify the share session rather than the content. They are not needed and should not be printed.
- ?si=… — a share identifier added to youtu.be links. Remove it.
- &pp=… — playback parameters from the app. Remove it.
- &feature=share — legacy attribution. Remove it.
- &t=90 — a timestamp. Keep this one if you want it; it is a real instruction.
- &list=… — a playlist. Keep only if you mean the video to play inside that playlist.
The test is simple: delete a parameter, open the result, and see whether the destination changed. If it did not, the parameter was noise that was making your code denser for nothing.
App, browser, and what people actually get
Scanning a YouTube URL on a phone with the app installed usually opens the app, because both iOS and Android register YouTube to handle those addresses. Without the app, the same link opens in the mobile browser and plays there.
You cannot control which happens, and you should not try. Both work. What you can control is that the video is public — an unlisted video plays for anyone with the link, but a private one shows an error to everyone but you.
Test with a phone signed out of your channel. Signed in as the owner, private and unpublished videos play perfectly, which is how unplayable codes end up in print runs.
Which URLs survive printing
A printed code is permanent; YouTube content is not. Ranked from most to least durable:
- A channel handle. Stable as long as you do not change it, and it keeps working as you publish new videos.
- A playlist. You control its contents, so you can swap videos in and out behind a fixed URL.
- A specific video. Fine, provided you will not delete or privatise it. Video IDs never change.
- A Short. Same as a video, but Shorts are more often treated as disposable by the people who make them.
- A live stream URL. The least durable — the link behaves differently before, during, and after the broadcast.
For packaging or signage with a long life, a playlist or channel is the safer target. For a poster advertising one thing, the video itself is the right answer, and the poster will outlive its relevance anyway.
Changing your channel handle breaks every printed code that used it, and YouTube does not reliably redirect the old one. Settle on a handle before you print.
Can you tell how many people scanned?
Not as scans. A static QR code has no counter — there is nothing between the camera and YouTube that could count. YouTube Analytics will show the views, and the traffic source will usually read as External or Direct.
If you need to separate one print run from another, give each its own distinguishable URL: a different timestamp, a different playlist, or a redirect on your own domain that forwards to YouTube. Your own server logs then do the counting, without a third-party QR service in the middle.
Turn a YouTube link into a code you can print:YouTube QR code generator
Related questions
youtu.be/VIDEO_ID for a single video and youtube.com/@handle for a channel. Both are the shortest form available, which keeps the pattern coarse and easy to scan, and both point at exactly the same place as their longer equivalents.
Yes. A youtube.com/shorts/… URL encodes like any other link and opens the vertical Shorts player. The same video is usually also reachable as a normal watch URL if you would rather it opened in the standard player.
Yes. Add ?t=90 to a youtu.be link, or &t=90 to a watch URL, to start ninety seconds in. This is genuinely useful in printed manuals, where a code beside one step can jump straight to that step in a long video.
Every printed code using the old handle breaks, and YouTube does not reliably redirect it. Decide on a handle before printing. If you must be able to change it, encode a redirect on your own domain instead.
Unlisted, yes — anyone with the link can watch, and the QR code is the link. Private, no: only accounts you have explicitly granted access can play it, so everyone else gets an error.
Not as scans. Static codes have no counter. YouTube Analytics reports the views and will usually attribute them to External or Direct traffic; to separate print runs, give each one a distinguishable URL or route it through a redirect you control.