If you've tried publish.x.com and ended up with nothing but an anchor tag that says "Posts by [username]" — or realized it can't embed hashtag feeds at all — you're not alone. Reddit threads are full of people saying the same thing: "Oh boy this thing is driving me nuts... all articles give information on how to make an iframe... and all of it fails."
This guide covers both methods with real screenshots: the native publish.x.com approach (and exactly where it breaks), and the third-party widget method using CollectSocials that actually delivers a working, customizable X feed on your website.

How to Embed an X (Twitter) Feed on Your Website
- Go to CollectSocials and create a new feed from the Organize dashboard.
- Click "Add Source" and select X/Twitter from the platform list.
- Connect your X account via OAuth 2.0, then choose "My Tweets" (timeline) or "Hashtag."
- Moderate your posts on the Collect page — pin, reject, or filter before anything goes live.
- Pick a layout in the Design Studio (14 options: Carousel, Masonry, Timeline, etc.) and customize colors, fonts, and card styles.
- Click "Get Code," paste the embed snippet into your site's HTML, and test on mobile.
That's it — no API keys, no developer account, no broken widget.js scripts. The full walkthrough with screenshots is below, along with my teardown of why the native publish.x.com method fails for everything except single-post embeds.
Why X (Twitter) Feeds Still Matter in 2026
Despite name changes and shifting API policies, X remains the real-time information network. An embedded X feed signals that your brand is active right now — not last quarter. It works for thought leadership (showcasing industry commentary), live event coverage (real-time event social walls), and even customer support transparency (showing public response times on help pages). No other platform delivers this kind of immediacy as an embed.
sync
What this shows
The animation shows how posts from your X (Twitter) timeline automatically sync to an embedded widget on your website. Your real-time commentary, industry takes, and company updates appear on your site without manual copying — keeping it current with zero extra publishing effort.
The Twitter-to-X Rebrand: What Changed for Embeds
When Twitter rebranded to X in 2023, URLs shifted from twitter.com to x.com, breaking cached embeds. The API migrated from v1.1 to v2, tightening authentication and introducing tiered rate limits (Free, Basic, Pro, Enterprise). Customization options like data-border-color and data-link-color were deprecated, and the grid-style collections layout was removed entirely. The practical impact: if your embed was built for the Twitter era, it's likely broken or degraded. Re-generate using x.com URLs and expect fewer native styling options.
Twitter vs X embed differences
This before-and-after animation compares the old Twitter embed appearance with the current X-branded version. URL structures changed from twitter.com to x.com, customization options like border and link colors were removed, and the visual identity shifted — all of which affect how you implement and style embedded feeds today.
X Feed Types You Can Actually Embed
Of the feed types X supports as a platform, two can be reliably embedded on a website using third-party tools. The others (List feeds, search-result feeds) require custom API builds and aren't supported by any mainstream widget tool.
User Timeline (Profile Feed)
Displays all public posts from a specific X account in chronological order. This is the most common implementation — your company's X timeline embedded on your website. Works well on homepages, about pages, and blog sidebars.
Hashtag Feed
Aggregates posts from anyone using a specific hashtag. Perfect for live event social walls, product launches, branded campaigns, and UGC aggregation.
Important: Native X embeds via publish.x.com cannot embed hashtag feeds (as I'll demonstrate below). You need a third-party tool for this.
I Tried Embedding an X Feed with publish.x.com — Here's What Happened
Let's start with the official method. When you go to publish.x.com, it asks "What would you like to embed?" and suggests you can enter:
- A post URL (e.g., https://x.com/SpaceX/status/1732824684683784516)
- A profile URL (e.g., https://x.com/SpaceX)
- A handle (e.g., @XDevelopers)
- A hashtag (e.g., #WhatsHappening)
Sounds great on paper. I tried all four options. Here's what actually happened.
Single Post Embed — This One Works
I entered a SpaceX post URL and it gave me two display options: Embedded Video and Embedded Post. The preview showed a clean, well-formatted tweet with the post text, image, engagement counts, and a "Read 2.5K replies" link. I copied the embed code, pasted it into my site, and it rendered correctly.

Verdict: Single post embeds work. If all you need is to embed one specific tweet on a page, publish.x.com handles it fine.
Profile URL Embed — Broken
I entered https://x.com/SpaceX and chose "Embedded Timeline" from the display options. Instead of showing an actual feed preview, it generated a simple anchor tag. The preview? Just the text "Posts by SpaceX" — nothing more. And here's the real problem: clicking that link takes you to https://s.com/SpaceX, which is a broken URL. Not x.com — just s.com.

I copied the embed code anyway and pasted it into my site. The result was exactly what the preview showed — just text. No timeline, no feed, no tweets. Just "Posts by SpaceX" as a clickable link to a broken URL.
Handle Embed (@XDevelopers) — Same Problem
I tried entering @XDevelopers (the handle X themselves suggest as an example) and chose "Embedded Timeline." Same result: the preview showed "Posts by XDevelopers" as plain text, and the generated link pointed to https://s.com/XDevelopers — broken again.

Hashtag Embed (#WhatsHappening) — No Feed Option at All
Here's where it gets worse. I entered #WhatsHappening and publish.x.com didn't even offer an "Embedded Timeline" option. Instead, it generated a button that says "Post #WhatsHappening" — which just prompts people to post with that hashtag. There is no way to embed a hashtag feed using native X tools.

Why Native X Embeds Fall Short
My testing confirmed what thousands of frustrated developers and site owners have been experiencing. Here's a summary of why the native approach fails:
No hashtag feed support. As I showed above, publish.x.com cannot embed hashtag feeds — period. This is a dealbreaker for events, campaigns, and user-generated content aggregation.
Timeline embeds render as broken text. Profile and handle embeds generate anchor tags with broken s.com URLs instead of actual live feeds. The widget.js script that's supposed to convert these into rendered timelines frequently fails to load.
Zero customization. No layout options (grid, carousel, masonry — nothing). Limited color control. The data-border-color and data-link-color parameters were deprecated. You get what X gives you.
No moderation. Whatever posts appear on your timeline, they appear on your site. No way to pin, hide, or filter posts. No keyword blacklists. No manual approval.
Framework conflicts. Native X embed scripts conflict with modern frontend frameworks and Shadow DOM encapsulation. Developers on GitHub have had to build custom wrappers just to get the basic embed rendering.
Caching and loading issues. The embedded timeline frequently fails to load, shows blank space, or displays stale cached content — especially on responsive mobile viewports.
Protected accounts break silently. If the account you're embedding switches to protected (private) posts, the native embed goes blank with no error message and no fallback. Your visitors see an empty space where content used to be, and you won't know unless you check manually.
How to Actually Embed an X Feed on Your Website (CollectSocials)
After publish.x.com let me down, I used CollectSocials to embed my X feed — and it worked on the first try. No API keys to generate, no developer account to create, no widget.js scripts to debug. Connect your account, pick a layout, paste one embed snippet. Here's the complete process with screenshots.
Step 1: Create a New Feed
After signing up, you land on the Organize dashboard. Click "Create New Feed" to set up your X feed. You can have multiple feeds — one for your company timeline, another for a hashtag campaign, etc.

Step 2: Select X/Twitter as Your Source
Click "Add Source" and you'll see the platform chooser. Select X/Twitter from the available platforms. CollectSocials also supports YouTube, Google Reviews, TikTok, Facebook, Tumblr, RSS feeds, and Vimeo — with Instagram, LinkedIn, and Pinterest launching soon.

Step 3: Connect Your X Account
Click "Connect X" to authenticate via OAuth 2.0. CollectSocials never stores your password — it uses a secure token that you can revoke anytime from your X settings.
You get two import options: My Tweets (pull your own timeline) or Hashtag (collect tweets from any public hashtag). This is a major advantage over publish.x.com, which can't do hashtag feeds at all.

Step 4: Moderate and Curate Your Posts
Once connected, your tweets are pulled into the Collect page. This is where CollectSocials solves one of the biggest problems with embedded feeds: moderation. You can pin posts you want featured, reject posts you don't want shown, and filter by source or network.

Step 5: Design Your Widget in Design Studio
Move to the Design Studio and choose from 14 layout options: Carousel, List, Mosaic, Slider, Tetris, Coverflow, Panel, Stagger, Masonry, Bento, Timeline, Magazine, Conveyor, and Marquee. Each layout has themes and template variants. You can also customize post card styles — whether the image appears above or below the text, spacing, borders, and more.

Designing for text-heavy content
The animation cycles through layout and theme combinations suited to X's text-focused format. Unlike image-driven Instagram feeds, X widgets need readable typography, proper line spacing, and layouts that make short-form text posts scannable at a glance.
Step 6: Preview and Get Your Embed Code
Click "Preview" to see exactly how your feed will look on your website. You can toggle between desktop, tablet, and mobile views, and even open an external preview link. When you're satisfied, click "Get Code" to grab the embed snippet.

Paste the embed code into your website's HTML — I cover the exact steps for WordPress, Shopify, and Webflow in the platform-specific section below.
The setup process
This animation walks through the steps to go from an X account to a live embedded feed: connect your account via OAuth, select your feed type (timeline or hashtag), configure moderation rules, and paste the generated embed code into your site.
X/Twitter Pricing on CollectSocials
One thing worth mentioning: X changed their API policies and now charges for account connections and every single tweet fetched. This means most social media aggregation platforms charge premium prices for X feeds — many lock X access behind their highest-priced tiers, sometimes $50/month or more.
CollectSocials offers X/Twitter feeds in the Pro plan at $20/month (X is not available on trial or free plans due to API costs). Your feed auto-syncs on a schedule — no manual updates needed. Here's what each plan includes:
- Pro ($20/mo): Auto-syncs every 24 hours, 1 X source, up to 15000 page views per month.
- Business ($47/mo): Auto-syncs every 12 hours, 2 X sources, unlimited page views per month
A note on "live": These are auto-updating feeds, not real-time streams. Your widget pulls new posts at regular intervals — you never have to manually refresh or re-embed. For most business use cases (brand presence, thought leadership, ongoing campaigns), this is more than sufficient. For true real-time needs like live event walls, assign someone to monitor the Collect page during the event and manually approve incoming posts as they arrive.
Watch the Full Tutorial
Native X Embed vs CollectSocials: Quick Comparison
| Feature | Native X Embed (publish.x.com) | CollectSocials |
|---|---|---|
| Cost | Free | From $20/month (Pro) |
| Single post embed | Works | Works |
| Profile timeline embed | Broken (renders as text only) | Works with live auto-updating feed |
| Hashtag feed | Not supported | Full hashtag tracking and embedding |
| Layout options | 1 (basic timeline) | 14 layouts (Grid, Carousel, Masonry, Timeline, etc.) |
| Customization | Minimal (height, width, light/dark) | Full (colors, fonts, themes, card styles, spacing) |
| Moderation | None | Pin, reject, keyword filters, manual approval |
| Auto-refresh | Unreliable | Automatic — syncs new posts every 12–24 hours (no manual updates) |
| Mobile responsive | Inconsistent | Fully responsive with device preview |
| Multi-platform | X only | X, YouTube, Google Reviews, TikTok, Facebook, and more |
| Shadow DOM isolation | No (CSS conflicts possible) | Yes (prevents style leaks) |
How to Embed an X Feed on WordPress, Webflow, and Shopify
Once you have your embed code from CollectSocials (or any widget tool), the final step is pasting it into your platform. Here's exactly where the code goes on the three most popular website builders.
WordPress (Gutenberg Editor)
- Open the page or post where you want the X feed.
- Click the + block inserter and search for "Custom HTML."
- Add a Custom HTML block and paste your embed code into it.
- Click "Preview" in the block toolbar to verify it renders, then publish.


Shopify (Online Store 2.0)
- Go to Online Store > Themes > Customize in your Shopify admin.
- Navigate to the page where you want the feed and click Add section.
- Select Custom Liquid and paste your embed code into the Liquid field.
- Position the section where you want it, then save.


Webflow
- Open your Webflow project in the Designer.
- Drag an Embed element (under Components) onto your canvas where you want the feed.
- Paste your embed code into the code field and close the editor.
- Publish your site to see the live widget on your staging or production domain.

Other Platforms and Custom API
The embed code works on any platform that supports custom HTML/JavaScript — Wix (HTML iframe element), Squarespace (Code Block), HubSpot (Custom Module), and static HTML sites. For full API control, you can build a custom feed using the X API v2, but expect developer resources, ongoing maintenance, and API costs.
How to Embed an X Hashtag Feed on Your Website
This is one of the most searched-for topics — and one where native X tools completely fail. As I demonstrated above, publish.x.com does not support hashtag feed embedding. It only generates a "Post" button. So how do you actually embed a live hashtag feed?
Why Hashtag Feeds Need a Third-Party Tool
Native X tools primarily support user profile timelines, not live, auto-updating hashtag feeds. The X API technically supports searching by hashtag, but building a custom solution requires developer resources and significant API costs. Third-party aggregation tools like CollectSocials handle the API complexity for you and provide a ready-to-embed widget.
Embedding a Hashtag Feed with CollectSocials
The process is almost identical to the timeline embed I walked through above. The only difference is in Step 3: instead of selecting "My Tweets," you select "Hashtag" and enter the hashtag you want to track (e.g., #YourBrand). CollectSocials will then pull in public posts using that hashtag.
Moderation is non-negotiable for hashtag feeds. Public hashtags attract spam, off-topic content, and occasionally inappropriate posts. Always enable the moderation workflow on the Collect page — review each post before it goes live on your website. Use keyword filters and manual approval for maximum control.
Strategic Placement: Where X Feeds Work Best
X feeds serve different purposes than Instagram or YouTube embeds. The content is text-heavy, often time-sensitive, and focused on conversation. This affects placement.
Choosing the right placement
This animation maps out where X feeds work on different page types. A homepage sidebar suits brand presence, blog pages benefit from real-time commentary, event pages need prominent hashtag walls, and support pages can show public response times — each placement serves a distinct visitor intent.
Homepage (below the fold, sidebar): An X feed showing recent company posts works well near the bottom of a homepage or in a sidebar. Keep it compact — 3-5 recent posts maximum.
Blog and resources section (sidebar): A sidebar X feed on blog pages keeps content feeling current and can surface related real-time commentary.
About page (featured): Employee X feeds or company culture posts humanize your brand. A curated timeline showing posts from team members gives visitors a sense of who you are beyond corporate copy.
Events and conferences (prominent display): Live event hashtag feeds belong front and center on event pages or physical displays. See our social media wall for events guide.
Support pages (transparency): Embed your customer support X timeline on help pages to showcase response times and public accountability.
Landing pages (almost never): X feeds distract from singular conversion goals. If your landing page drives one specific action, adding an X feed gives visitors somewhere else to look and hurts conversion rate.
X Feed Moderation: What You Can't Ignore
Unlike Instagram where most embedded content is visual and relatively safe, X content is text-based, conversational, and sometimes controversial. Moderation isn't optional.
Why Moderation Matters More for X
Reply culture: X posts often include replies that can be negative or inappropriate. Embedding a timeline means potentially displaying those replies unless you filter them.
Hashtag hijacking: Hashtag feeds are especially vulnerable. Public hashtags get used by spammers, trolls, and unrelated conversations. An unmoderated hashtag feed on a business website will eventually display something you don't want.
Political and controversial content: Even if your brand stays neutral, a search feed or hashtag feed can surface politically charged content unless you actively filter it.
Moderation Strategies
Keyword blacklists: Automatically hide posts containing specific words. Build a comprehensive list of profanity, competitor names, and off-brand terms.
Manual approval: For hashtag or search feeds, enable manual approval so every post requires review before appearing on your website. Labor-intensive but provides maximum control.
Engagement thresholds: Only show posts with minimum engagement (5+ likes, 2+ retweets). Filters out spam automatically.
Hide replies and retweets: Show only original posts, not replies or retweets. Reduces clutter and risk.
Combining X with Other Platforms
For B2B companies and thought leaders, combining X feeds with LinkedIn feeds creates a powerful multi-platform presence. X shows real-time commentary; LinkedIn shows professional credibility. A unified social media wall combining both demonstrates different dimensions of expertise.
CollectSocials supports combining X with YouTube, Google Reviews, TikTok, Facebook, Tumblr, RSS, and Vimeo feeds in a single widget — so you can create a comprehensive social proof wall from multiple platforms.
Performance Considerations
X feeds are text-heavy rather than media-heavy, which means they're generally lighter than Instagram or YouTube embeds. But real-time updates and frequent refreshes can still impact performance.
Caching: Widget tools cache X content for a few minutes before refreshing. Caching intervals of 5-15 minutes balance freshness with performance.
Lazy loading: Load the widget only when it's about to enter the viewport. Good widget tools handle this automatically via Intersection Observer.
Limiting post count: Show 10-20 recent posts with a "Load More" option. Loading 100+ posts at once slows rendering.
Common Mistakes and How to Avoid Them
Mistake 1: No moderation on hashtag feeds. Public hashtags attract spam. Always set up keyword filters and manual approval for hashtag-based feeds.
Mistake 2: Using old twitter.com URLs. After the rebrand, embeds with cached twitter.com URLs can break. Use current x.com URLs when generating embed codes.
Mistake 3: Relying on native embeds for anything beyond single posts. As I demonstrated, publish.x.com timeline embeds produce broken output. Use a third-party tool for profile feeds and hashtag feeds.
Mistake 4: Ignoring dark mode. If your website offers dark mode, your X feed widget should too. Mismatched light/dark modes look unprofessional.
Mistake 5: Set it and forget it. X content cycles fast. Review your feed monthly to ensure it still represents your current brand and messaging.
Final Thoughts
Embedding an X feed on your website should be straightforward, but X's native tools make it harder than it needs to be. publish.x.com works for single post embeds — that's it. For timeline feeds, hashtag feeds, or anything that requires customization and moderation, you need a third-party solution.
I use CollectSocials because it handles the X API complexity, gives me full control over which posts appear, offers 14 different layout options, and works reliably across all devices — all starting at $20/month on the Pro plan.
Done correctly, an embedded X feed becomes a genuine asset: fresh content that updates automatically, social proof that builds confidence, and a live connection between your website and your social presence.
Start Using CollectSocials Today
The social media aggregator built for performance and simplicity — pull from 10+ platforms without sacrificing page speed.
Frequently Asked Questions
How do I embed a Twitter feed on my website?
You have two options. The native method uses publish.x.com — enter your profile URL, copy the embed code, and paste it into your HTML. However, this method often produces broken output (just a text link instead of a live feed). The more reliable method is using a third-party widget tool like CollectSocials: connect your X account, choose your feed type, customize the design, and paste the generated embed code on your site.
Can you embed a Twitter hashtag feed on a website?
Not with native X tools. publish.x.com does not support hashtag feed embedding — it only generates a "Post" button when you enter a hashtag. To embed a live hashtag feed, you need a third-party aggregation tool that uses the X API to track and display posts from a specific hashtag with moderation controls.
Why is my Twitter embed not working?
The most common reasons: (1) You're using an old twitter.com URL instead of x.com, (2) The widget.js script failed to load and convert the embed code into a rendered feed, (3) Your CMS or framework is blocking the external script, or (4) X's embed service is experiencing issues — which happens frequently. If your embed just shows text like "Posts by [username]," the native embed failed to render and you should consider a third-party widget instead.
What is the best Twitter feed widget for a website?
It depends on your needs. For a free single-post embed, publish.x.com works fine. For a live, customizable feed with moderation, layout options, and hashtag support, you need a third-party widget tool. CollectSocials offers X feeds from $20/month with 14 layouts and full moderation. Most alternatives lock X access behind significantly higher-priced tiers due to API costs.
Is publish.x.com free to use?
Yes, publish.x.com is free. However, its functionality is extremely limited — single post embeds work, but profile timeline embeds often produce broken output, and hashtag feed embedding isn't supported at all. For a working feed widget with customization and moderation, you'll need a paid third-party tool.
How do I embed a Twitter feed on WordPress?
In the WordPress Gutenberg editor, add a Custom HTML block to any page or post, then paste your widget embed code. If you're using a third-party tool like CollectSocials, the embed snippet is a small HTML/JavaScript tag that renders automatically — no WordPress plugin required. For the Classic Editor, switch to the "Text" tab and paste the code directly.
How do I embed a Twitter feed on Webflow?
Drag an Embed element (under Components) onto your Webflow canvas, paste your widget embed code into the code field, and publish. The widget renders on your staging and production domains without any custom code or Webflow integrations. CollectSocials embeds work inside Webflow's responsive layout system automatically.
How do I embed a Twitter feed on Shopify?
In your Shopify admin, go to Online Store > Themes > Customize. Add a Custom Liquid section to any page template, paste your widget embed code into the Liquid field, and save. The widget renders inline with your store theme. No Shopify app installation needed.