A calmer feed for X.

Tell Lull what you do not want to see, in your own words. A small AI model on your computer reads each post and blurs the ones that match. Your feed never leaves your device.

Free and open source (Apache-2.0). Available in the Chrome Web Store.

Lull is filtering: rage bait, engagement bait, crypto
Maya @maya_bakes · 2h

First sourdough that actually rose. Ten tries. Worth it. 🍞

Hot Takes Daily @hottakes · 1h

If you still use tabs you are a clown and should be fired. Pathetic.

Filtered: Negativity and rage bait Show
Sam Ortiz @samcodes · 1h

Shipped dark mode today. Took longer than planned, but I am happy with it.

Moon Signals @moonsig · 45m

$PEPE2 airdrop is LIVE 🚀 Connect your wallet now, first 1000 get 10x!

Filtered: Crypto shilling Show
Trail Notes @trailnotes · 20m

Fog lifted at the summit right at sunrise. No filter needed.

Filters in plain language

Turn on a built-in filter, or write your own. Lull reads each filter as a yes-or-no question about each post.

Negativity and rage bait Engagement bait Crypto shilling Doomposting Politics Low-effort AI hype Dunking “Posts about layoffs” “Spoilers for the new season”

Private by design

There is no Lull server. There is no account. Lull does not collect analytics.

On-device AI

Lull runs Liquid AI d1-omni-600M with WebGPU. It is a decision model: it gives a probability for each filter, in one step.

Fast

About 50 ms for each post with five filters on an Apple M5 Max. New posts stay blurred until they are checked, so filtered content never flashes.

Works without a GPU

Computers without WebGPU use a smaller zero-shot model on the CPU. Lull selects it automatically.

Blur or hide

Blurred posts show the reason and a Show button. Or hide filtered posts completely.

You set the strictness

One slider sets how sure the model must be. Muted words and an allowlist work too.

Open source

Apache-2.0 code, tests that compare the model with the original Python, and plain documentation.

How it works

Lull has three parts. All of them run in your browser.

  1. Find

    A content script finds each post on x.com and reads its text, quoted post, and image descriptions.

  2. Decide

    The model reads each post with each filter and gives the probability that the post matches.

  3. Calm

    If a probability is above your threshold, Lull blurs or hides the post. Errors show the post, never hide it.

Get Lull for Chrome

Install Lull from the Chrome Web Store. On the welcome page, click Download and start. Then open x.com and sign in.

The first use downloads the models (about 251 MB, including text recognition). If X is already open, refresh its tab.

Questions

Does Lull send my feed anywhere?

No. The model runs in your browser. Lull downloads models from Hugging Face. When "Check images" is on, it also downloads post images from X to read their text. It does not upload post content.

Which computers work?

Desktop Chrome. A Mac with Apple silicon gives the best speed. Other computers with WebGPU also work, and computers without WebGPU use the smaller CPU model.

What if a post is filtered by mistake?

Click Show to see it. Move the strictness slider, or make the filter description more specific.

What is the license?

The code uses Apache-2.0. The d1 model has its own license (LFM Open License v1.0), which is free for organizations with less than USD 10 million annual revenue.