wayBetter for X

(FOSS) Free & open source · GPL-3.0

X, extended.

The live x.com in a light desktop window: tabs, split panes, every account side by side, fourteen themes, ten plugins, a draft vault with history, and fixes for the bugs X ships. Anyone can make a theme or a plugin for it.

Windows now · macOS and Linux later · updates install silently

14built-in themes
10bundled plugins
9fixes for X's bugs
36tweaks

Tour Everything in it

Built for people who live in their timeline.

Everything a heavy X user wished the official app shipped with, on the real x.com. Twelve stops; each one is a real feature you can switch on today.

01

Tabs and split panes.

Open profiles, searches and threads in their own tabs, and put any two side by side. Drag a tab, or any link, to the edge of a pane to split it.

  • Split right Ctrl \, split down Ctrl Shift \
  • New tab Ctrl T with shortcuts, recently closed tabs and "Open as" an account
  • Pinned tabs, and your tabs and split layout restored on launch
  • Drop a link on a pane edge, a tab strip or the window: split, tab or new tab
  • One navigation in split view: side-by-side panes of the same account keep X's left rail only once

02

Every account, side by side.

Each account lives in its own profile with its own session, so all of them stay signed in at once. You log in to x.com itself, the normal way.

  • Accounts are read from X's own account button, never typed in
  • A colored badge on every tab's icon says which account it is
  • Rename and color accounts; see how many tabs each one has open
  • "New tab as" any account from the palette or the new-tab page

04

Everything is one keystroke away.

The command palette Ctrl K finds any open tab, account, setting or X page. Every tab has an address bar that names where you are.

  • Search X straight from the palette or the address bar
  • X's search operators (from:, since:, filter:media, min_faves:…) as chips, in the address bar and under X's own search box
  • Jump to X settings pages like muted words or blocked accounts; you finish the change on X

05

Fourteen themes. Every one a full redesign.

A theme is more than colors: fonts, corners, avatar shape, column width, density, cards, backgrounds, hover effects and even a CRT overlay. Contrast is enforced for every theme, built-in or imported, so text stays readable. Pick one, then change any part of it.

HomePost
For youFollowing
wayBetter@CRTkafa · 2m

Same timeline, fourteen ways. Pick one, then make your own.

1248♥ 101
playfishies@playfishies · 9m

Themes are JSON. Import, export, share.

Night Ink

What a theme can change

  • colorspage, background, surfaces, border, text, muted, accent, buttons
  • fontUI and post-text stacks, size, weights, tracking, leading
  • shapecard and button corners; circle, rounded or square avatars
  • layoutcolumn and sidebar width, density, cards, frame
  • backgroundglow gradients, six patterns, or your own photo with dimming
  • effectsmotion, hover tint / lift / glow, shadows, CRT
  • cssfree-form CSS, appended last

Import (file, drop or paste) and Export in the Appearance panel. Save any customized look as your own theme. Custom CSS for X applies after the theme, like BetterDiscord's.

06

Ten plugins in the box. Room for yours.

Every bundled plugin ships switched off; turn on the ones you want in Settings. None of them sends a request or acts on your account. Edit or delete them freely: an update never overwrites a plugin you changed.

Read

Thread Reader

A "Read thread" button unrolls the author's thread into a clean reading view, with copy as Markdown.

Exact Timestamps

"5h" becomes "5h · Sep 27, 2026, 14:03", in your local time.

Reading Time

"3 min read" on long posts and X Articles.

Clean

Muted Regex

Hide posts by regular expression on text, name or @handle, locally. Alt Shift M edits the list.

Clean Links

t.co links point straight at their destination, tracking parameters stripped.

User Notes

Private notes on accounts, under the bio and in hover cards. Never sent anywhere.

Write

Copy as Markdown

A copy button on every post: a Markdown quote with images, author, date and link.

Alt-text Reminder

A nudge when images in the composer have no description. Never blocks sending.

Move

Keyboard Plus

On the post focused with j/k: c copy link, v open media, a author, q quoted post.

Media Grid Focus

A profile's Media tab fills the window: no right column, tighter gaps.

07

X's bugs, fixed on your machine.

wayBetter for X runs on top of the real x.com and patches the frontend bugs that ship with it. Every fix is a switch in Settings, on by default. None of them clicks, posts or follows for you: they only make your own actions land.

Likes that match the server

Click like a few times fast and X's screen can end in the wrong state: here it showed not liked, 2 likes, while X's server had liked, 3. A quick like and unlike can also leave the count one too high until you refresh. wayBetter sends your likes, reposts, bookmarks and follows one at a time, so the heart, the count and the server all end where your last click did.

X on its ownwayBetter for X

  • Follow buttons that settle right

    Follow and unfollow go out one at a time, so the button ends on what you last clicked, not on a stale answer.

  • Keep your place on Back

    Going back, or switching timeline tabs, returns to the post you were reading instead of the top.

  • No timeline jumps

    The post you are reading stays still when X inserts new posts or media above it.

  • "See new posts" without the jump

    The new posts land above the one you are reading instead of throwing you to the top. Works with . too.

  • Keep your Home tab

    Picked Following or a list? When X switches back to "For you" by itself, it switches back.

  • Following in time order

    The Following tab always shows the newest posts first, even when X switched it to "Popular".

  • Retry failed media uploads

    A failed video or image chunk is sent again, up to 3 times. If it still fails, you're told, instead of the post failing silently.

  • Restore unsent text

    Lost a reply to a reload, a closed composer or a navigation? The composer offers to put your saved draft back.

  • Clear a seen notification badge

    A count you already saw on Notifications stays hidden until it changes. Cosmetic; nothing is marked read.

08

A draft vault that never loses a word.

What you type into X's composer is captured into a local vault with its full revision history. It says "Saved" only after the write is committed on your disk.

  • A Drafts button in X's composer puts a saved draft back; it never posts for you
  • Every revision kept: compare any two and restore one
  • Search, archive and export as JSON
  • Edits never silently overwrite each other: a conflict keeps both

09

Thirty-six tweaks. Your X, your rules.

Hide what you never asked for, bring back what you miss. Every switch applies live, in every tab.

Branding 3

  • wayBetter for X logo
  • Classic Twitter bird
  • "Tweet" and "Retweet" wording

Timeline 4

  • Hide promoted posts
  • Default to Following
  • Hide the "For you" tab
  • Full-width timeline

Sidebar 9

  • Hide Trends
  • Hide Who to follow
  • Hide Live on X
  • Hide Today's News
  • Hide Premium upsells
  • Hide Explore trends
  • Hide Relevant people
  • Hide Who to follow on profiles
  • Hide the whole sidebar

Navigation 5

  • Hide Premium
  • Hide Chat
  • Hide Communities
  • Hide Grok
  • One navigation in split view

Posts 12

  • Hide Grok in posts
  • Hide view counts
  • Hide engagement counts
  • Hide bookmark button
  • No bold/italic in posts
  • Media download button
  • Drafts button in the composer
  • Search operator chips
  • Replies sorted by Recent
  • Full numbers (1,234 not 1.2K)
  • Hide verified badges
  • Hide Subscribe buttons

Video 3

  • Remember video volume
  • Disable autoplay
  • Stop videos at the end

10

Keyword alerts and a media panel.

Get a desktop notification when a keyword you care about shows up in posts X has already loaded for you. Nothing extra is fetched, and nothing leaves your machine.

  • Keyword alerts as local notifications, deduplicated and rate limited
  • Media panel Ctrl Shift G: the newest images from folders you pick, ready to attach
  • Optional clipboard history for images and text (off by default, stays on your device)
  • Save photos, videos and GIFs from posts in original quality

11

Updates you never have to think about.

Updates are signed and install silently, so a fix for something X broke lands without another installer. When a new version is ready, a chip in the titlebar offers a restart, and your tabs come back.

  • Signed updates, checked before they install
  • A light native window on the system WebView, not another browser bundle
  • Windows today; macOS and Linux later

12

The real x.com. Nothing in between.

You sign in to x.com itself in a standard web view. Your traffic is not proxied through anyone's server, and wayBetter never posts, follows, deletes or sends DMs on its own.

  • No analytics, no telemetry on what you read, post or click
  • Drafts, notes, settings and plugins stay on your machine
  • Plugins you install run inside X with page access, like BetterDiscord plugins; install code you trust

Make Your own

Anyone can make themes and plugins.

A theme is one JSON file: import it in Appearance. A plugin is one JavaScript file: drop it into the plugins folder and switch it on. No store, no review queue, no account. Share the file and anyone can use it.

deep-sea.theme.json
{
  "name": "Deep Sea",
  "author": "@you",
  "mode": "dark",
  "colors": { "bg": "#06141b", "text": "#e6f4f1", "accent": "#2ee6c5" },
  "font": { "family": ["Geist"], "scale": 1.02 },
  "shape": { "radius": 14, "button": 9999, "avatar": "rounded" },
  "layout": { "density": "compact", "cards": true },
  "background": { "kind": "pattern", "pattern": "grid",
                  "ink": "#2ee6c5", "opacity": 0.08, "size": 28 },
  "effects": { "hover": "glow" }
}
copy-quote.plugin.js
/**
 * @name Copy Quote
 * @description y on a focused post copies "@handle: text".
 * @version 1.0.0
 * @author @you
 */
module.exports = class CopyQuote {
  start() {
    const api = window.BetterTwttr.api;
    this.scope = api.scope();
    this.scope.onKey((event, post) => {
      if (event.key !== 'y' || !post) return;
      const t = api.tweet(post);
      if (t) api.copyText(`@${t.handle}: ${t.text}`)
        .then(() => api.toast('Copied'));
    });
  }
  stop() { this.scope.dispose(); }
};

Plugin helper API

  • storage(ns)
  • observe(sel, fn)
  • onRouteChange(fn)
  • onKey(fn)
  • tweet(el)
  • copyText(s)
  • toast(msg)
  • injectCSS(id, css)
  • waitFor(sel)
  • scope()
build a whole app

npm i waybetter

the framework behind this appzero dependenciesGPL-3.0-or-later

X was first. Build the next one.

YouTube, Kick, Twitch, Discord: any app with a web version could get this same window. None is announced; each is waiting for an adapter.

See what's next

YouTube, Kick, Twitch and Discord are trademarks of their respective owners. wayBetter is not affiliated with any of them.

FOSS Free and open source

No paid tier. No ads. Every line public.

  1. i.

    Free

    Completely free. No paid tier, no ads, no upsell.

  2. ii.

    Open

    GPL-3.0-or-later. The app and the framework are public source on git.crt.fyi.

  3. iii.

    Private

    No analytics, no telemetry on what you read or post.

  4. iv.

    Yours

    Fork it, theme it, write plugins. The license keeps it open.

FAQ Frequently asked

Questions, answered.

Is it safe?

wayBetter for X loads the real x.com in a standard web view and only patches the frontend. It doesn't proxy your traffic through a third-party server or collect your data. Plugins you add yourself run with access to the page, so install only code you trust.

Is it free?

Yes. wayBetter for X is completely free, with no paid tier, ads, or upsells.

Is it open source?

Yes, licensed under GPL-3.0. The full source is on git.crt.fyi, and the framework it is built on is waybetter on npm.

Does it use the real x.com?

Yes. You sign in to x.com exactly as you would in a browser; wayBetter just gives that page a better shell and fixes its frontend bugs.

Will it ever post, like or follow for me?

No. It never posts, follows, deletes or sends messages by itself. The fixes only make sure your own clicks land the way you meant them.

Can I make my own theme or plugin?

Yes. Themes are JSON files you import in the Appearance panel; plugins are *.plugin.js files you drop into the plugins folder. See Make your own.

What about macOS and Linux?

Windows is available now. macOS and Linux come later.

Does it collect my data?

No. There is no analytics or telemetry collecting what you post, read, or click.