Skip to main content
Back to BlogSocial Media Guides

How to Find a YouTube Channel ID (and Why @handles Cannot Be Resolved Without an API)

A YouTube channel ID is the 24-character string starting with UC that is the channel's permanent identifier. Every YouTube channel has one, and only one. The @handle, the legacy /user/ username, and the /c/ custom URL are all aliases layered on top of the channel ID — they are display names, not identifiers, and YouTube can change or remove them without touching the channel ID. The channel ID is what the YouTube Data API expects, what third-party analytics tools require, and what you need if you are embedding a channel feed, building a subscription link with a return parameter, or doing any work that needs to point at a channel unambiguously. The problem with finding it is that the channel ID is only literally present in one of the four URL forms YouTube uses: the /channel/UCxxxxxxxxxxxxxxxxxxxxxx URL. The other three forms — @handle, /user/Name, /c/Name — do not contain the channel ID at all. To get the channel ID from a handle, you have to call the YouTube Data API (channels.list with forHandle=@handle), which requires an API key. There is no way to resolve a handle to a channel ID without an API call, because YouTube does not expose the mapping publicly outside its API. Learn the four YouTube identifier types (UC channel ID, @handle, legacy /user/ username, /c/ custom URL) and what each is for, why only the /channel/ URL contains the channel ID directly, why handles and usernames cannot be resolved to channel IDs without the YouTube Data API, how a pure URL parser finds the channel ID when it is in the /channel/ form and admits defeat when it is not (a known limit worth knowing), how to resolve a handle yourself with the YouTube Data API v3 channels.list endpoint, how to find your own channel ID through YouTube Studio without any tool, and what the common URL forms look like so you can recognize them on sight.

The Toolbox TeamAugust 13, 20268 min read

The problem: a handle is a display name, not an identifier

YouTube has four ways to point at a channel, and only one of them is the actual identifier. The other three are aliases layered on top, and the difference matters when you need the identifier specifically.

The channel ID is a 24-character string starting with UC. It looks like UCX6OQ3DkcsbYNE6H8uQQuVA. It is assigned when the channel is created, it never changes, and it is the only identifier the YouTube Data API accepts for channel-level operations. Every other URL form resolves to it internally.

The handle is the @name form that YouTube rolled out in 2022. It looks like @mkbhd. It is unique across the platform, chosen by the channel owner, and can be changed. It appears in URLs as youtube.com/@mkbhd.

The legacy username is the older /user/Name form, predating handles. It looks like youtube.com/user/MarquesBrownlee. It is being deprecated in favor of handles but still works.

The custom URL is the /c/Name form, chosen by channels that gained enough subscribers to qualify. It looks like youtube.com/c/MarquesBrownlee. It overlaps with handles and is being phased out.

The catch is that only the /channel/UC... URL contains the channel ID literally. The other three forms do not. To get the channel ID from a handle, username, or custom URL, you have to make an API call — YouTube does not expose the mapping publicly outside its Data API. A tool that parses URLs without calling the API can only extract the channel ID when it is already in the URL. For handles, usernames, and custom URLs, the tool admits it cannot resolve them and tells you to find the channel ID manually.

The YouTube Channel ID Finder is that kind of tool. It is a pure URL parser with no network calls. It finds the channel ID when it is literally in the URL, and it tells you the truth when it is not. Knowing why this is the limit — and how to resolve a handle when you actually need to — is the skill.

Fastest path

Open the YouTube Channel ID Finder. Paste a YouTube URL, a bare @handle, or a bare UC... channel ID. The tool parses the input and tells you what it found. If the input was a /channel/UC... URL or a bare UC... ID, it shows you the channel ID with a copy button. If the input was a @handle, /user/Name, or /c/Name URL, it shows you the handle, username, or custom name it extracted, and tells you the channel ID is not directly available — with manual instructions to find it through YouTube Studio.

The four URL forms, and what each contains

Recognizing the four forms on sight is the first skill. They look different, and they contain different things.

youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA — the only form that contains the channel ID directly. The 24-character UC... string in the path is the channel ID. A pure URL parser can extract it without any network call. This is the form the YouTube Data API uses internally.

youtube.com/@mkbhd — the handle form, rolled out in 2022. The path is /@ followed by the handle. The handle is unique across the platform but is not the channel ID. To resolve a handle to a channel ID, you need the YouTube Data API's channels.list endpoint with forHandle=@mkbhd, which requires an API key.

youtube.com/user/MarquesBrownlee — the legacy username form, predating handles. The path is /user/ followed by the username. Like handles, the username is not the channel ID. The API's channels.list endpoint accepts forUsername=MarquesBrownlee to resolve it.

youtube.com/c/MarquesBrownlee — the custom URL form, chosen by channels that qualified. The path is /c/ followed by the custom name. There is no direct API parameter for the /c/ form; you have to resolve it through a different route (the search.list endpoint, or by fetching the channel page and scraping the channelId from the page metadata).

A URL parser that does not call the API can extract the channel ID from the first form and the alias name from the other three. It cannot resolve the aliases to a channel ID. That is the limit.

Why handles cannot be resolved without an API

The mapping from handle to channel ID lives in YouTube's database. It is not derivable from the handle itself — the handle is a free-form string, and the channel ID is a random-looking 24-character identifier. There is no algorithm that produces the channel ID from the handle. The only way to get the mapping is to look it up, and YouTube exposes the lookup only through its Data API.

The Data API endpoint is GET https://www.googleapis.com/youtube/v3/channels?part=id&forHandle=@mkbhd&key=YOUR_API_KEY. The response is a JSON object with the channel ID. The call requires an API key, which you get from the Google Cloud Console by creating a project, enabling the YouTube Data API v3, and creating an API credential. The free quota is 10,000 units per day; each channels.list call costs 1 unit, so you can do 10,000 lookups per day for free.

For a tool that runs in the browser without an API key, this is a hard limit. The tool cannot call the API without exposing the key in the page source, which would let anyone steal it and burn the quota. So the tool does not try. It tells you the handle, and it tells you the channel ID is not directly available, and it tells you how to find it manually.

How to find your own channel ID through YouTube Studio

If the channel is yours, the manual path is faster than the API. The channel ID is visible in YouTube Studio, no API key required.

  1. Sign in to YouTube and click your profile picture in the top right.
  2. Click YouTube Studio.
  3. Click Settings in the bottom left.
  4. Click Channel in the left sidebar, then Basic info.
  5. The Channel ID is listed at the bottom of the page, under "Channel ID." Copy it.

This works because you are authenticated as the channel owner. For someone else's channel, you do not have access to their Studio, and you are back to the API path.

How to resolve someone else's handle with the API

When you need someone else's channel ID and you have an API key, the path is one HTTP call.

For a handle (@mkbhd):

GET https://www.googleapis.com/youtube/v3/channels?part=id&forHandle=@mkbhd&key=YOUR_API_KEY

For a legacy username (MarquesBrownlee):

GET https://www.googleapis.com/youtube/v3/channels?part=id&forUsername=MarquesBrownlee&key=YOUR_API_KEY

For a custom URL (/c/MarquesBrownlee): there is no direct parameter. You can search for the name and filter for channels:

GET https://www.googleapis.com/youtube/v3/search?part=snippet&type=channel&q=MarquesBrownlee&key=YOUR_API_KEY

This costs more quota (100 units per call) and returns multiple results, so you have to pick the right one from the snippet title.

The response from channels.list is a JSON object with an items array. Each item has an id field, which is the channel ID. For a unique handle, the array has one item. The channel ID is the 24-character UC... string.

What the tool does, and what it does not

The tool is a pure regex-based URL parser. It does not call any API. It does not fetch any page. It does not resolve handles, usernames, or custom URLs to channel IDs. It does not return channel metadata — no subscriber count, no channel name, no avatar, no verification status. It returns only what is literally in the URL.

What it does:

  • Extracts the channel ID from a /channel/UC... URL or a bare UC... ID.
  • Extracts the handle from a @handle URL or a bare @handle.
  • Extracts the username from a /user/Name URL.
  • Extracts the custom name from a /c/Name URL.
  • Tells you, for handles, usernames, and custom URLs, that the channel ID is not directly available, and shows the manual steps to find it.

What it does not:

  • Resolve a handle, username, or custom URL to a channel ID. That requires the YouTube Data API.
  • Handle watch?v= video URLs, /shorts/[id] URLs, /embed/[id] URLs, or youtu.be/[id] short URLs. These are video URLs, not channel URLs. To get a channel ID from a video, you need the videos.list endpoint to get the video's channelId field.
  • Handle /playlist?list=... URLs. A playlist URL is not a channel URL.
  • Return any channel metadata beyond the identifier string.

The tool's honesty about its limits is the useful thing. A tool that claimed to resolve handles and silently returned the wrong thing would be worse. The tool that tells you it cannot resolve handles and shows you the manual path is giving you the right answer, even if it is not the answer you hoped for.

Gotchas

  • The tool does not resolve handles, usernames, or custom URLs to channel IDs. It is a pure URL parser. For handles and the others, it tells you the channel ID is not directly available and shows you the manual steps. To resolve a handle, you need the YouTube Data API with an API key.
  • The description is misleading. "Find your YouTube Channel ID from any channel URL, handle, or username" implies the tool resolves any URL form to the channel ID. It does not. It extracts the channel ID only when it is already literally in a /channel/UC... URL or a bare UC... ID.
  • watch?v=, /shorts/, /embed/, and youtu.be/ URLs are not handled. These are video URLs, not channel URLs. To get a channel ID from a video, you need the YouTube Data API's videos.list endpoint with part=snippet and the video ID — the channel ID is in the response's snippet.channelId field.
  • /playlist URLs are misidentified. The legacy single-segment path matcher treats /playlist as a username. The tool will return a "Legacy Username: playlist" result for a playlist URL, which is wrong. This is a bug in the exclusion list.
  • No hostname validation for /channel/, @handle, /user/, or /c/. The tool parses these paths from any domain. A URL like https://example.com/channel/UC... would be accepted as a valid channel ID. This is harmless in practice but worth knowing.
  • The bare @handle regex allows periods. YouTube handles do not allow periods, but the regex does. A string like @name.with.dots would be accepted as a handle.
  • There is no download functionality despite the FAQ claiming one. The FAQ's "How do I use" answer is generic boilerplate shared across all tools. There are no settings to adjust and no download button. The tool only copies to the clipboard.
  • The channel ID is case-sensitive. The UC... string is case-sensitive in API calls. The tool preserves case as written, which is correct, but if you type a channel ID manually, make sure the case matches.
  • The 22 characters after UC are base64url. They use A-Z, a-z, 0-9, -, and _. The regex in the tool correctly allows these characters. If your channel ID has a different character, it is not a channel ID.

Summary

  • A YouTube channel ID is the 24-character UC... string that is a channel's permanent identifier. The @handle, the legacy /user/ username, and the /c/ custom URL are aliases layered on top of the channel ID, not the identifier itself.
  • Only the /channel/UC... URL contains the channel ID directly. The other three URL forms do not. To resolve a handle, username, or custom URL to a channel ID, you need the YouTube Data API (channels.list with forHandle= or forUsername=), which requires an API key. There is no way to resolve a handle without an API call.
  • The YouTube Channel ID Finder is a pure URL parser. It extracts the channel ID when it is literally in a /channel/UC... URL or a bare UC... ID, and for handles, usernames, and custom URLs it tells you the channel ID is not directly available and shows the manual path through YouTube Studio. It does not call any API and does not return channel metadata.
  • For your own channel, find the channel ID in YouTube Studio under Settings → Channel → Basic info. For someone else's channel, use the YouTube Data API with forHandle=@handle or forUsername=Name. For a custom URL, use the search.list endpoint with type=channel and pick the right result from the snippet.
  • Use the YouTube Channel ID Finder to extract the ID when it is in the URL, the YouTube Tag Generator for the tag field, the YouTube Earnings Calculator to estimate what the channel's views pay, and the Hashtag Generator for the caption hashtags.