What Is FxEmbed? FixupX, FxTwitter, Social Embeds, RSS, and APIs Explained


FxEmbed is best known for one tiny URL trick: replace x.com with fixupx.com, paste the result into Discord or Telegram, and the post often appears with a much better preview.
That description is accurate, but it is no longer complete.
FxEmbed has grown into an open-source layer that can turn social posts into rich link previews, normalized JSON, RSS or Atom feeds, direct media links, and automation-friendly data. It sits between social platforms and the clients that need to display or process their content.
Quick answer: FxEmbed is an open-source social content normalization and unfurling service. Its public services include FxTwitter, FixupX, and FxBluesky. A changed URL can improve a post preview; the same project also exposes APIs, feeds, media routes, translation options, and self-hosting tools.

FxEmbed is the project behind several related domains:
| Service | Original source | FxEmbed domain | Typical use |
|---|---|---|---|
| FxTwitter | twitter.com | fxtwitter.com | Richer X/Twitter embeds |
| FixupX | x.com | fixupx.com | Richer X embeds using the current X domain |
| FxBluesky | bsky.app | fxbsky.app | Richer Bluesky embeds |
| twittpr | twitter.com | twittpr.com | Discord-friendly sed-style URL correction |
The common interaction is deliberately simple:
https://x.com/username/status/123
↓
https://fixupx.com/username/status/123For an older Twitter URL:
https://twitter.com/username/status/123
↓
https://fxtwitter.com/username/status/123And for Bluesky:
https://bsky.app/profile/user.bsky.social/post/abc
↓
https://fxbsky.app/profile/user.bsky.social/post/abcThere is no Discord bot to install and no browser extension required. A sender changes the URL, and the chat client does the rest.
The official getting-started guide describes richer support for videos, GIFs, multiple images, polls, quoted posts, external media, expanded t.co links, and tracking-parameter removal.

When a Discord, Telegram, Slack, or messaging client sees a link, it usually does not render the original website as a full application. Instead, a crawler requests the URL and reads metadata such as:
<meta property="og:title" content="...">
<meta property="og:description" content="...">
<meta property="og:image" content="...">
<meta property="og:video" content="...">
<meta name="twitter:card" content="...">This process is often called link unfurling. The quality of the preview depends on the metadata the source returns, the media formats the client accepts, and the client-specific rules applied to that metadata.
Native social-platform pages do not always return the best representation for third-party preview crawlers. Videos may become static thumbnails. A four-image post may show only one image. A quoted post can lose its media. A poll can disappear entirely.
FxEmbed acts as a compatibility layer:
X or Bluesky post
↓
FxEmbed retrieves and parses the content
↓
Text, media, quote, poll, and card data are normalized
↓
Client-appropriate Open Graph and embed metadata are generated
↓
Discord, Telegram, or another client renders the previewThis is why describing FxEmbed as an Open Graph proxy is useful, but still slightly incomplete. It is also a parser, media router, feed generator, and API surface.
FxEmbed does not simply put the original social post inside an <iframe>.
For a preview request, its server-side code can inspect the host, path, query parameters, and requesting user agent. A crawler such as Discord's can receive embed metadata designed for that client. A normal human clicking the same URL can be redirected to the original post or to a configured alternative frontend.
That distinction matters:
This is a classic server-side unfurl service: a small HTTP interface that makes incompatible systems work together.
The exact result still depends on the destination client, but the official feature comparison shows why people use FxEmbed instead of a native X preview.
| Capability | Native social preview | FxEmbed |
|---|---|---|
| Post text | Usually | Yes |
| Images | Usually | Yes |
| Inline video and GIF playback | Limited | Supported |
| Multiple images | Client-dependent | Native multi-image or mosaic options |
| Poll results | Often missing | Supported |
| Quoted-post media | Often missing | Supported |
| Expanded short links | Limited | Supported |
| Translation | No consistent embed option | Available where supported |
| Direct media route | No | Yes |
| Gallery and text-only modes | No | Yes |
| RSS and Atom | No | Yes |
| Structured API | Separate official API product | Public FxEmbed API |
| Telegram Instant View | No | Supported |
The important phrase is client-dependent. FxEmbed can return better metadata, but it cannot force every app to render every Open Graph feature identically.
One of FxEmbed's best design decisions is that many features require no dashboard and no SDK. The URL itself selects the behavior.
d.Add the d. subdomain to route directly to a post's media:
https://d.fxtwitter.com/user/status/123456789
https://d.fixupx.com/user/status/123456789
https://d.fxbsky.app/profile/user.bsky.social/post/abc123File extensions can express the same intent:
https://fxtwitter.com/user/status/123456789.mp4
https://fixupx.com/user/status/123456789.jpgThis is useful for bots, download flows, media-processing jobs, and agents that need the asset rather than a preview wrapper. The behavior is documented in the direct-media guide.
t.The t. subdomain removes photos and video from the embed:
https://t.fixupx.com/user/status/123456789That can be helpful for low-bandwidth clients, text archives, moderation pipelines, or an LLM workflow that wants the post body without media noise. See the text-only documentation.
m.The m. subdomain combines multiple images from a post into a single composite image:
https://m.fixupx.com/user/status/123456789This provides a practical fallback for clients that cannot display a native multi-image gallery. FxEmbed notes that mosaic is already the default on many platforms other than Discord. The mosaic guide explains the route.
Other documented modifiers cover gallery mode, media selection, translation, Telegram Instant View, and legacy embeds. Together they make FxEmbed feel less like a website and more like a compact URL protocol.
FxEmbed can expose X/Twitter and Bluesky profiles as RSS 2.0 or Atom feeds.
For X/Twitter:
https://fxtwitter.com/openai/feed.xml
https://fxtwitter.com/openai/feed.atom.xml
https://fxtwitter.com/openai/media.xml
https://fxtwitter.com/openai/media.atom.xmlFor Bluesky:
https://fxbsky.app/profile/user.bsky.social/feed.xml
https://fxbsky.app/profile/user.bsky.social/feed.atom.xmlOptional parameters include item count, replies, sensitive-content filtering, and requested translation. The documentation currently allows count values from 1 to 100 and explicitly warns that automatic translation availability may vary.

The feed feature unlocks workflows that do not need a custom social API integration:
X or Bluesky account
↓
FxEmbed RSS or Atom
↓
Feed reader, n8n, or scheduled worker
↓
Summarization, classification, alerts, or archiving
↓
Slack, email, Telegram, or a databaseThis is one reason FxEmbed deserves to be discussed alongside developer infrastructure rather than only Discord utilities.
FxEmbed exposes public API endpoints at:
https://api.fxtwitter.com
https://api.fxbsky.appThe current recommended version uses /2/. Legacy v1 compatibility remains available, but the official docs say it does not receive the newest features.
The API surface goes far beyond fetching a single post. The current reference includes operations for posts, unrolled threads, conversations, profiles, user timelines, media, followers, following, search, typeahead, and trends. Bluesky exposes a similar set where the underlying platform supports it.

The project deliberately aligns response shapes across providers where practical. That means an application can aim for a common internal model:
type SocialPost = {
id: string;
text: string;
author: {
handle: string;
name?: string;
};
media?: Array<{
type: "photo" | "video" | "gif";
url: string;
}>;
quote?: SocialPost;
};The official API documentation currently lists a v2 limit of 1,000 requests per minute per IP, uses cursor-based pagination for larger collections, and publishes runtime OpenAPI specifications:
https://api.fxtwitter.com/2/openapi.json
https://api.fxbsky.app/2/openapi.jsonThose specifications make it straightforward to generate a client, create an MCP tool, or give a coding agent a machine-readable description of the API.
Social websites are awkward sources for agents. A browser session may face JavaScript-heavy pages, authentication prompts, rate limits, consent dialogs, or content that is difficult to reduce to clean text.
FxEmbed creates a shorter path:
User supplies an X link
↓
Agent extracts the post identifier
↓
FxTwitter API returns structured JSON
↓
Agent reads text, author, media, quote, poll, and metrics
↓
Agent summarizes, verifies, classifies, or stores the resultThat makes FxEmbed a practical X-to-LLM adapter for prototypes and personal automation. It can reduce the need to ask a general browser agent to visually navigate a social page just to extract a post.
It does not eliminate browser infrastructure. Tools such as Browser Use, Browserbase, and Hyperbrowser remain valuable when an agent must log in, click, upload, or operate a full web application. Our browser agent infrastructure comparison explains that layer in more detail.
The distinction is simple:
The same division of labor applies to coding agents. Claude Code, Codex CLI, or OpenCode can consume an OpenAPI spec and build a small social-research tool without learning every platform's page structure.
FxBluesky is not just a different logo on the same redirect. It has its own API base and operations for posts, profiles, threads, conversations, media, likes, search, trends, followers, and following.
The interesting part is the attempt to make provider responses similar enough for multi-network applications. A developer should still preserve provider-specific fields, but a shared core can make a multi-source tool much easier to maintain.
That is the beginning of a broader product category:
Social content normalization: one application-facing model over several incompatible social sources.
The public FAQ still presents X/Twitter and Bluesky as the supported embed sources. That is the safe description of the product users can rely on today.
However, the deployment documentation reveals a broader engineering direction. Its configuration supports a TikTok provider realm, and the credentials guide documents Instagram and Threads proxy behavior, including authenticated routes that are unavailable on logged-out surfaces.
The right conclusion is not that every provider has identical public-service coverage. It is that FxEmbed's architecture is becoming more provider-oriented and more capable of supporting a wider social layer.
This distinction matters because support can exist at several levels:
Only the fourth level should be treated as a broad product promise.
FxEmbed's workload is a good match for edge computing. Most requests are short-lived HTTP reads: inspect a URL, obtain upstream data, normalize it, and return metadata, JSON, XML, or a redirect.
At the time of our review, the main repository used:
The request path looks roughly like this:
Client, crawler, bot, or agent
↓
Cloudflare Worker
↓
Provider-specific retrieval
↓
Normalization and routing
↓
┌─────────┬──────────┬───────────┬──────────────┐
│ Embed │ JSON API │ RSS/Atom │ Direct media │
└─────────┴──────────┴───────────┴──────────────┘A single codebase can route different domains to different provider realms and can change behavior based on subdomain, path, query, or user agent. That is an elegant fit for Workers' global HTTP execution model.
FxEmbed is released under the MIT License. When checked on August 31, 2026, its public GitHub repository had roughly 5,000 stars, 210 forks, and more than 4,000 commits.
The self-hosting guide recommends Cloudflare Workers and uses a conventional workflow:
git clone https://github.com/FxEmbed/FxEmbed.git
cd FxEmbed
npm install
cp wrangler.example.toml wrangler.toml
cp .env.example .env
npm run deployAn optional branding.json can customize zones with a name, domain list, provider, favicon, redirect, colors, and activity icons. This makes private domains and white-label instances possible.
But “easy to deploy” should not be confused with “maintenance free.” A serious deployment may also need credential rotation, monitoring, upstream failure handling, and careful secret storage.
FxEmbed's privacy FAQ says the public service avoids collecting unnecessary data. It reports runtime errors, limited information needed to diagnose account-proxy failures, and anonymous operational analytics. It says it does not collect who posted or clicked a link and does not sell the data.
The service also removes X tracking parameters such as ?s= and &t= from links.
For people who do not want clicks to return to X directly, FxEmbed also documents custom redirects to alternative frontends. A self-hosted instance can control the bare-domain and click-through destinations in its branding configuration.
Privacy still needs to be evaluated in context. FxEmbed is an intermediary: the service receives the URL request, and the underlying social platform remains the original data source. Organizations with strict data-handling requirements should self-host or review the public service's current policy before routing sensitive internal workflows through it.
FxEmbed's edge code can be lightweight while its data access remains operationally difficult.
Potential failure modes include:
The self-hosting documentation makes this trade-off visible. Some higher-coverage routes rely on authenticated account credentials. The Instagram guidance, for example, warns that sessions are not permanent and recommends using accounts that operators are willing to lose.
So the operational reality is:
The Worker is easy to deploy. Reliable access to changing social platforms can be hard to maintain.
That also means FxEmbed should not automatically be treated as a contractual replacement for an official platform API. It is an excellent open-source compatibility layer, but production teams should design fallbacks, caching, observability, and provider-specific failure handling.
FxTwitter and vxTwitter are different projects despite their similar names and URL-replacement workflows.
Common FxEmbed domains include:
fxtwitter.com
fixupx.com
fxbsky.appCommon vxTwitter domains include:
vxtwitter.com
fixvx.comFxEmbed's current differentiators include its broader URL-modifier system, native multi-image handling, quoted media, translation support, external media, gallery and direct-media modes, Telegram Instant View, RSS/Atom feeds, and a more extensive public API.
The best choice can still depend on the client and the type of post. The important point is not to assume the two domain families are aliases for the same service.
FxEmbed demonstrates a strong infrastructure pattern: do not recreate the content; make difficult content easier for software to consume.
The human interface is tiny:
x.com → fixupx.comThe utility behind it is much larger:
Human → better link preview
Developer → normalized JSON
Automation→ RSS or Atom
Bot → direct media
AI agent → structured social context
Operator → open-source self-hostingThat pattern points toward a broader category: social data infrastructure for agents. A future service could normalize X, Bluesky, Reddit, Threads, TikTok, YouTube, and other networks behind one agent-friendly schema, with provenance, permissions, caching, and consistent error semantics.
Traditional social-media APIs are usually organized around each platform. An agent-first product would instead be organized around jobs:
FxEmbed does not provide every part of that future system, but it shows how much value can come from a small, composable compatibility layer.
No. It is an independent open-source project that retrieves and transforms public social content for better embeds, feeds, and APIs.
FixupX is one public service powered by the FxEmbed project. It handles x.com-style links. FxTwitter handles twitter.com-style links, and FxBluesky handles Bluesky links.
No. Changing the domain in the shared link is usually enough because Discord's own crawler requests the FxEmbed URL.
Yes. FxTwitter and FxBluesky expose versioned public API endpoints, and current OpenAPI specifications are available for v2.
Yes. It exposes RSS and Atom profile feeds, including media-only variants, with optional query parameters.
Yes. The project is MIT-licensed and provides a Cloudflare Workers deployment guide. Full coverage may require provider credentials and ongoing maintenance.
It can be useful in production, but reliability is constrained by upstream platforms and unofficial or authenticated access paths. Use caching, monitoring, fallbacks, and explicit error handling rather than assuming official-API availability guarantees.
FxEmbed began with an unusually effective interface: change a few characters in a social URL and get a better embed.
Its current value is broader. The same project can serve humans, chat clients, bots, feed readers, applications, and AI agents through different representations of the same post.
The most accurate 2026 definition is:
FxEmbed is an open-source social media embed, normalization, and data-delivery layer.
That makes it worth studying not only as a Discord utility, but as a compact example of modern agent-ready infrastructure: a small interface, several composable outputs, and a difficult upstream integration hidden behind a simpler contract.
Last verified: August 31, 2026. Public services, rate limits, provider access, and upstream behavior can change.
More articles connected to the same themes, protocols, and tools.



Browse entries that are adjacent to the topics covered in this article.