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.
- Sign in to YouTube and click your profile picture in the top right.
- Click YouTube Studio.
- Click Settings in the bottom left.
- Click Channel in the left sidebar, then Basic info.
- 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 bareUC...ID. - Extracts the handle from a
@handleURL or a bare@handle. - Extracts the username from a
/user/NameURL. - Extracts the custom name from a
/c/NameURL. - 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, oryoutu.be/[id]short URLs. These are video URLs, not channel URLs. To get a channel ID from a video, you need thevideos.listendpoint to get the video'schannelIdfield. - 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 bareUC...ID. watch?v=,/shorts/,/embed/, andyoutu.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'svideos.listendpoint withpart=snippetand the video ID — the channel ID is in the response'ssnippet.channelIdfield./playlistURLs are misidentified. The legacy single-segment path matcher treats/playlistas 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 likehttps://example.com/channel/UC...would be accepted as a valid channel ID. This is harmless in practice but worth knowing. - The bare
@handleregex allows periods. YouTube handles do not allow periods, but the regex does. A string like@name.with.dotswould 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
UCare base64url. They useA-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.listwithforHandle=orforUsername=), 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 bareUC...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=@handleorforUsername=Name. For a custom URL, use thesearch.listendpoint withtype=channeland 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.