Facebook URL Parser

Social Media Network
Parsed URL
Type
Page name
Content ID
Owner
Removed params
Output format

Introduction

Facebook links are a mess. One post can arrive as a permalink.php link with five tracking parameters, as a story.php link, as a /share/p/ token, as a page-tab URL, or as a short fb.watch link from the mobile app. The content is the same – only the URL shape changes. The Facebook URL Parser is a free online tool that recognizes more than twenty Facebook link formats, extracts the content ID, strips the tracking noise, and rebuilds the link as a clean canonical URL, an embed URL, or a share URL.

The parser is built for anyone who handles Facebook links regularly: social media managers who publish them, community managers who archive them, marketers who track campaigns, researchers who collect them at scale, and developers who store them in databases. Instead of cleaning each link by hand or trusting a shortener that hides what it does, you paste the link and see exactly what the parser found – the link type, the page name, the content ID, the owner, and the parameters it removed.

Two properties set this tool apart. It parses instantly, updating the result on every keystroke, and it makes zero network requests – the link never leaves your browser. There is no server, no API quota, and no log of what you paste.

Use Cases

Publishing and campaigns. Before you put a Facebook link in a newsletter, a blog post, or an ad comment, clean it with the canonical format. Click-tracking parameters such as fbclid and mibextid are session-specific, go stale quickly, and make analytics reports misleading. Publishing the canonical URL keeps your content links stable and your metrics honest.

Archiving and deduplication. When you store Facebook links in a spreadsheet, a CMS, or a research dataset, the same post can appear with dozens of different URL shapes. The parser normalizes them all to one canonical form, so story.php?story_fbid=…, /share/p/…, and /username/posts/… pointing at the same post collapse into a single stable identifier you can dedupe against.

Customer support. Support tickets often contain links copied from the Facebook app, which arrive as fb.watch short links or permalinks with long parameter trails. Pasting the link into the parser gives you the clean canonical URL and the content ID to look up, plus the owner's page link to identify who posted it.

Website embedding. If you publish Facebook posts on your own site, the embed format produces the official Facebook plugin URL you drop into an iframe. No third-party embed services, no widget scripts, no scraping.

Data hygiene. For developers and researchers, the parser doubles as a specification reference – the removed-parameters list tells you exactly which tracking keys Facebook appends today, and the supported-formats table documents every route the tool recognizes.

A Facebook link has three parts worth understanding: the host, the path, and the query string.

Take a real-world photo link:

https://www.facebook.com/photo/?fbid=1476858904444046&set=pcb.1476858951110708&__tn__=-R&mibextid=rSxxaY

The host www.facebook.com (or m.facebook.com, fb.watch, fb.me) tells the parser which family the link belongs to. The path /photo/ names the route – here the modern photo page. The query string mixes two kinds of parameters, which the parser treats very differently:

Parameter Kind What the parser does
fbid=1476858904444046 Identity Keeps it – this is the photo's content ID
set=pcb.1476858951110708 Navigation Removes it – album navigation context, not part of the photo's identity
__tn__=-R Internal token Removes it – Facebook's internal click-tracking token
mibextid=rSxxaY Tracking Removes it – third-party app attribution

Identity parameters tell you which post, video, reel, photo, page or group the link points to. Everything else is context – how you arrived, which app you came from, which part of the page was highlighted. The parser keeps the identity and drops the context, then reports the dropped keys so the cleanup is auditable.

How It Works

Parsing runs entirely in your browser, with no network requests and no server round-trip. On every keystroke the parser runs the link through three stages:

  1. Host matching. The link is matched against the three Facebook domains: facebook.com (with any subdomain such as m. or mbasic.), fb.watch, and fb.me.
  2. Route matching. The path is split into segments and matched against the known route table – watch, reel, photo, story.php, permalink.php, share/p/, groups/{id}/posts/{id}, profile.php, page names, and page-tab paths.
  3. Query analysis. Identity parameters (v, fbid, story_fbid, id) are extracted and validated, while tracking parameters are detected by three rules and collected into the removed list.

Every extracted value is validated against strict patterns before it is accepted: numeric IDs must be 5–20 digits, pfbid tokens must start with pfbid, usernames must be 2–50 characters. Anything that fails validation makes the parser report an invalid link rather than guessing.

Because there is no network access, the parser never needs a loading state, never hits a rate limit, and produces results the instant you paste.

The parser recognizes more than twenty formats across seven result kinds.

Format Example Result kind
Post with page name facebook.com/nike/posts/1234567890123456 post
Post, numeric or pfbid ID facebook.com/nike/posts/pfbid0AbCdEf post
Story permalink facebook.com/story.php?story_fbid=111222333444&id=555666777888 post
Legacy permalink facebook.com/permalink.php?story_fbid=…&id=… post
Share token facebook.com/share/p/1AbCdEf2Gh3Ij/ post
Video watch page facebook.com/watch/?v=10153231379946729 video
Video watch path facebook.com/watch/10153231379946729 video
Legacy video page facebook.com/video.php?v=637842556329505 video
Video with page name facebook.com/nike/videos/10153231379946729 video
Reel facebook.com/reel/Reel1AbCdEfGh reel
Reel with page name facebook.com/nike/reels/pfbid0Reel12345 reel
Modern photo page facebook.com/photo/?fbid=1476858904444046 photo
Legacy photo page facebook.com/photo.php?fbid=9876543210123456 photo
Photo with page name facebook.com/nike/photos/1234567890123456 photo
Plain page facebook.com/nike page
Page tab facebook.com/nike/reviews page
Numeric profile page facebook.com/profile.php?id=100001234567890 page
Group post facebook.com/groups/999888777666/posts/111222333444 group-post
Short link fb.watch/AbC12dEfXy short
Redirect domain fb.me/nike page
Mobile subdomains m.facebook.com/meta, mbasic.facebook.com/nike same as desktop

Page tabs are accepted generically: any lowercase word as the second path segment – about, reels, photos, followers, mentions, music, jobs, fundraisers, support, and any future tab – resolves to the page itself, because a tab is a view of the page, not a different resource.

The parser also rejects routes that are not shareable Facebook content. Reserved platform routes such as login, help, settings, search, marketplace, events, hashtag and messages return an invalid-link message, as do malformed shapes such as a numeric second segment (nike/1234567890123456) or unknown three-segment paths. The complete reserved list is documented in the Technical Specs chapter.

Understanding Post IDs

Facebook uses three distinct ID formats, and the parser accepts all of them wherever they appear.

Numeric IDs are the legacy format: 5–20 digits such as 10153231379946729. They still appear on video watch pages (watch/?v=), photo pages (fbid=), and the id parameter of story links. They are stable and human-readable.

pfbid IDs are the modern format, introduced gradually from 2022. They start with the letters pfbid followed by a long mix of letters, digits, underscores and dashes – real-world examples run to about 70 characters. Unlike numeric IDs, pfbid tokens are time-rotating and opaque: they are not a sequence number and cannot be decoded locally. Meta has published the concept but no length specification, so the parser accepts any pfbid token up to 200 characters after the prefix rather than risk rejecting a legitimate link.

Reel tokens and share codes are opaque alphanumeric tokens 5–40 characters long, such as Reel1AbCdEfGh. Reel tokens consistently start with the prefix Reel, but the parser does not depend on it – any token of the right shape is accepted.

What can you do with the extracted ID? It is the stable key of the content: use it to deduplicate links in a database, to search for the post, to reference it in a CMS, or to look it up through an API if you have access to one. The parser surfaces the ID on its own row precisely so you can use it without parsing it out of a URL by hand.

Tracking Parameters We Remove

Facebook appends a long list of parameters to links, and the parser removes them with three detection rules:

  1. Campaign parameters – any key starting with utm_ (Google Analytics convention): utm_source, utm_medium, utm_campaign, utm_term, utm_content.
  2. Internal tokens – any key starting with a double underscore, such as __tn__ and __cft__[0]. These are Facebook's internal click-tracking markers, often URL-encoded and bracketed.
  3. The exact list – 37 known tracking, session and navigation parameters.

The most common exact-list parameters:

Parameter What it records
fbclid Which ad or post the click came from
mibextid Which third-party app shared the link
rdid, rd Mobile device identifiers
ref, fref, refid, ref_src, ref_url The page where the link was clicked
eav, ftid, paipv, jazoest Session and anti-abuse tokens
sk, lst, rsv, tn Page-state and session values
eid, notif_t, notif_id Notification context
comment_id, reply_comment_id Comment navigation context
set, type, theater, offset, locale Album navigation, view mode, position and language
action_history, acontext, app, video_source, ls_ref, pageid, ftentidentifier, padding Click context and source metadata

Identity parameters are never removed: v (video ID), fbid (photo ID), story_fbid (post ID) and id (owner ID) are the content itself. For a story.php link the parser therefore keeps both story_fbid and id in the canonical output – deleting them would break the link.

Why is removal always safe? Tracking parameters describe how you arrived, not what the link points to. fbclid, mibextid and utm_* only change attribution reporting; the rendered content is identical without them. The removed-parameters row shows you exactly what was taken off, so the cleanup is verifiable at a glance.

Output Format Guide

Every parsed link can be rendered in three formats.

Format Output When to use it
Canonical URL The clean, stable link. Story links keep story_fbid and id; username routes keep their path Publishing, archiving, deduplication, anything that stores a link long-term
Embed URL A Facebook plugins URL (plugins/post.php, plugins/video.php or plugins/page.php) Pasting into an <iframe> to render the content on your own site
Share URL The official share dialog (sharer/sharer.php?u=…) Buttons, links that open Facebook's share dialog with the content prefilled

The embed format picks the right plugin for the content kind: posts, photos, reels and group posts use plugins/post.php (with show_text=true so the post text renders), videos use plugins/video.php, and pages use plugins/page.php. The share format wraps the canonical URL, so a shared link always points at the clean version.

Short links (fb.watch) have a special rule: because the target cannot be resolved locally, the canonical form is the short link itself, and the embed and share formats are unavailable. The output format options are hidden automatically when a short link is parsed.

Usage

  1. Paste the link. Click the input field and paste the Facebook URL (Ctrl+V or Cmd+V). The parser reads it as you type – there is no button to press.
  2. Read the result panel. Five rows summarize the parse:
Row What it shows
Type The result kind: post, video, reel, photo, page, group-post or short
Page name The page or profile name from the URL, as a clickable link
Content ID The extracted ID – numeric, pfbid, reel token or share code
Owner The owner's numeric ID as a link – shown only for links that carry no page name, such as story.php and group posts. Page-name links and owner IDs are mutually exclusive by nature: a URL either names the owner or identifies it by number
Removed params The tracking parameters that were stripped, comma-separated
  1. Pick the output format. Canonical URL is the default. Switch to Embed URL or Share URL when you need one of those forms.
  2. Copy the result. The output field updates instantly; press Copy to put it on the clipboard.

Tutorial

Follow along with a complete example, from a messy app link to a published clean URL.

Step 1 – Paste a permalink. Copy this link, as it might come from a shared post:

https://www.facebook.com/permalink.php?story_fbid=pfbid0Vh6GpZMMpB4G4Zrhw7GPoRDnPEQwTUtK8zvYue2qScZatWKvE9REsyqxw7TxjpnXl&id=100063598515444&__tn__=-R&mibextid=rSxxaY

Paste it into the input. The result panel fills in immediately: type post, content ID pfbid0Vh6…TxjpnXl, owner page 100063598515444 as a clickable link, and removed parameters __tn__, mibextid.

Step 2 – Copy the canonical URL. The output shows the clean story link:

https://www.facebook.com/story.php?story_fbid=pfbid0Vh6…&id=100063598515444

Both identity parameters are preserved – removing either would break the link.

Step 3 – Embed the post. Switch to Embed URL. The output becomes https://www.facebook.com/plugins/post.php?href=…&show_text=true. Wrap it in an iframe on your site:

<iframe src="https://www.facebook.com/plugins/post.php?href=…&show_text=true"
  width="500" height="600" style="border:none;overflow:hidden" scrolling="no"
  frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write;
  encrypted-media; picture-in-picture; web-share"></iframe>

Step 4 – Clean a photo link. Paste https://www.facebook.com/photo/?fbid=1476858904444046&set=pcb.1476858951110708&locale=en_GB. The type reads photo, the ID is 1476858904444046, and the removed list shows set and locale. The canonical output is the short modern form https://www.facebook.com/photo/?fbid=1476858904444046.

Step 5 – Resolve a page tab. Paste https://www.facebook.com/FubonGuardiansBaseballTeam/reviews. The type reads page, the page name links to the page, and the canonical output collapses the tab away to https://www.facebook.com/FubonGuardiansBaseballTeam – the tab is a view, not a separate resource.

Step 6 – Handle a short link. Paste https://fb.watch/AbC12dEfXy. The type reads short, the output keeps the short link, and the format options disappear – the parser never guesses where a short link points.

Pro Tips

  • Deduplicate archives by content ID. When you batch-clean a spreadsheet, the Content ID row is your stable key: the same post always yields the same ID, no matter which URL shape it arrived in. Sort and dedupe on that column, not on the URL.
  • Publish canonical, measure canonical. If your team shares Facebook links through a link-in-bio service or a shortener, publishing the canonical form underneath avoids a double layer of redirects and keeps UTM reports readable.
  • Use embed URLs with the official iframe. Facebook's plugin URLs need no extra JavaScript and no third-party embed service – just the iframe shown in the tutorial. The plugin handles responsive width and renders the official post styling including share buttons.
  • Verify the owner before trusting a link. The Owner row links story.php and group-post links to their numeric owner page or group. One click tells you which account actually published the content – useful when you receive a suspicious forwarded link.
  • Check the removed list as a monitoring signal. Facebook occasionally changes its tracking vocabulary. If the removed list starts showing a parameter you have not seen before, it is worth a look – the parser surfaces exactly what the app is appending today.
  • Page tabs collapse automatically. Do not hand-edit facebook.com/nike/reviews to facebook.com/nike in a spreadsheet – the parser does it for you and keeps the page-name row intact.

Alternatives

Option Strengths Weaknesses
This parser Zero requests, instant, pfbid-aware, 20+ formats, embed and share builders, auditable removal list No API access to metadata such as post titles
Manual editing in the address bar No tools needed Error-prone with pfbid links, easy to delete identity parameters by mistake, no embed or share formats
Generic URL cleaners Simple to use Built for shorteners and general links, not Facebook routes; usually blind to story_fbid/id identity pairs and page tabs
Meta Content Library API Official metadata, search and filtering Requires an approved developer account, quota-based, network round-trip, cannot be used from a browser without keys
Facebook's own share button Official, zero effort Only shares a link, does not clean, archive or embed it

For one-off cleaning the canonical format of this parser is the fastest path; for batch research with metadata, a Meta API may be appropriate – but it is a developer tool, not a link cleaner.

Against the Official APIs

Meta offers official embed APIs – the oEmbed endpoints at graph.facebook.com/v25.0/oembed_post, oembed_video and oembed_page – which have been usable without an access token since June 2026, with a quota of 1,000 requests per hour per endpoint. They are the right foundation for the embed generators this site builds around Facebook, and they can resolve metadata that a local parser cannot.

This parser deliberately does not call them. A local parser covers what the API cannot:

Situation Local parser oEmbed API
Group posts and page tabs Parsed locally Not exposed as embeddable content
Share tokens (/share/p/…) Parsed locally No endpoint
Link cleaning for any archive Instant, unlimited, offline Costs quota per request
Privacy Link never leaves the browser Sent to Meta servers

The two approaches are complementary: the parser cleans and identifies every link you will ever paste, and the official APIs enrich the ones you actually want to embed or analyze.

What It Doesn't Do

It cannot tell pages from personal profiles. facebook.com/nike looks identical whether nike is a page or a profile. Only an API call reveals the account type, so both are reported as page.

It cannot resolve fb.watch short links. Short links are opaque codes; resolving the target requires following a redirect over the network. The parser keeps the short link as its canonical form instead of guessing.

It rejects non-content routes. Platform chrome such as login, help, settings, search, marketplace, events and hashtag is not shareable content and is rejected as invalid. Albums (/username/albums, /username/album/…) and video share tokens (/share/v/…) are likewise outside the supported set.

It does not fetch metadata. There is no request to Facebook, so the parser never shows post text, titles, view counts, or upload dates. It answers what is this link and what is its clean form – nothing more.

It does not modify anything. The tool never shortens, redirects, stores, or re-serves links. The output is a URL you take with you.

Troubleshooting

Problem Cause Solution
"Enter a valid Facebook URL" appears The link uses a reserved route such as login or search, a malformed shape, or a non-Facebook domain Check the link was copied from Facebook itself. Reserved routes are rejected by design because they are not content
A page-tab link shows as a page Tabs such as reviews or followers are views of the page, not separate resources This is correct behavior – the canonical page root is the right stable link
A fb.watch link has no embed or share options Short links cannot be resolved locally, so only the canonical form exists Use the short link as-is, or open it once and copy the long URL from the address bar if you need embed or share forms
The Owner row is empty for a link with a page name Page-name links carry the owner in the URL itself; the numeric owner ID only appears in nameless formats such as story.php The two rows are complementary by design – the Page name row is the owner link for these URLs
The output keeps story_fbid and id parameters These are identity parameters, not tracking – deleting them breaks the link Leave them. Only tracking keys appear in the removed list
A pfbid link is rejected as invalid The token does not start with pfbid or exceeds the accepted length Check the link was fully copied, including the trailing characters
The hash fragment of a link disappears Fragments such as #_=_ are browser-side markers, not part of the URL's identity Expected behavior – the canonical URL never includes fragments

Privacy & Data Handling

This tool makes zero network requests. The URL you paste is processed entirely in your browser: no server receives it, no analytics script sees it, no third-party log records it. There is no account, no storage, and no way for the tool to know what you pasted after you close the page.

That makes the parser different from API-backed tools in one concrete way: the link, its owner ID, and its content ID never transit any server you do not control. You can clean pre-publication links, internal campaign links, or links you were forwarded privately without them appearing in any third-party log.

The parser also does not embed third-party scripts. The embed URLs it generates point at Facebook's own plugin endpoints, and Facebook only sees those URLs if you choose to use them on your site – the parser itself never loads them.

Technical Specs

Property Value
Processing 100% client-side, zero network requests
Update model Real-time on every keystroke
Accepted hosts facebook.com (any subdomain), fb.watch, fb.me
Result kinds post, video, reel, photo, page, group-post, short
Numeric ID pattern 5–20 digits (\d{5,20})
pfbid pattern pfbid + 1–200 alphanumeric, underscore or dash characters
Token pattern (reels, share codes) 5–40 alphanumeric, underscore or dash characters
Username pattern 2–50 letters, digits or dots
Page-tab rule Any lowercase word slug in the second path segment, non-numeric
Tracking-parameter rules utm_* prefix, __ prefix, and an exact list of 37 keys
Identity parameters kept v, fbid, story_fbid, id
Output formats Canonical URL, Embed URL (plugins post/video/page), Share URL (sharer dialog)
Dependencies None – plain JavaScript, no frameworks
Browser support Modern evergreen browsers (Chrome, Edge, Firefox, Safari) with URLSearchParams

The reserved-route list is: login, signup, checkpoint, help, settings, privacy, about, careers, policies, developers, plugins, sharer, sharer.php, dialog, l.php, tr, messages, marketplace, events, pages, search, directory, friends, notes, hashtag, p, s, u, campaigns, fundraisers, live, profile.php, watch, reel, photo, story, permalink, share, groups, reels, posts, videos, photos.

Features

  • Parse 20+ Facebook link formats, including posts, videos, reels, photos, pages, group posts and short links
  • Remove tracking parameters such as fbclid, mibextid and utm_* automatically, and show exactly what was stripped
  • Extract content IDs in both legacy numeric and modern pfbid formats
  • Build canonical URLs, Facebook plugin embed URLs and share dialog URLs in one click
  • Recognize page tabs, story and permalink links, and fb.watch short links
  • Parse instantly in your browser with zero requests, so your links never leave your device

Frequently Asked Questions

Why does my Facebook link contain fbclid and so many other parameters?
Facebook appends tracking parameters when links are shared from the app, clicked from a page, or opened through third-party apps. The most common are fbclid (click attribution), mibextid (third-party app attribution) and ref (the page where the link was clicked). These parameters do not change the content the link points to, only how the click is attributed, so removing them is always safe. The parser strips them automatically and lists what was removed so you can verify the cleanup.
Why is the ID in my post link a long string of letters and numbers?
Since 2022 Facebook has issued new post IDs in the pfbid format, a long alphanumeric token that starts with the letters pfbid. Unlike the old numeric IDs, pfbid IDs rotate over time and are not meant to be decoded – they are opaque identifiers. The parser accepts both formats everywhere, so you can paste either kind of link and get a working canonical URL back.
Can the parser tell whether a link points to a page or a personal profile?
No. A bare link such as facebook.com/username looks identical for pages and personal profiles, and the distinction is only available through an API call. The parser therefore labels both as page and returns the canonical URL, which works for either kind of account.
Why can't you expand fb.watch short links?
fb.watch codes are opaque tokens, and the target post can only be discovered by following the redirect, which requires a network request. The parser works with zero requests, so it keeps the short link as its canonical form instead of guessing. Links shared from the Facebook app often arrive as fb.watch URLs, and the parser still cleans their tracking parameters.
Does this tool send my links to Facebook or any server?
No. All parsing happens locally in your browser with no network requests at all. The URL you paste is only processed on your device, which makes the tool useful for sensitive or pre-publication links that you do not want to appear in third-party logs.
Which output format should I use to embed a post on my website?
Choose the Embed URL format. It produces a Facebook plugins URL such as plugins/post.php that you paste into an iframe on your site. Facebook's plugin then renders the post with its official styling, including text, media and the like and share buttons.
ESC