Active on Facebook + Instagram

Look first.Stay unseen.

Open a story, read a message, start typing a reply — Instagram, Facebook and Messenger report all three back to the other person. Stay Unseen holds those signals inside your browser, before they are sent. Six blocking switches, a counter for everything it stopped, and no server anywhere in the picture.

  • 3sites covered
  • 6independent switches
  • 0servers involved
  • 1popup, no settings page
The Stay Unseen popup: a status line reading Active on Facebook + Instagram, 847 blocked in total with the last block 2 minutes ago, three counters for story views, read receipts and typing indicators, and seven switches grouped under Instagram, Facebook & Messenger and Display.
The whole extension: one panel, seven switches, nothing to configure.

Three signals

What actually gets held back

Each one is a separate request the site makes on your behalf, and each has its own switch. Turn one off and that site behaves normally again, immediately.

Story and reel views

The write that puts your name in the viewer list is dropped. The story still opens and still plays. Your name just never arrives.

Instagram storiesFacebook stories

Message read receipts

Read your DMs without their message flipping to “Seen”. The mark-as-read call never leaves — and replying still works normally, because a message you chose to send is not a receipt.

Instagram DMsFacebookMessenger

Typing indicators

Write, rewrite and delete a reply without the bubbling dots appearing on their screen. These go out over websockets as often as plain requests, so both paths are covered.

Instagram typingMessenger typing

The difference

What the other person sees

Your side of the app does not change at all. Theirs stops filling in.

Normally extension off

  • Your name appears in their story viewer list
  • Their message turns to “Seen 14:02”
  • Typing dots appear the moment you start
  • The unread dot clears the second you open the thread

With Stay Unseen extension on

  • The viewer list never lists you
  • Their message stays delivered, not seen
  • No typing dots, however long you spend on the reply
  • Optionally the unread dot stays for you too, so you can find it again

Interactive

Flip the switches yourself

Both demos are live. Flip a switch and the other person's side empties out or fills back in — exactly like the real extension.

Read receipts & typing

On: the receipt stays Delivered and the typing dots never reach them. Off: it behaves like a stock browser.

Story views

On: your view never arrives — not your name, not the time, and the count stays one lower. Off: watching reports you like everyone else.

Mechanism

Two layers, because one is not enough

Some signals go out as ordinary POSTs a network rule can cancel outright. Others are GraphQL calls and websocket frames that share an address with the traffic making the site work. So Stay Unseen works at both levels.

Layer 01

The network rules

A fixed list of endpoint patterns, shipped inside the extension and handed to the browser's own blocker — declarativeNetRequest on Chrome and Edge, blocking webRequest on Firefox. Scoped to instagram.com, facebook.com and messenger.com, and never fetched from anywhere.

Layer 02

The page patch

At document_start, before the site's own code runs, Stay Unseen wraps fetch, XMLHttpRequest and WebSocket.send. Outgoing bodies are matched in memory against a fixed pattern list; seen, read and typing writes are dropped and everything else passes through untouched.

Layer 03

Honest counting

Opening one story can trip half a dozen suppressions across both layers. The counter folds signals for the same feature arriving within 1500 ms into one block, so the number tracks what you did rather than the site's internal retries.

Privacy

There is nowhere for your data to go

Stay Unseen has no server. Not an unused one, not a disabled one — there is no backend in the project. Everything it knows lives in your browser's local extension storage, and uninstalling it deletes all of it.

  • No account, email or sign-in. Install it and it works.
  • No analytics or telemetry. Nothing is counted anywhere but on your own machine.
  • No remote code. Every script and every blocking pattern is inside the package you download.
  • No browsing history. It can only run on instagram.com, facebook.com and messenger.com, and has no access at all to any other site.
  • Your messages are never stored. Bodies are inspected in memory to make the block-or-allow decision, then forgotten.
  • Nothing is sold or shared, because nothing is collected.
Kept on your device
StoredWhy
Seven on/off settingsSo your switches survive a restart
A blocked count per featurePowers the counters and the toolbar badge
A capped log of recent decisions, message text removedSo a signal that stops being blocked can be diagnosed
Why it reads request bodies at all

On Instagram and Messenger, a read receipt and an ordinary message go to the same address. Telling them apart means looking at the body. Before anything is written to the local log, the fields holding text you typed are replaced with <user_text> — which is also what stops a message containing the word “typing” from being mistaken for a typing signal and dropped.

Full detail in the privacy policy.

Limitations

What it cannot do

Worth reading before you install, so none of it surprises you later.

Install

Running in about a minute

Version 1.1.0, published to each browser's own store and built against its own manifest. Pick yours, add it, and it starts working on the next page load.

  1. Open the listing for your browser. The Chrome one also works in Brave, Vivaldi and Opera.
  2. Add it, then confirm the permission prompt — instagram.com, facebook.com and messenger.com, and nothing else.
  3. Pin the icon so the counters and switches are one click away. Chrome and Edge hide new extensions behind the puzzle-piece button.
  4. Reload any Instagram, Facebook or Messenger tab you already had open. The page patch installs at document start, so tabs opened before the install are not protected until they reload.
  5. Click the icon. Everything starts switched on, and the status line names what is being protected right now.

Updates arrive through the store automatically. Every switch is on by default; Reset counters at the bottom of the popup clears the numbers without changing what is blocked.

Changelog

What's new in 1.1.0

Version 1.1.0 rebuilt the chat experience end to end. The short version:

New

  • Fresh new popup design with live counters for everything blocked.
  • Status now shows where you're protected: “Active on Facebook”, “Active on Instagram”, or both.
  • Rate Stay Unseen link that opens your store's review page.

Fixed

  • Chats now load reliably on Facebook and Messenger — no more “Couldn't load chats” errors.
  • Group chat messages no longer get stuck on “Sending”.
  • Opening a group chat no longer marks it as read for others — unread badges stay for group and personal chats alike.
  • Instagram: sender names stay bold after you read a DM, and the unread marker appears right away without reloading the page.