YouTube Channel ID vs Handle vs Custom URL

Published

YouTube uses four identifier formats: the UC channel ID, the @handle, legacy custom URLs and legacy usernames. Here is which persists and which the API takes.

A YouTube channel ID is the permanent identifier beginning with UC that YouTube assigns at channel creation. A handle is the editable @name introduced later and shown on the channel page. Legacy custom URLs and legacy usernames are older vanity formats. Only the channel ID is guaranteed stable, and it is the value the YouTube Data API expects.

Four identifier formats, accumulated over time

YouTube's identifier situation is messier than other platforms because the product is old and each new naming scheme was layered on top of the previous one rather than replacing it. Four formats are in circulation, and a URL you encounter in the wild could be any of them.

The channel ID is the base layer. It is a fixed-length string that always starts with UC, followed by a run of letters, digits, hyphens and underscores, and it appears in URLs of the form youtube.com/channel/UC.... This is the canonical identifier.

The handle is the newest layer. It takes the form @SomeName and resolves at youtube.com/@SomeName. YouTube rolled handles out to all channels, assigning one automatically where the channel had not chosen one, and the owner can change it subject to availability.

Legacy custom URLs are the vanity format that preceded handles, resolving at youtube.com/c/SomeName. YouTube granted these to channels meeting eligibility criteria. Existing ones generally still resolve, but the format is no longer the way new vanity URLs are created.

Legacy usernames are the oldest layer, from the era when YouTube accounts had usernames in their own right, resolving at youtube.com/user/SomeName. Only channels created in that period have one, and many of those links still work for backward compatibility.

Comparison table

Property Channel ID Handle Legacy custom URL Legacy username
URL form /channel/UC... /@Name /c/Name /user/Name
Assigned by YouTube, at creation Owner, or auto-assigned Owner, once eligible Owner, historically
Editable by owner No Yes Was, within limits No longer
Guaranteed unique Yes Yes, at any one time Yes, at any one time Yes
Every channel has one Yes Yes No No
Stable long term Yes No No Legacy only
Data API support Primary, via id Via forHandle Not directly Via forUsername
Use as a stored key Yes No No No

What is a YouTube channel ID?

A YouTube channel ID is the immutable identifier YouTube generates for a channel at the moment the channel is created. Every channel has exactly one, it always begins with the prefix UC, and the owner has no means of changing it. Renaming the channel, picking a new handle, changing the branding, transferring the channel to a different Brand Account or linking it to a different Google Account all leave the ID untouched. Because it is both universal and permanent, it is the only identifier safe to use as a key in a database, a spreadsheet, an RSS subscription or an API integration. It is also the identifier that appears in YouTube's own structural plumbing: channel feed URLs, embed parameters and Data API responses all carry it. The trade-off is that it is unreadable to humans, which is why YouTube keeps vanity formats around for the links people actually share.

Which identifier does the YouTube Data API accept?

The Data API's channels.list method is the place this becomes concrete. It supports several mutually exclusive filter parameters, and knowing which to reach for saves a lot of guessing.

Pass id with a UC channel ID and you get that channel directly. This is the normal path and the one to build on. Pass forHandle with a handle and the API resolves it to a channel, which is the modern way to look up a channel when all you have is an @name. Pass forUsername with a legacy username and the API resolves that, which only works for channels that actually have a legacy username. Pass mine with an authenticated request and you get the caller's own channel.

There is no parameter for a legacy /c/ custom URL. If that is all you have, you cannot hand it to the API directly; you have to resolve it another way first, most simply by loading the URL and reading the canonical channel ID from the resulting page. Google's channels.list reference documents the current parameter set, which is worth checking since this is exactly the kind of surface Google extends over time.

The important habit, whichever lookup you used, is to store the UC ID from the response rather than the string you started with. A pipeline that calls forHandle on every run is one rename away from losing a channel, and it spends quota resolving something it could have resolved once.

How to convert between the formats

In practice you usually have a shared link and need the channel ID. A few routes work depending on what you are holding.

From a handle, custom URL or username to the channel ID

Open the channel page in a browser and view the source. YouTube includes the canonical channel URL in the page metadata, so searching the source for UC finds the ID. Alternatively, open any video on the channel, then the channel link from the video page, and check whether the URL YouTube settles on contains the /channel/UC... form. With API access, channels.list with forHandle is cleaner. For a one-off lookup from a URL, the 2uid.net YouTube channel ID finder does it without a login, and our walkthrough covers the manual methods in more detail.

From the channel ID to the handle

Load youtube.com/channel/UC... and YouTube will redirect or display the channel with its current handle visible. Via the API, request the snippet part of channels.list with the ID, and the response carries the channel's custom URL field reflecting its current vanity form.

Finding your own channel ID

Open YouTube Studio, go to Settings, then Channel, then Advanced settings. The channel ID is shown there, and this is the authoritative place to read it for a channel you own.

Why this matters beyond API work

Two everyday cases make the distinction practical rather than academic.

The first is RSS. YouTube's channel feed URL takes the form youtube.com/feeds/videos.xml?channel_id=UC..., and it takes the channel ID, not a handle. Anyone subscribing to channels in a feed reader needs the ID, which is one of the most common reasons people go looking for it.

The second is record keeping. If you track channels for competitive research, partnership outreach, media monitoring or client reporting, a handle-keyed list rots. Creators rebrand often, and a handle released by one channel can later be claimed by another, so a stale link may quietly point somewhere else. Keying on the UC ID removes the problem entirely. The filing approach is in tracking social accounts across platforms using IDs, and the reasoning behind the pattern is in why usernames change but user IDs never do.

Every major platform has its own version of this split, with different formats and different vocabulary: numeric UIDs on Facebook, a numeric ID sometimes called the pk on Instagram, a numeric user ID on X, and on TikTok a numeric user ID that is not the same thing as the sec_uid. The cross-platform map is in social media user IDs explained.

Frequently asked questions

Can a YouTube channel ID change?

No. YouTube assigns it at channel creation and it stays fixed for the channel's life, through handle changes, renames, rebrands and transfers between Google Accounts or Brand Accounts. A new channel always gets a new ID, so if the ID changed you are looking at a different channel.

Why does every channel ID start with UC?

It is a type prefix in YouTube's identifier scheme, marking the string as a channel resource rather than a video, playlist or other object type. You will see other prefixes elsewhere in the API for other resource types. Treat UC as a format marker rather than something meaningful in itself.

Is a handle the same as a legacy custom URL?

No. A handle resolves at youtube.com/@Name and every channel now has one. A legacy custom URL resolves at youtube.com/c/Name, was granted only to eligible channels, and is no longer how new vanity URLs are created. Existing ones generally still resolve, so both forms circulate.

Can I look up a channel by its /c/ custom URL through the API?

Not directly. channels.list offers id, forHandle, forUsername and mine, with no parameter for the /c/ format. Resolve it outside the API first, for instance by loading the page and reading the canonical channel ID, then use the ID.

Where do I find my own channel ID?

In YouTube Studio under Settings, then Channel, then Advanced settings. That is the authoritative source for a channel you control, and it saves you parsing page source or making an API call.

Do I need the channel ID for a YouTube RSS feed?

Yes. The feed URL youtube.com/feeds/videos.xml?channel_id=UC... takes the channel ID. A handle will not work in that parameter, which is why feed reader users so often need to look the ID up first.

If someone changes their handle, do my old links still work?

Links built on the old handle stop pointing at that channel, and if another channel later claims the handle, your link may resolve to them instead. Links built on the /channel/UC... form keep working indefinitely, which makes them the right choice for anything stored or published long term.